Switch to vitepress
This commit is contained in:
parent
b4a8bc028d
commit
5f3fa5df31
732 changed files with 716 additions and 56975 deletions
4
.gitignore
vendored
4
.gitignore
vendored
|
@ -1,2 +1,2 @@
|
|||
_site/
|
||||
.jekyll-cache/
|
||||
node_modules
|
||||
site/.vitepress/dist
|
||||
|
|
19
.gitmodules
vendored
19
.gitmodules
vendored
|
@ -1,25 +1,22 @@
|
|||
[submodule "assets/toweroffense-assets/Tower-Offense"]
|
||||
path = assets/toweroffense-assets/Tower-Offense
|
||||
url = https://github.com/thepaperpilot/Tower-Offense
|
||||
[submodule "assets/slime-assets/Slime-Chargers"]
|
||||
path = assets/slime-assets/Slime-Chargers
|
||||
url = https://github.com/thepaperpilot/Slime-Chargers
|
||||
[submodule "gamedevtree"]
|
||||
path = gamedevtree
|
||||
path = site/public/gamedevtree
|
||||
url = https://github.com/thepaperpilot/The-Modding-Tree.git
|
||||
branch = gamedevtree
|
||||
[submodule "kronos"]
|
||||
path = kronos
|
||||
path = site/public/kronos
|
||||
url = https://github.com/thepaperpilot/The-Modding-Tree.git
|
||||
branch = kronos
|
||||
[submodule "lit"]
|
||||
path = lit
|
||||
path = site/public/lit
|
||||
url = https://github.com/thepaperpilot/The-Modding-Tree.git
|
||||
branch = lit
|
||||
[submodule "the_ascension_tree"]
|
||||
path = the_ascension_tree
|
||||
path = site/public/the_ascension_tree
|
||||
url = https://github.com/thepaperpilot/the_ascension_tree
|
||||
[submodule "guide-to-incrementals"]
|
||||
path = Guide-to-Incrementals
|
||||
path = site/guide-to-incrementals
|
||||
url = https://github.com/thepaperpilot/Guide-to-Incrementals
|
||||
[submodule "dream"]
|
||||
path = site/public/dream
|
||||
url = https://github.com/thepaperpilot/Dream-Hero
|
||||
branch = gh-pages
|
||||
|
|
|
@ -1,228 +0,0 @@
|
|||
html {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
background-color: #2a323d;
|
||||
color: white;
|
||||
font-weight: normal;
|
||||
line-height: 1.5;
|
||||
}
|
||||
|
||||
#title {
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
section {
|
||||
width: 95%;
|
||||
max-width: 1200px;
|
||||
margin: auto;
|
||||
background-color: #242a33;
|
||||
box-shadow: 2px 2px 3px #222;
|
||||
border-radius: 2px;
|
||||
padding: 10px;
|
||||
margin-bottom: 20px;
|
||||
}
|
||||
|
||||
section img {
|
||||
margin: auto;
|
||||
display: block;
|
||||
}
|
||||
|
||||
section table {
|
||||
margin: auto;
|
||||
min-width: 50%;
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
section button {
|
||||
margin: 10px;
|
||||
background: none;
|
||||
outline: none;
|
||||
border: solid 1px grey;
|
||||
color: white;
|
||||
cursor: pointer;
|
||||
transition: background .2s;
|
||||
border-radius: 10px;
|
||||
padding: 4px 8px;
|
||||
font-size: large;
|
||||
transition: .2s;
|
||||
}
|
||||
|
||||
section button:hover {
|
||||
background: #2a323d;
|
||||
}
|
||||
|
||||
section .field {
|
||||
display: flex;
|
||||
margin: 8px 0;
|
||||
border-bottom: solid 2px #2a323d;
|
||||
padding-bottom: 8px;
|
||||
}
|
||||
|
||||
section .field > * {
|
||||
flex-basis: 50%;
|
||||
}
|
||||
|
||||
section .field > :first-child {
|
||||
flex-shrink: 1;
|
||||
}
|
||||
|
||||
#footer {
|
||||
font-size: .8em;
|
||||
width: 95%;
|
||||
max-width: 1200px;
|
||||
margin: auto;
|
||||
margin-top: 20px;
|
||||
padding-bottom: 10px;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
#footer .link {
|
||||
color: #ffab40;
|
||||
}
|
||||
|
||||
input {
|
||||
background: none;
|
||||
border: none;
|
||||
border-bottom: solid 1px grey;
|
||||
transition: border .2s;
|
||||
color: white;
|
||||
font-size: medium;
|
||||
min-width: 0;
|
||||
}
|
||||
|
||||
input:focus {
|
||||
border-bottom-color: white;
|
||||
outline: none;
|
||||
}
|
||||
|
||||
input:invalid {
|
||||
color: red;
|
||||
}
|
||||
|
||||
input[type=color] {
|
||||
padding: 0;
|
||||
border-bottom: none;
|
||||
}
|
||||
|
||||
input[type=checkbox],
|
||||
input[type=radio] {
|
||||
display: none;
|
||||
}
|
||||
|
||||
input[type=checkbox] + label,
|
||||
input[type=radio] + label {
|
||||
display: block;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
input[type=radio] + label:not(:last-child) {
|
||||
margin-bottom: 8px;
|
||||
}
|
||||
|
||||
input[type=checkbox] + label:before,
|
||||
input[type=radio] + label:before {
|
||||
border: 1px solid grey;
|
||||
display: inline-block;
|
||||
box-sizing: border-box;
|
||||
width: 24px;
|
||||
height: 24px;
|
||||
vertical-align: bottom;
|
||||
color: transparent;
|
||||
transition: .2s;
|
||||
text-align: center;
|
||||
margin-right: 8px;
|
||||
}
|
||||
|
||||
input[type=checkbox] + label:before {
|
||||
content: "\2714";
|
||||
border-radius: 3px;
|
||||
}
|
||||
|
||||
input[type=radio] + label:before {
|
||||
content: "\25CF";
|
||||
border-radius: 50%;
|
||||
font-size: smaller;
|
||||
}
|
||||
|
||||
input[type=checkbox] + label:active:before,
|
||||
input[type=radio] + label:active:before,
|
||||
button:active {
|
||||
transform: translateY(-10px);
|
||||
border-color: white;
|
||||
}
|
||||
|
||||
input[type=checkbox]:checked + label:before,
|
||||
input[type=radio]:checked + label:before {
|
||||
background-color: #2a323d;
|
||||
color: #fff;
|
||||
}
|
||||
|
||||
#reset {
|
||||
border-bottom: none;
|
||||
text-transform: uppercase;
|
||||
border-radius: 10px;
|
||||
padding: 4px 8px;
|
||||
cursor: pointer;
|
||||
border: solid 2px red;
|
||||
transition: background .2s;
|
||||
}
|
||||
|
||||
#reset:hover {
|
||||
background: red;
|
||||
}
|
||||
|
||||
.button-row {
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.instruction {
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
/*
|
||||
* Fun fact: every selector using a #id selector was originally written using
|
||||
* other types of selectors, apart from this one.
|
||||
* I usually try to avoid using IDs altogether - even in Javascript I usually
|
||||
* use React, so I don't even use IDs there - but had to add a bunch here to
|
||||
* meet the requirements :/
|
||||
*/
|
||||
.instruction + #target {
|
||||
box-shadow: 2px 2px 3px #222;
|
||||
margin: 10px auto;
|
||||
}
|
||||
|
||||
@keyframes rotate {
|
||||
from {
|
||||
transform: rotateZ(0);
|
||||
}
|
||||
to {
|
||||
transform: rotateZ(360deg);
|
||||
}
|
||||
}
|
||||
|
||||
@keyframes popout {
|
||||
0% {
|
||||
box-shadow: 0 0 red, 0 0 red, 0 0 red, 0 0 red, 0 0 red, 0 0 red, 0 0 red, 0 0 red;
|
||||
transform: translateX(0) translateY(0);
|
||||
}
|
||||
50% {
|
||||
box-shadow: 1px -1px red, 2px -2px red, 3px -3px red, 4px -4px red, 5px -5px red, 6px -6px red, 7px -7px red, 8px -8px red;
|
||||
transform: translateX(-8px) translateY(8px);
|
||||
}
|
||||
100% {
|
||||
box-shadow: 0 0 red, 0 0 red, 0 0 red, 0 0 red, 0 0 red, 0 0 red, 0 0 red, 0 0 red;
|
||||
transform: translateX(0) translateY(0);
|
||||
}
|
||||
}
|
||||
|
||||
@keyframes jump {
|
||||
0% {
|
||||
transform: translateY(0);
|
||||
}
|
||||
50% {
|
||||
transform: translateY(-20px);
|
||||
}
|
||||
100% {
|
||||
transform: translateY(0);
|
||||
}
|
||||
}
|
|
@ -1,180 +0,0 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
|
||||
<head>
|
||||
<title>Home</title>
|
||||
|
||||
<link rel="stylesheet" type="text/css" href="./firststyle.css">
|
||||
|
||||
<meta charset="utf-8">
|
||||
<meta name="keywords" content="anthony lawn,portfolio,school, cs 6314,programming,html,css,javascript,web programming languages">
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
|
||||
<header>
|
||||
<h1 id="title">Anthony Lawn</h1>
|
||||
</header>
|
||||
|
||||
<section>
|
||||
<h2>My Interests</h2>
|
||||
<p>I'd make this image larger using width: 100%, but imagemap doesn't work with percentage-based coordinates and you'd have to use javascript to make it work... or just use absolutely positioned anchor tags. </p>
|
||||
<img src="./interests.png" alt="My Interests" orgWidth="400" orgHeight="300" usemap="#interests" />
|
||||
<map name="interests">
|
||||
<area shape="poly" coords="77,13,129,48,130,104,78,141,21,105,21,49" href="https://en.wikipedia.org/wiki/Dungeons_%26_Dragons" alt="Dungeons & Dragons" title="Dungeons & Dragons" />
|
||||
<area shape="circle" coords="327,72,60" href="https://en.wikipedia.org/wiki/React_(web_framework)" alt="React JS" title="React JS" />
|
||||
<area shape="rect" coords="12,169,133,288" href="https://en.wikipedia.org/wiki/Video_game_development" alt="Game Development" title="Game Development" />
|
||||
<area shape="rect" coords="207,170,387,287" href="https://en.wikipedia.org/wiki/Digital_art" alt="Digital Art" title="Digital Art" />
|
||||
</map>
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<h2>My Education</h2>
|
||||
<ul>
|
||||
<li>BS in Computer Science at University of Texas at Dallas</li>
|
||||
</ul>
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<h2>Expertise</h2>
|
||||
<ol>
|
||||
<li>
|
||||
Javascript
|
||||
<ul>
|
||||
<li>React JS</li>
|
||||
<li>Electron</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li>
|
||||
C#
|
||||
<ul>
|
||||
<li>Unity</li>
|
||||
</ul>
|
||||
</li>
|
||||
</ol>
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<h2>Courses</h2>
|
||||
<p>These are the courses I have taken or am taking on my path to getting a MS in Computer Science (Computer Interaction track) at the University of Texas at Dallas.</p>
|
||||
<table>
|
||||
<tr>
|
||||
<th>Course Name</th>
|
||||
<th>Semester</th>
|
||||
<th>Year</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Human Computer Interactions</td>
|
||||
<td>Fall</td>
|
||||
<td>2018</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Design & Analysis - Computer Algorithms</td>
|
||||
<td>Fall</td>
|
||||
<td>2018</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Special Topics: Computer Science</td>
|
||||
<td>Spring</td>
|
||||
<td>2019</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Modeling & Simulation</td>
|
||||
<td>Spring</td>
|
||||
<td>2019</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Computer Graphics</td>
|
||||
<td>Spring</td>
|
||||
<td>2019</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Web Programming Languages</td>
|
||||
<td>Fall</td>
|
||||
<td>2019</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Computer Animation & Gaming</td>
|
||||
<td>Fall</td>
|
||||
<td>2019</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Virtual Reality</td>
|
||||
<td>Fall</td>
|
||||
<td>2019</td>
|
||||
</tr>
|
||||
</table>
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<h2>Contact Me</h2>
|
||||
<form>
|
||||
<div class="field">
|
||||
<span>Name:</span>
|
||||
<input type="text" placeholder="John Doe" required />
|
||||
</div>
|
||||
<div class="field">
|
||||
<span>Email:</span>
|
||||
<input type="email" placeholder="example@example.com" required />
|
||||
</div>
|
||||
<div class="field">
|
||||
<span>Phone Number:</span>
|
||||
<input type="tel" placeholder="(123) 456-7890" pattern="([0-9]{3}|\([0-9]{3}\))[ -]?[0-9]{3}[ -]?[0-9]{4}" />
|
||||
</div>
|
||||
<div class="field">
|
||||
<span>What color should your contact message be?</span>
|
||||
<input type="color" />
|
||||
</div>
|
||||
<div class="field">
|
||||
<span>Have you heard of Babble Buds?</span>
|
||||
<input type="checkbox" id="babble" />
|
||||
<label for="babble" />
|
||||
</div>
|
||||
<div class="field">
|
||||
<span>What are you contacting me about?</span>
|
||||
<div class="radio-container">
|
||||
<input id="reason-1" type="radio" name="reason" value="job" required />
|
||||
<label for="reason-1">Job Offer</label>
|
||||
<input id="reason-2" type="radio" name="reason" value="help" />
|
||||
<label for="reason-2">Help with something I made</label>
|
||||
<input id="reason-3" type="radio" name="reason" value="solicitation" />
|
||||
<label for="reason-3">Solicitation</label>
|
||||
<input id="reason-4" type="radio" name="reason" value="other" checked />
|
||||
<label for="reason-4">Other</label>
|
||||
</div>
|
||||
</div>
|
||||
<input id="reset" type="reset" />
|
||||
</form>
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<h2>Javascript Show-Off</h2>
|
||||
<p>This is the part where I use Javascript (even though most of this could be done with CSS)!</p>
|
||||
<p class="instruction">Hover over the image to activate the mouse enter/leave events:</p>
|
||||
<p class="instruction">Press 'F' to play a sequence of fade animations:</p>
|
||||
<p class="instruction">Press 'A' down to play a sequence of non-fade animations:</p>
|
||||
<img id="target" class="target" src="https://i.kym-cdn.com/photos/images/newsfeed/001/439/882/4f7.png" alt="This is how lil kids look when they cough" title="its a meme you dip" />
|
||||
<div class="button-row">
|
||||
<p class="instruction">Click to toggle Visibility:</p>
|
||||
<button id="hide-button">Hide</button>
|
||||
<button id="show-button">Show</button>
|
||||
<button id="toggle-button">Toggle Visibility</button>
|
||||
</div>
|
||||
<div class="button-row">
|
||||
<p class="instruction">Double Click to change opacity:</p>
|
||||
<button id="fadein-button">Fade In</button>
|
||||
<button id="fadeout-button">Fade Out</button>
|
||||
<button id="fadeto-button">50% Opacity</button>
|
||||
<button id="toggle-fade-button">Toggle Opacity</button>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<footer id="footer">
|
||||
<span>Psst... I made </span><a class="link" href="http://thepaperpilot.org/toweroffense/">this game</a><span> with some friends. I did all the HTML, CSS, and Javascript coding (although I did use the pixi.js library instead of rendering directly to a canvas)</span>
|
||||
</footer>
|
||||
|
||||
<script type="text/javascript" src="./school.js"></script>
|
||||
</body>
|
||||
|
||||
</html>
|
Binary file not shown.
Before Width: | Height: | Size: 43 KiB |
|
@ -1,68 +0,0 @@
|
|||
table {
|
||||
width: 100%;
|
||||
border: solid 1px black;
|
||||
text-align: left;
|
||||
border-collapse: collapse;
|
||||
}
|
||||
|
||||
td, th {
|
||||
border: solid 1px black;
|
||||
padding: 8px;
|
||||
}
|
||||
|
||||
tr:nth-child(2) {
|
||||
background-color: lightgray;
|
||||
}
|
||||
|
||||
td:nth-child(2) {
|
||||
width: 70%;
|
||||
}
|
||||
|
||||
#example-1 .yellow {
|
||||
text-decoration: underline;
|
||||
margin: auto;
|
||||
}
|
||||
|
||||
.container {
|
||||
border: solid 2px black;
|
||||
width: 50%;
|
||||
margin: auto;
|
||||
padding: 8px;
|
||||
}
|
||||
|
||||
.container span, .container div:not(.inner-container) {
|
||||
border: solid 2px black;
|
||||
padding: 8px;
|
||||
}
|
||||
|
||||
.dashed {
|
||||
border: dashed 2px black;
|
||||
}
|
||||
|
||||
.yellow {
|
||||
background-color: yellow;
|
||||
width: 50%
|
||||
}
|
||||
|
||||
.inner-container {
|
||||
width: 75%;
|
||||
}
|
||||
|
||||
.inner-container span {
|
||||
display: inline-block;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
.inner-container .yellow {
|
||||
width: 75%;
|
||||
}
|
||||
|
||||
.inner-container .no-left-padding {
|
||||
padding-left: 0;
|
||||
width: 25%;
|
||||
border-left: none;
|
||||
}
|
||||
|
||||
.middle {
|
||||
margin-left: 25%;
|
||||
}
|
|
@ -1,56 +0,0 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
|
||||
<head>
|
||||
<title>Problem 2</title>
|
||||
|
||||
<link rel="stylesheet" type="text/css" href="./problem-2.css">
|
||||
|
||||
<meta charset="utf-8">
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
|
||||
<table>
|
||||
<tr>
|
||||
<th>Example HTML/CSS Structure</th>
|
||||
<th>Structure</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Example 1</td>
|
||||
<td id="example-1">
|
||||
<div class="container">
|
||||
HTML 1
|
||||
<div class="yellow">
|
||||
2 2
|
||||
</div>
|
||||
</div>
|
||||
<span class="dashed">
|
||||
3 3 3
|
||||
</span>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Example 2</td>
|
||||
<td id="example-2">
|
||||
<div class="container">
|
||||
<div class="inner-container">
|
||||
<span class="yellow">
|
||||
4 4 4 4
|
||||
</span><!--
|
||||
Comment to avoid adding an extra space here
|
||||
--><span class="no-left-padding">
|
||||
5 5 5 5 5
|
||||
</span>
|
||||
<div class="middle">
|
||||
6 6 6 6 6 6
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</body>
|
||||
|
||||
</html>
|
|
@ -1,95 +0,0 @@
|
|||
var target = document.getElementById('target')
|
||||
|
||||
/* Changing Visibility */
|
||||
function hide() {
|
||||
target.style.visibility = 'hidden'
|
||||
}
|
||||
document.getElementById('hide-button').addEventListener('click', hide)
|
||||
function show() {
|
||||
target.style.visibility = ''
|
||||
}
|
||||
document.getElementById('show-button').addEventListener('click', show)
|
||||
function toggleVisibility() {
|
||||
if (target.style.visibility)
|
||||
target.style.visibility = ''
|
||||
else
|
||||
target.style.visibility = 'hidden'
|
||||
}
|
||||
document.getElementById('toggle-button').addEventListener('click', toggleVisibility)
|
||||
|
||||
/* Fading in and out */
|
||||
var faded = false
|
||||
var current = 1
|
||||
function fadeTo(opacity) {
|
||||
function fade() {
|
||||
faded = opacity === 0
|
||||
var animation = target.animate([{
|
||||
opacity: current
|
||||
}, {
|
||||
opacity: opacity
|
||||
}], {
|
||||
duration: 1000,
|
||||
fill: 'both'
|
||||
})
|
||||
current = opacity
|
||||
return animation
|
||||
}
|
||||
|
||||
return fade
|
||||
}
|
||||
function fadeToggle() {
|
||||
if (faded)
|
||||
fadeTo(1)()
|
||||
else
|
||||
fadeTo(0)()
|
||||
}
|
||||
document.getElementById('fadein-button').addEventListener('dblclick', fadeTo(1))
|
||||
document.getElementById('fadeout-button').addEventListener('dblclick', fadeTo(0))
|
||||
document.getElementById('fadeto-button').addEventListener('dblclick', fadeTo(.5))
|
||||
document.getElementById('toggle-fade-button').addEventListener('dblclick', fadeToggle)
|
||||
|
||||
/* "Animate CSS" */
|
||||
function doneAlert() {
|
||||
// Aaaaaah!
|
||||
alert('Done!')
|
||||
}
|
||||
function mouseEnter() {
|
||||
target.style.animation = 'rotate 1s'
|
||||
setTimeout(doneAlert, 1000)
|
||||
}
|
||||
target.addEventListener('mouseenter', mouseEnter)
|
||||
function mouseLeave() {
|
||||
target.style.animation = ''
|
||||
}
|
||||
target.addEventListener('mouseleave', mouseLeave)
|
||||
|
||||
/* Chained Events */
|
||||
function chainFading(e) {
|
||||
var char = e.which || e.keyCode
|
||||
if (char !== 65 && char !== 97)
|
||||
return
|
||||
|
||||
function third() {
|
||||
fadeTo(.5)()
|
||||
}
|
||||
function second() {
|
||||
fadeTo(1)().onfinish = third
|
||||
}
|
||||
fadeTo(0)().onfinish = second
|
||||
}
|
||||
window.addEventListener('keypress', chainFading)
|
||||
function chainAnimate(e) {
|
||||
if (e.keyCode !== 70)
|
||||
return
|
||||
|
||||
function third() {
|
||||
target.style.animation = 'popout 1s'
|
||||
}
|
||||
function second() {
|
||||
target.style.animation = 'jump 1s'
|
||||
setTimeout(third, 1000)
|
||||
}
|
||||
target.style.animation = 'rotate 1s'
|
||||
setTimeout(second, 1000)
|
||||
}
|
||||
window.addEventListener('keydown', chainAnimate)
|
|
@ -1 +0,0 @@
|
|||
Subproject commit 27df182e9492e503a85256aab4de3a8aa2bd7c14
|
|
@ -1,8 +0,0 @@
|
|||
name: The Paper Pilot
|
||||
markdown: kramdown
|
||||
kramdown:
|
||||
input: GFM
|
||||
parse_block_html: true
|
||||
permalink: /:title/
|
||||
collections:
|
||||
content:
|
|
@ -1,5 +0,0 @@
|
|||
---
|
||||
layout: default
|
||||
title: Babble Buds Screenshot
|
||||
---
|
||||
![](/assets/babble-assets/screenshot.png)
|
|
@ -1,5 +0,0 @@
|
|||
---
|
||||
layout: default
|
||||
title: Babble MM Screenshot
|
||||
---
|
||||
![](/assets/babble-assets/babblemm screenshot.png)
|
|
@ -1,9 +0,0 @@
|
|||
---
|
||||
layout: default
|
||||
title: Babble Buds
|
||||
---
|
||||
Babble buds is a free, open source virtual puppet show software. It is heavily based on the non-public software called "Puppet Pals", used in URealms Live. The software is written in javascript using React, a rendering library called PIXI.js, and electron.
|
||||
|
||||
Users can create puppets with different faces for different emotions, and then use the puppet on a stage where you and other users can each make your respective puppets move, change emotions, and "babble" at each other. The stage has a green screen feature and can be popped out, which gives the users tons of possibilities in terms of using the program for a role playing live stream, faux video chatting with friends, game development, or whatever else you want!
|
||||
|
||||
Users can connect to the public server and create private rooms so that they and their friends can see each others puppets and use the software however they please. For the security conscious, you can also use the server's source code to self host your own private server.
|
|
@ -1,7 +0,0 @@
|
|||
---
|
||||
layout: default
|
||||
title: Engine
|
||||
---
|
||||
### Engine
|
||||
|
||||
The engine originally made to make the Babble Buds program was separated out into its own engine called [babble.js](https://github.com/thepaperpilot/babble.js), so that projects created in Babble Buds can be used in other projects. For example, a game can create puppets in Babble Buds and then use them for cutscenes or player agency inside of the game. Additionally, it has been ported to C# (called [babble.cs](https://github.com/thepaperpilot/babble.cs)) for use with Unity, for the same kinds of purposes. You can check out [Tower Offense](/toweroffense) for a pixi.js game using Babble Buds puppets for the cutscenes, or [Dice Armor](/dicearmor) for a unity game using Babble Buds puppets for the cutscenes.
|
|
@ -1,7 +0,0 @@
|
|||
---
|
||||
layout: default
|
||||
title: Movie Maker
|
||||
---
|
||||
### Babble Movie Maker
|
||||
|
||||
Babble Movie Maker is a cutscene editor for Babble Buds puppets. You open a babble buds project in it, and you can add actors to a stage and have them move and change expressions, etc., on a timeline. You can then use the cutscene in a game using babble.js or babble.cs, or export the cutscene into a video file. There is even support for defining custom commands with custom fields, so that if you've extended on the default actions provided in babble.js or babble.cs, you can still use Movie Maker to create your cutscenes.
|
|
@ -1,5 +0,0 @@
|
|||
---
|
||||
layout: default
|
||||
title: Birb Summary
|
||||
---
|
||||
A small Kinect project based off Fru made for my Computer Graphics Assignment. Use your silhouette to affect the world and solve puzzles.
|
|
@ -1,5 +0,0 @@
|
|||
---
|
||||
layout: default
|
||||
title: Birb Screenshot
|
||||
---
|
||||
![](/assets/birb-assets/birb screenshot.png)
|
|
@ -1,57 +0,0 @@
|
|||
---
|
||||
layout: default
|
||||
title: Black Hat
|
||||
---
|
||||
<style>
|
||||
.centerimages {
|
||||
text-align: center !important;
|
||||
margin: 15px 0 !important;
|
||||
}
|
||||
|
||||
.centerimages img {
|
||||
width: 30% !important;
|
||||
display: inline-block !important;
|
||||
margin: unset !important;
|
||||
}
|
||||
</style>
|
||||
> by Anthony Lawn
|
||||
|
||||
A game about an 80s blackhat hacker for hire who plans and executes feats of social engineering to attack the largest business conglomerates in the world.
|
||||
|
||||
#### Concept
|
||||
|
||||
The player uses their trusty computer to surveil target corporations. With knowledge in hand they proceed to plan an adventure-style mission to infiltrate and attack the corporation and take it down. Missions have no failure state and the outcomes of each mission guide the rest of the game and its story towards one of many endings.
|
||||
|
||||
#### Gameplay
|
||||
|
||||
Use a terminal to get money or perform surveillance on the target organization. With this information you plan missions against the corporation. While still at home you switch between various applications (a terminal, web browser, IRC, and a notepad) the latter of which lists the knowledge you've discovered. The general UI is a computer in the middle, a whiteboard where you make the decisions about the mission on the left, and a door (to actually perform the mission) on the right. As you discover more information more options can become available to you on the whiteboard. Once you lock in your decisions(exit through the door) a cutscene plays, with your chosen options directing the scene and its outcome. The mission will have some amount of success that affects the rest of the missions (and can cause characters to recur or become suspicious or other things). Note that "failing" a mission does NOT end the game, just gives the player a different story than if they had succeeded. The final ending is determined by the success of the last mission, with some potential flavor text determined by extreme success/failure in previous missions. Each ending should feel complete, and conclusive. Indeed, the whole game should have a sense of ambiguity to the point where it isn't even clear what endings are "good" or "bad".
|
||||
|
||||
Coincidentally, a recent indie game named "Orwell" happens to show pretty much exactly the data gathering mechanic I had envisioned. You can look through different web pages, (irc) chat logs, and peoples' filesystems and look for clues to put on your posterboard.
|
||||
|
||||
For example, the first mission would be all about gathering more information about the corporation. You could decide whether to use a rubber ducky or a wifi pineapple, etc. You could choose to just drop the device where someone will/won't find it (depending on the device), or whether to attempt infiltration through social engineering. Maybe one set of options would get a rubber ducky confiscated and plugged into a security terminal, allowing more of the info gathering script to succeed than it would on a normal employee's terminal. These outcomes could make certain characters become suspicious of you, get in trouble with management, etc., and also determine what pieces of information you can use later on for researching the company (e.g. whether you can access their network).
|
||||
|
||||
Certain interactions while researching (such as talking on IRC) may also influence how the missions will go. These are not decisions you make while planning, but rather consequences incurred whilst in the planning stage.
|
||||
|
||||
To give an example of an ending that doesn't feel like a failure while still not being the expected "true" ending (even though no ending will be the "right"/"true" ending) is if the protagonist actually determines the corporation is doing good, and the person who hired you is the real villain.
|
||||
|
||||
#### Aesthetic
|
||||
|
||||
The game will take place in the 80s, with dark or faded colors, especially faded gold. A good reference point would be the [Halt and Catch Fire](https://www.google.com/search?tbm=isch&q=halt+and+catch+fire+scene) or, to a lesser extent, [Mr.Robot](https://www.google.com/search?tbm=isch&q=mr+robot+scene) aesthetic. Try to include references to [1980s hackers](https://en.wikipedia.org/wiki/Timeline_of_computer_security_hacker_history#1980s) or other things that make it feel more authentically 80s.
|
||||
|
||||
<div class="centerimages" markdown="1">
|
||||
![](https://media.giphy.com/media/Hk6sTNtswc2FG/giphy.gif) ![](http://i.imgur.com/dHXP3FO.gif) ![](https://66.media.tumblr.com/b819da38d729abb204bc682e507f7425/tumblr_obdn6lewjZ1u6zv0go4_1280.gif)
|
||||
</div>
|
||||
|
||||
![](http://jamesminchin.com/blog/wp-content/uploads/2014/05/23-garage-3167_RET_AS.jpg)
|
||||
|
||||
![](https://www.rockpapershotgun.com/images/15/aug/05deusex1s.jpg)
|
||||
|
||||
![](https://ksamaarchvis.files.wordpress.com/2015/11/karsikipresentation-4.jpg?w=736)
|
||||
|
||||
The atmosphere is filled with ambiguity and paranoia. Worries about making too big a splash as just a kid. Gets threats from people on IRC, maybe on one day before going to a mission someone comes to his house looking for him, etc.
|
||||
|
||||
#### Protagonist
|
||||
|
||||
The main character is an infamous "hacker for hire", very cynical of the society he's in, and actually likes taking jobs against large companies that are ingrained in society. His name is "Kim Swartz", a reference to Aaron Swartz (but without a gender ambiguous name, which helps with the whole "one person many faces" idea. The character should take inspiration from [Julian Assange](https://en.wikipedia.org/wiki/Julian_Assange), [Aaron Swartz](https://en.wikipedia.org/wiki/Aaron_Swartz), or maybe even [Kim Dotcom](https://en.wikipedia.org/wiki/Kim_Dotcom) (do note I'm not saying those were good people or that this protagonist is either, or implying that any of them were blackhat hackers. Just I think they'd have similar values- pro free speech, transparency, consumer rights, etc.).
|
||||
|
||||
Kim Swartz has high functioning dissociative identity disorder. Specifically, they picture mental switches that they can switch on and off, representing the different personalities they put on to help with social engineering. This can be used as justification for why Kim can't make decisions during the cutscene- once he's flipped the switch, he's on autopilot. During some paths he may become more mentall unstable and less able to control his disorder, and end up finding out things like some "other hackers" he thought were trying to stop him, were actually himself on different accounts. There could be events like the character finding other people on the internet claiming to have done the things he has done, or finding notes he doesn't remember writing (which could also lead him to suspecting carbon monoxide poisoning, leaning into the paranoia motif).
|
|
@ -1,5 +0,0 @@
|
|||
---
|
||||
layout: default
|
||||
title: Black Hat Prototype
|
||||
embed: /assets/blackhat-assets/bh_prototype.html
|
||||
---
|
|
@ -1,5 +0,0 @@
|
|||
---
|
||||
layout: default
|
||||
title: CtC Screenshot
|
||||
---
|
||||
![Screenshot](/assets/citadel-assets/screenshot.png)
|
|
@ -1,7 +0,0 @@
|
|||
---
|
||||
layout: default
|
||||
title: CtC Summary
|
||||
---
|
||||
A 3D VR re-envisioning of a Slay the Spire-style game by Anthony Lawn and Grant Barbee for their VR class in college's final project.
|
||||
|
||||
For more details, visit [Grant's page on the game](https://grantcbarbee.github.io/conquer-the-citadel.html).
|
|
@ -1,7 +0,0 @@
|
|||
---
|
||||
layout: default
|
||||
title: One Click Man
|
||||
---
|
||||
A small game made for the one button jam that explores the idea of being able to defeat any opponent in a single click. Made for the One Button Jam 2016 in under a week.
|
||||
|
||||
Unfortunately it was a busy week and I didn't get much done past the moving camera and 2-D objects in 3-D space. That is to say, the graphics and story didn't get much attention. Sorry.
|
|
@ -1,5 +0,0 @@
|
|||
---
|
||||
layout: default
|
||||
title: Conway
|
||||
---
|
||||
A small game where you must find an initial state in a Conway's Game of Life system that stabilizes to match certain criteria.
|
|
@ -1,5 +0,0 @@
|
|||
---
|
||||
layout: default
|
||||
title: da1-caption
|
||||
---
|
||||
I created the Babble Buds puppet editor and ported the rendering library I wrote for it to C# so it could be used in Unity. Dice Armor has a full campaign using cutscenes made using the Babble Buds cutscene editor, taking advantage of its support for custom commands and fields to control things like talking, giving the player dice and money, starting duels, and controlling player progression through the story.
|
|
@ -1,5 +0,0 @@
|
|||
---
|
||||
layout: default
|
||||
title: da1
|
||||
---
|
||||
![da1](/assets/dicearmor-assets/da1.png)
|
|
@ -1,6 +0,0 @@
|
|||
---
|
||||
layout: default
|
||||
title: da2-caption
|
||||
---
|
||||
Dice Armor is a dice dueling game. Players can use abilities, flip dice, and attack each other to win in a dice game that puts chance into the hands of the players. This is what the dueling scene looks like, with a tutorial cutscene happening on top to guide the player through the basics.
|
||||
Also, all the dice are constructed dynamically, using quaternion math to figure out the placement of each component relative to the face its going on. The die in the middle has one of the player and opponents' portraits on each of its sides.
|
|
@ -1,5 +0,0 @@
|
|||
---
|
||||
layout: default
|
||||
title: da2
|
||||
---
|
||||
![da2](/assets/dicearmor-assets/da2.png)
|
|
@ -1,5 +0,0 @@
|
|||
---
|
||||
layout: default
|
||||
title: da3-caption
|
||||
---
|
||||
The dice rolling uses the physics engine and detects once the dice have stopped moving, then determines which side is face up based on which of the normals is closest to straight up. It flags the die as cocked if that smallest angle is above a threshold. The dice sink into the table when not rolling so as to not interfere with any dice that are rolling.
|
|
@ -1,5 +0,0 @@
|
|||
---
|
||||
layout: default
|
||||
title: da3
|
||||
---
|
||||
![da3](/assets/dicearmor-assets/da3.png)
|
|
@ -1,5 +0,0 @@
|
|||
---
|
||||
layout: default
|
||||
title: da4-caption
|
||||
---
|
||||
There is a generic object dragging manager using delegates to check for valid things to drag, valid things to be dragged to (based on whats being dragged), getting a list of transforms to add the target indicator to, and what to do when the drag ends, on both a valid and invalid target. In this case its being used to drag a die to another die, telling the game to attack with the die.
|
|
@ -1,5 +0,0 @@
|
|||
---
|
||||
layout: default
|
||||
title: da4
|
||||
---
|
||||
![da4](/assets/dicearmor-assets/da4.png)
|
|
@ -1,5 +0,0 @@
|
|||
---
|
||||
layout: default
|
||||
title: da5-caption
|
||||
---
|
||||
In addition to attacking and flipping dice, the player can use abilities that appear on some of the faces of most of the dice. I made an interface for abilities that supports targeted, non-targeted, instant, and lingering effects. Lingering effects can affect any value on the die, and can stack with other lingering effects.
|
|
@ -1,5 +0,0 @@
|
|||
---
|
||||
layout: default
|
||||
title: da5
|
||||
---
|
||||
![da5](/assets/dicearmor-assets/da5.png)
|
|
@ -1,5 +0,0 @@
|
|||
---
|
||||
layout: default
|
||||
title: da6-caption
|
||||
---
|
||||
When a cutscene ends, its final command is to either start a duel or set the next cutscene in the story. In the latter case there is an additional field for what to call the next cutscene, and what location it takes place at. The cutscene is then added to the player's save file, and when they visit the city locations are greyed out until they have at least one action to do there. Each location has a dynamically populated action wheel with custom range of acceptable angles.
|
|
@ -1,5 +0,0 @@
|
|||
---
|
||||
layout: default
|
||||
title: da6
|
||||
---
|
||||
![da6](/assets/dicearmor-assets/da6.png)
|
|
@ -1,5 +0,0 @@
|
|||
---
|
||||
layout: default
|
||||
title: da7-caption
|
||||
---
|
||||
The dice shop is dynamically populated by a list of dice available to the player, which can be changed during cutscenes, and is checked against the dice owned by the player to generate sold out indicators. On the left the player can choose to filter the options down to a single dice effect, which also updates the "Buy All" button to buy only all the dice in the current filter.
|
|
@ -1,5 +0,0 @@
|
|||
---
|
||||
layout: default
|
||||
title: da7
|
||||
---
|
||||
![da7](/assets/dicearmor-assets/da7.png)
|
|
@ -1,5 +0,0 @@
|
|||
---
|
||||
layout: default
|
||||
title: da8-caption
|
||||
---
|
||||
The inventory works most the same as the shop, but for equipping dice. It also allows you to drag individual dice or entire sets to the equipped dice glyph. While dragging it will highlight all the slots the new dice will be equipped into.
|
|
@ -1,5 +0,0 @@
|
|||
---
|
||||
layout: default
|
||||
title: da8
|
||||
---
|
||||
![da8](/assets/dicearmor-assets/da8.png)
|
|
@ -1,5 +0,0 @@
|
|||
---
|
||||
layout: default
|
||||
title: da9-caption
|
||||
---
|
||||
During certain events like winning the game or having the face of a die broken, the players' portraits will flash an emotion for a second. After winning, a random living die from the winning player is chosen to play their "finisher move", a flashy and dramatic effect to end the game. Shown is the arcane mechana's finisher, "Missile Storm".
|
|
@ -1,5 +0,0 @@
|
|||
---
|
||||
layout: default
|
||||
title: da9
|
||||
---
|
||||
![da9](/assets/dicearmor-assets/da9.png)
|
|
@ -1,5 +0,0 @@
|
|||
---
|
||||
layout: default
|
||||
title: editors-caption
|
||||
---
|
||||
Many of the objects I've created, I've made scriptable objects so that game designers can add and modify them easily. Additionally I would create custom inspectors for the objects to help make them as easy to understand and edit as possible. The opponents' artifical intelligence is made up of many strategies, in a prioritized list. When its the opponents' turn they go through each strategy and check if they can be run, and if so then the opponent performs the strategy then starts back over at the top of the list of strategies. The + sign under the list of strategies opens an organized dropdown of all the various strategies.
|
|
@ -1,5 +0,0 @@
|
|||
---
|
||||
layout: default
|
||||
title: editors
|
||||
---
|
||||
![editors](/assets/dicearmor-assets/editors.png)
|
|
@ -1,5 +0,0 @@
|
|||
---
|
||||
layout: default
|
||||
title: simulator-caption
|
||||
---
|
||||
In addition to custom inspector code, I've created new tools for the editor for our game designers to use. This is a duel simulator that will take two opponents and simulate an arbitrary number of duels between them, and output the results and summarize them for you, much much quicker than manually going through the duels, even with an absurdly high timeScale. This will become incredibly useful in making balance changes and testing new dice against existing sets. This is a screenshot of it in edit mode, but in play mode it removes the "Dueling Managers" field and will use whatever the current duel balance settings are, allowing for the GDs to test freely in play mode without worrying about undoing all their changes afterwards.
|
|
@ -1,5 +0,0 @@
|
|||
---
|
||||
layout: default
|
||||
title: simulator
|
||||
---
|
||||
![simulator](/assets/dicearmor-assets/simulator.JPG)
|
|
@ -1,7 +0,0 @@
|
|||
---
|
||||
layout: default
|
||||
title: Dice Armor Summary
|
||||
---
|
||||
Dice Armor is a game that started development as a semester long project by a team of nine: a producer, a creative director, a narrative writer, an artist, two programmers, and 3 game designers. The information here is about my contributions as one the lead programmer over the course of the semester, because I can show off stuff like the editor scripts I wrote. I was doing everything from interface coding, editor scripts, integrating Babble Buds, and of course everything related to the gameplay itself. To date I'm still the lead programmer for the game; for more up to date information on the current state of the game please visit the official site.
|
||||
|
||||
The build available here was created for showing off at the end of the semester, and as such has some buttons present to make the game easier to skip parts of the game in order to see all the contect: You start with all the dice in the game already in the shop, there's a button to give yourself free money to buy these dice with, and in the duel there are buttons to force a win or a loss, which can be used to skip the tutorial (not recommended for first time players).
|
|
@ -1,5 +0,0 @@
|
|||
---
|
||||
layout: default
|
||||
title: Fourth Order Title
|
||||
---
|
||||
![](/assets/fourth-assets/title.png)
|
|
@ -1,7 +0,0 @@
|
|||
---
|
||||
layout: default
|
||||
title: Fourth Order
|
||||
---
|
||||
A game made in under 48 hours for UT Dallas' SGDA Spring 2016 Game Jam! A match-3 RPG, reminiscent of Puzzle Quest.
|
||||
|
||||
That said, due to time constraints there isn't a story nor much RPG elements. Sorry.
|
|
@ -1,5 +0,0 @@
|
|||
---
|
||||
layout: default
|
||||
title: iCan Screenshot 3
|
||||
---
|
||||
![](/assets/ican-assets/screenshot-3.png)
|
|
@ -1,5 +0,0 @@
|
|||
---
|
||||
layout: default
|
||||
title: iCan Screenshot 1
|
||||
---
|
||||
![](/assets/ican-assets/screenshot-1.png)
|
|
@ -1,5 +0,0 @@
|
|||
---
|
||||
layout: default
|
||||
title: iCan Screenshot 1
|
||||
---
|
||||
![](/assets/ican-assets/screenshot-1.png)
|
|
@ -1,7 +0,0 @@
|
|||
---
|
||||
layout: default
|
||||
title: iCan
|
||||
---
|
||||
Made in beautiful material design, this app efficiently and intuitively collects data from users on recycling habits and provides information about the impact they are having, as well as enabling users to directly compare their impacts to the each through social medias.
|
||||
|
||||
Made for HackTX 2015 in under 24 hours!
|
|
@ -1,5 +0,0 @@
|
|||
---
|
||||
layout: default
|
||||
title: Kiosk Picture 1
|
||||
---
|
||||
![](/assets/kiosk-assets/0.jpeg)
|
|
@ -1,5 +0,0 @@
|
|||
---
|
||||
layout: default
|
||||
title: Kiosk Picture 2
|
||||
---
|
||||
![](/assets/kiosk-assets/1.jpeg)
|
|
@ -1,5 +0,0 @@
|
|||
---
|
||||
layout: default
|
||||
title: Kiosk Picture 3
|
||||
---
|
||||
![](/assets/kiosk-assets/2.jpeg)
|
|
@ -1,5 +0,0 @@
|
|||
---
|
||||
layout: default
|
||||
title: Kiosk Picture 4
|
||||
---
|
||||
![](/assets/kiosk-assets/3.jpeg)
|
|
@ -1,5 +0,0 @@
|
|||
---
|
||||
layout: default
|
||||
title: Kiosk Picture 5
|
||||
---
|
||||
![](/assets/kiosk-assets/4.jpeg)
|
|
@ -1,5 +0,0 @@
|
|||
---
|
||||
layout: default
|
||||
title: Kiosk Picture 6
|
||||
---
|
||||
![](/assets/kiosk-assets/5.jpeg)
|
|
@ -1,7 +0,0 @@
|
|||
---
|
||||
layout: default
|
||||
title: Computer Science Kiosk
|
||||
---
|
||||
This is an open source program for a kiosk that will teach students the basics of computer science. It was initiated as a part of Anthony Lawn’s Eagle Scout Project, which was to build such a kiosk to place in the Quail Valley Middle School library.
|
||||
|
||||
The kiosk uses Scratch as a teaching tool for students, and provides resources such as code.org that help interested students pursue Computer Science.
|
|
@ -1,43 +0,0 @@
|
|||
---
|
||||
layout: default
|
||||
nocard: true
|
||||
title: Markov Chains
|
||||
---
|
||||
<div class="section">
|
||||
<link rel="stylesheet" type="text/css" href="/css/markov.css">
|
||||
|
||||
<div class="card buttons">
|
||||
<div class="card-content">
|
||||
<span class="button" onclick="rock();">✊</span>
|
||||
<span class="button" onclick="paper();">✋</span>
|
||||
<span class="button" onclick="scissors();">✌</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="versus" class="card">
|
||||
<div class="card-content">
|
||||
<span class="text">you →</span><span class="button" id="player">✊</span>
|
||||
<span class="text" style="display: inline-block; vertical-align: middle;">VS</span>
|
||||
<span class="button" id="com">✊</span><span class="text">← me</span>
|
||||
<br />
|
||||
<h3 id="result">Computer Wins</h3>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="stats card">
|
||||
<div class="card-content">
|
||||
<span class="card-title">Stats</span>
|
||||
<p>
|
||||
computer wins: <span id="loss">0</span><br />
|
||||
 expected: <span id="loss_expected">0</span><br /><br />
|
||||
player wins: <span id="win">0</span><br />
|
||||
 expected: <span id="win_expected">0</span> <br /><br />
|
||||
ties: <span id="tie">0</span><br />
|
||||
 expected: <span id="tie_expected">0</span><br />
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script src="/js/markov.js" type="text/javascript"></script>
|
||||
|
||||
</div>
|
|
@ -1,5 +0,0 @@
|
|||
---
|
||||
layout: default
|
||||
title: Name Draw
|
||||
---
|
||||
A web app for co-ordinating group gift exchanges allowing for a variety of situations including secret santas or complex rules involving restricting who can give gifts to whom.
|
|
@ -1,5 +0,0 @@
|
|||
---
|
||||
layout: default
|
||||
title: NaN Screenshot 1
|
||||
---
|
||||
![](/assets/nan-assets/screenshot1.png)
|
|
@ -1,5 +0,0 @@
|
|||
---
|
||||
layout: default
|
||||
title: NaN Screenshot 2
|
||||
---
|
||||
![](/assets/nan-assets/screenshot2.png)
|
|
@ -1,5 +0,0 @@
|
|||
---
|
||||
layout: default
|
||||
title: NaN Screenshot 3
|
||||
---
|
||||
![](/assets/nan-assets/screenshot3.png)
|
|
@ -1,9 +0,0 @@
|
|||
---
|
||||
layout: default
|
||||
title: NaN
|
||||
---
|
||||
A game made in 48 hours for the 3rd Annual Chillenium at Texas A&M University. It was made by Anthony Lawn and Grant Barbee. The theme was "foofaraw", which basically means to make a big deal about nothing.
|
||||
|
||||
This is the story of an adventurer named NaN, known across the land for his unwavering enthusiasm for helping anyone with anything. The story follows his fall following a lack of need for adventurers and the resulting menial task performing lifestyle.
|
||||
|
||||
Mechanically, the game is about throwing stuff at other stuff. There's no UI becaue only lame games have those, and there's a lot of organic humor created from various objects having physics properties and being grabbable and such.
|
|
@ -1,7 +0,0 @@
|
|||
---
|
||||
layout: default
|
||||
title: OptiSpeech Demo 1
|
||||
---
|
||||
<iframe width="560" height="315" src="https://www.youtube.com/embed/9uHqIRs7ZjM" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen style="display: block; margin: auto;"></iframe>
|
||||
|
||||
This video shows a talker with WAVE sensors placed on the the tongue hitting a virtual target sphere located at the alveolar ridge. When an alveolar consonant is hit (e.g., /s/, /n/, /d/) the sphere changes color from red to green.
|
|
@ -1,7 +0,0 @@
|
|||
---
|
||||
layout: default
|
||||
title: OptiSpeech Demo 2
|
||||
---
|
||||
<iframe width="560" height="315" src="https://www.youtube.com/embed/Oz42mKvlzqI" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen style="display: block; margin: auto;"></iframe>
|
||||
|
||||
This video shows an American talker learning a novel sound not found in English. When the post-alveolar consonant is hit, the target sphere changes color from red to green. Here, the NDI WAVE system serves as input.
|
|
@ -1,13 +0,0 @@
|
|||
---
|
||||
layout: default
|
||||
title: OptiSpeech 2
|
||||
---
|
||||
The program is being updated by a team in the UT Dallas Speech Production Lab led by Anthony Lawn, so the program uses a more modern version of Unity, has an easier to use interface, can more easily support new features, and can connect to additional EMA systems, namely the Carstens AG501.
|
||||
|
||||
![](/assets/optispeech-assets/new-interface.png)
|
||||
|
||||
In addition, the program now includes documentation and unit tests to improve program stability and maintainability going forward.
|
||||
|
||||
![](/assets/optispeech-assets/documentation.png)
|
||||
|
||||
![](/assets/optispeech-assets/unittests.png)
|
|
@ -1,7 +0,0 @@
|
|||
---
|
||||
layout: default
|
||||
title: OptiSpeech Summary
|
||||
---
|
||||
The Optispeech project involves designing and testing a real-time tongue model that can be viewed in a transparent head while a subject talks — for the purposes of treating speech errors and teaching foreign language sounds. This work has been conducted in partnership with Vulintus and with support from the National Institutes of Health (NIH). The UT Dallas Speech Production Lab is currently updating the program to use updated versions of Unity and adding support for more features and hardware.
|
||||
|
||||
![](/assets/optispeech-assets/system-architecture-600.jpg)
|
|
@ -1,5 +0,0 @@
|
|||
---
|
||||
layout: default
|
||||
title: Digital Drawing 1
|
||||
---
|
||||
![](/assets/portfolio-assets/1.jpeg)
|
|
@ -1,5 +0,0 @@
|
|||
---
|
||||
layout: default
|
||||
title: Digital Drawing 2
|
||||
---
|
||||
![](/assets/portfolio-assets/2.png)
|
|
@ -1,5 +0,0 @@
|
|||
---
|
||||
layout: default
|
||||
title: Digital Drawing 3
|
||||
---
|
||||
![](/assets/portfolio-assets/3.jpeg)
|
|
@ -1,5 +0,0 @@
|
|||
---
|
||||
layout: default
|
||||
title: Digital Drawing 4
|
||||
---
|
||||
![](/assets/portfolio-assets/4.jpeg)
|
|
@ -1,5 +0,0 @@
|
|||
---
|
||||
layout: default
|
||||
title: Digital Drawing 5
|
||||
---
|
||||
![](/assets/portfolio-assets/5.jpeg)
|
|
@ -1,13 +0,0 @@
|
|||
---
|
||||
layout: default
|
||||
title: Red Pen
|
||||
---
|
||||
This is an RPG about a writer who sells their soul to the devil in exchange for extraordinary writing abilities.
|
||||
|
||||
There are 5 chapters planned. This game is currently in development. If you want to spoil yourself you can check out some of the planned plot points at github. It should be noted there are some things planned like some enemies expanding upon the core gameplay mechanic that do not appear in that document. You'll just have to wait and see!
|
||||
|
||||
Much of what else I'd like to say borders on spoiler territory. If you'd like to learn more see the [story.md](https://github.com/thepaperpilot/Red-Pen/blob/master/story.md) document on the github page, or look at [thoughts.md](https://github.com/thepaperpilot/Red-Pen/blob/master/thoughts.md) for what I currently am working on!
|
||||
|
||||
You can follow development in a telegram broadcast channel at [https://telegram.me/tppRedPen](https://telegram.me/tppRedPen)
|
||||
|
||||
Development is temporarily paused, but will be resumed in a new engine.
|
|
@ -1,5 +0,0 @@
|
|||
---
|
||||
layout: default
|
||||
title: Reddit Exporter
|
||||
---
|
||||
Uses OAuth to talk to reddit and retrieve all your saved links, and export them to useful formats, and maybe wipe them all afterwards.
|
|
@ -1,30 +0,0 @@
|
|||
---
|
||||
layout: default
|
||||
title: Incarcerated
|
||||
---
|
||||
#### Incarcerated
|
||||
|
||||
Note: If the web version is too slow, you can download it for windows [here](/assets/scripting-assets/Incarcerated/win.zip).
|
||||
|
||||
The purpose of this project was to demonstrate how to create a game where you use Unity's physics system to control a ball, with enemies and pickups and jump pads, etc.
|
||||
|
||||
**Controls:**
|
||||
|
||||
In the level selection,
|
||||
|
||||
- Arrow keys to switch level
|
||||
- Enter to select level
|
||||
- Escape to quit game
|
||||
|
||||
In the game,
|
||||
|
||||
- Mouse to look, WASD to move
|
||||
- Try to reach the green "finish" platform as quickly as possible, without dying
|
||||
- Red objects are hazards
|
||||
- Blue powerups increase your speed
|
||||
- Red powerups make you smaller and lighter
|
||||
- Yellow pickups reduce your time taken
|
||||
- Green arrows make you jump
|
||||
- Blue platforms slow you down
|
||||
- Backspace to restart the level
|
||||
- Escape to return to level select
|
|
@ -1,5 +0,0 @@
|
|||
---
|
||||
layout: default
|
||||
title: Scripting for Games Intro
|
||||
---
|
||||
These games were each made over a couple of weeks as part of a college course called Scripting for Games. They were each intended to test our proficiency at a couple parts of Unity programming. Unfortunately the projects often, just through poor timing, coincided with projects and exams from other courses, but I did my best to innovate each time. I was a bit too ambitious with the final project, Start, where I had intended to use procedural generation to create music to the correct tempo for the player to take their actions to. Instead I had to remove that feature and replace it with some music I'm not super happy with. Additionally, needing to do everything - not just the programming but also making the enemies, particle effects, levels, etc. means these projects aren't the _best_ examples of what I can do in Unity, but should illustrate a decent level of competency. For a better example where I got to just focus on the programming and had time to add things like scriptable objects with custom editor scripts, check out [Dice Armor](/dicearmor).
|
|
@ -1,31 +0,0 @@
|
|||
---
|
||||
layout: default
|
||||
title: Questable
|
||||
---
|
||||
#### Questable
|
||||
|
||||
Note: If the web version is too slow, you can download it for windows [here](/assets/scripting-assets/Questable/win.zip).
|
||||
|
||||
The purpose of this project was to demonstrate how to create a game where you use raycasts and projectiles to make guns, and nav meshes for basic AI.
|
||||
|
||||
**Controls:**
|
||||
|
||||
Move - WASD
|
||||
Aim - Mouse
|
||||
Fire Bullets - Left Mouse Button
|
||||
Quit - Escape
|
||||
Restart - Backspace
|
||||
|
||||
After obtaining the paint gun...
|
||||
|
||||
Fire Paint - Right Mouse Button
|
||||
Crouch - Control
|
||||
Climb paint - Control near paint on a vertical surface
|
||||
|
||||
**How to Play:**
|
||||
|
||||
Move from room to room until you reach the end. Each room will introduce a new enemy or mechanic.
|
||||
|
||||
Also, it's like really easy. I didn't spend much time on level design because I didn't have much time to work on this project this time around, so I really needed to focus on scripting this time.
|
||||
|
||||
I think my ideas of the paint gun were a bit too grand considering all the other stuff I had going on these 3 weeks. Sorry about that, there won't be things like it detecting the edges of surfaces. And again, I didn't really have time to make any levels that really used the mechanic, but it's scripted and that's the part that matters.
|
|
@ -1,31 +0,0 @@
|
|||
---
|
||||
layout: default
|
||||
title: Start
|
||||
---
|
||||
#### Start
|
||||
|
||||
Note: If the web version is too slow, you can download it for windows [here](/assets/scripting-assets/Start/win.zip).
|
||||
|
||||
The purpose of this project was to demonstrate how to create a game with multiple mechanics and features.
|
||||
|
||||
**Controls:**
|
||||
|
||||
Navigate the interface using the mouse
|
||||
|
||||
*Keyboard:*
|
||||
|
||||
- Join the game by pressing z in the player join screen
|
||||
- Leave the game or Deready yourself by pressing x in the player join screen
|
||||
- Ready yourself by pressing Enter in the player join screen
|
||||
- Move your character using arrow keys (recommended) or WASD
|
||||
- Perform actions using z, x, c, v (corresponding actions are listed in player join screen, but its setup like a, b, x, y for controllers)
|
||||
|
||||
*Controller:*
|
||||
|
||||
- Join the game by pressing a in the player join screen
|
||||
- Leave the game or Deready yourself by pressing b in the player join screen
|
||||
- Ready yourself by pressing Start in the player join screen
|
||||
- Move your character using the joystick
|
||||
- Perform actions using a, b, x, y (corresponding actions are listed in player join screen, but its setup like how it appears on an xbox controller)
|
||||
|
||||
|
|
@ -1,5 +0,0 @@
|
|||
---
|
||||
layout: default
|
||||
title: Shape Tycoon Screenshot 1
|
||||
---
|
||||
![](/assets/shape-assets/screenshot1.jpg)
|
|
@ -1,5 +0,0 @@
|
|||
---
|
||||
layout: default
|
||||
title: Shape Tycoon Screenshot 2
|
||||
---
|
||||
![](/assets/shape-assets/screenshot2.jpg)
|
|
@ -1,5 +0,0 @@
|
|||
---
|
||||
layout: default
|
||||
title: Shape Tycoon Screenshot 3
|
||||
---
|
||||
![](/assets/shape-assets/screenshot3.jpg)
|
|
@ -1,5 +0,0 @@
|
|||
---
|
||||
layout: default
|
||||
title: Shape Tycoon Screenshot 4
|
||||
---
|
||||
![](/assets/shape-assets/screenshot4.jpg)
|
|
@ -1,5 +0,0 @@
|
|||
---
|
||||
layout: default
|
||||
title: Shape Tycoon Screenshot 5
|
||||
---
|
||||
![](/assets/shape-assets/screenshot5.jpg)
|
|
@ -1,11 +0,0 @@
|
|||
---
|
||||
layout: default
|
||||
title: Shape Tycoon
|
||||
---
|
||||
Shape Tycoon is a game where you play as a shape that can shift between several geometric objects in order to entertain an audience. Try to become so popular the entire world is your audience!
|
||||
|
||||
Each of your shapes has an attention meter, and you need to shift so that it never gets too low, or else you'll start losing audience members. Audience members generate revenue for you to augment your shapes to help you grow and expand your audience.
|
||||
|
||||
It runs in the browser so anyone can play it, but I recommend the desktop version as it'll run smoother and can probably be resized and stuff.
|
||||
|
||||
This game was made using the LibGDX engine, by badlogic games. It's a java game, but uses GWT to make the web version.
|
|
@ -1,5 +0,0 @@
|
|||
---
|
||||
layout: default
|
||||
title: Slime Chargers Embed
|
||||
embed: /assets/slime-assets/Slime-Chargers/index.html
|
||||
---
|
|
@ -1,5 +0,0 @@
|
|||
---
|
||||
layout: default
|
||||
title: Slime Chargers Screenshot 1
|
||||
---
|
||||
![](/assets/slime-assets/screenshot1.png)
|
|
@ -1,5 +0,0 @@
|
|||
---
|
||||
layout: default
|
||||
title: Slime Chargers Screenshot 2
|
||||
---
|
||||
![](/assets/slime-assets/screenshot2.png)
|
|
@ -1,5 +0,0 @@
|
|||
---
|
||||
layout: default
|
||||
title: Slime Chargers Screenshot 3
|
||||
---
|
||||
![](/assets/slime-assets/screenshot3.png)
|
|
@ -1,5 +0,0 @@
|
|||
---
|
||||
layout: default
|
||||
title: Slime Chargers Screenshot 4
|
||||
---
|
||||
![](/assets/slime-assets/screenshot4.png)
|
|
@ -1,5 +0,0 @@
|
|||
---
|
||||
layout: default
|
||||
title: Slime Chargers!
|
||||
---
|
||||
A rare crystal has emerged, and you've taken your flying fortress to obtain it. Unfortunately, you'll first need to charge it up, before you can remove it. To do so you'll use a special breed of slimes that can charge these crystals through contact. Use your fortress to protect your slimes as they charge up your crystals!
|
|
@ -1,5 +0,0 @@
|
|||
---
|
||||
layout: default
|
||||
title: Solar TD Screenshot 1
|
||||
---
|
||||
![](/assets/solar-assets/screenshot-1.png)
|
|
@ -1,5 +0,0 @@
|
|||
---
|
||||
layout: default
|
||||
title: Solar TD Screenshot 2
|
||||
---
|
||||
![](/assets/solar-assets/screenshot-2.png)
|
|
@ -1,5 +0,0 @@
|
|||
---
|
||||
layout: default
|
||||
title: Solar TD Screenshot 3
|
||||
---
|
||||
![](/assets/solar-assets/screenshot-3.png)
|
|
@ -1,5 +0,0 @@
|
|||
---
|
||||
layout: default
|
||||
title: Solar TD Screenshot 4
|
||||
---
|
||||
![](/assets/solar-assets/screenshot-4.png)
|
|
@ -1,5 +0,0 @@
|
|||
---
|
||||
layout: default
|
||||
title: Solar TD Screenshot 5
|
||||
---
|
||||
![](/assets/solar-assets/screenshot-5.png)
|
|
@ -1,5 +0,0 @@
|
|||
---
|
||||
layout: default
|
||||
title: Solar TD Screenshot 6
|
||||
---
|
||||
![](/assets/solar-assets/screenshot-6.png)
|
|
@ -1,9 +0,0 @@
|
|||
---
|
||||
layout: default
|
||||
title: Solar TD
|
||||
---
|
||||
This was made in about a month for the LibGDX game jam!
|
||||
|
||||
The game takes a lot of inspiration from Onslaught TD, an old flash game. Now its in HTML5 and in space, with some other new mechanics.
|
||||
|
||||
There is no dev log, because over break I was focusing on family and only working on this in the down times. I didn't want to commit to documenting everything, apart from the commits themselves.
|
|
@ -1,5 +0,0 @@
|
|||
---
|
||||
layout: default
|
||||
title: Tower of Penultimate Sorcery
|
||||
---
|
||||
A puzzle adventure game made in 48 hours for the Spring 2017 Game Jam by UTD's SGDA. It was made by Anthony Lawn and Grant Barbee in RPG Maker MV. The theme was "loops", which you'll find very relevant while solving the puzzles.
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue