Served as Lead Engineer
Summary coming soon...
"Into the Deep"
That was the theme for the June 2022 internal company game jam my studio PeopleFun put on. With a team of crack game
developers, we started work on a game we described as an endless runner meets dating sim. What came out of this was
Sea Crit Admirer, a game built in Unity utilizing a Twine integration that I created for my game
prototype Mood for a Melody.
The game comprises of levels of the player venturing deeper into the ocean, dodging eels and octopi (octopuses?)
to reach the end, at which point the game swaps to a dating sim-style visual novel mechanic. You are chasing
down a voice you hear in the abyss, and depending on the choices you make in the dialogue and the amount of hearts you collect in
the level, you will either end up with your sea critter admirerer, or you will stay forever in Davy Jones's locker...
This game was created in one week, and ended up winning Best Sound Design at the jam!
Ah, Picross - the incredible game
franchise that has about as many installments as there are stars in the universe. Based on the classic
Nonogram logic puzzle, this game has kept me
entertained for years, and was a huge hit with my partner at the time.
After ingesting so many of these games and their puzzles over the years, I thought it would be a fun
programming challenge to try and reverse engineer the logic behind Picross's hint system, which highlights
a row or column if the player can make a logical move there. After a lot of trial and error, I eventually got my
own implementation of the logic down, and had a semi-decent prototype working. I then decided that since my partner
enjoyed the game as much as I did, and our 3 year anniversary was coming up, that it would be a cool idea to flesh
out the prototype into a playable gift that I could present to her. I chose HTML & Javascript since
I wanted her to be able to play the game in the browser (and because I like a challenge). I ended up creating what
you can see and play now, my very own Picross clone!
For the anniversary present, I created some custom levels based on aspects of our relationship (it was very sweet
I assure you). Since I'd rather those elements stay as a private gift to her, you can now play recreations of some
of my favorite levels from the first Picross game.
It’s a pretty good crowd, for a Saturday. At least it will be, so you better prepare.
That is the tagline for this interactive text-focused story game, based around Billy Joel’s fantastic
song Piano Man. You play as Bill, the nightly piano entertainer at the Zanzibar. The gameplay,
which is similar in style to games like Subsurface Circular and the interrogations of
LA Noire, sees you communicating with the disillusioned patrons at the bar, trying to work through
their problems in order to find the spark, a memory that they need to hear that night. The game is
built in C# using the Unity game engine, and the UI and dialog system is all built from scratch.
The story is developed in Twine and then exported to Unity using a Twine integration I developed.
The game is currently in development, and we hope to publish a playable demo on itch.io soon.
This game's been shelved until I can find the inspiration to return to it.
Inspired by the Infocom classics I played as a kid like Zork and Planetfall,
Voyage of the Infinity is an unfinished text adventure game that can be played in the browser.
Built on the Phaser game engine, a massive goal of the project was to make the codebase as
extensible as possible. All code specific to the game is stored in JSON files, so that the
code could easily be used to build other text adventure games in the future. The engine code
is written in TypeScript, along with some fragment shaders written in GLSL for extra flair.
The game was developed in conjunction with my friend Sean, who focused on the story and the
puzzles.
Will I come back to this project later and finish it? Most likely yes. It was a lot of
fun to design and create, plus we already have two-thirds of the game planned out! The reason
I stopped was due to burn out. Soon, however, The Infinity shall voyage again.
There is unfortunately no tutorial yet, but if you type "help", you will be given all the
necessary commands. Note that the game is unfinished, and the content ends roughly when
you reach the bio lab.
WARNING: the game is really loud, so turn down your speakers (I need to fix that).
Cannoneer is a 2D arcade shooter built on the Unity engine. This project gave me extensive practice with the C# language, as well as the Unity Game Engine. This project gave me a chance to flex my game design skills, as well as provided me with fun challenges associated with working as the only software developer on a team. The game won the Best New Media Award at the KU Film & Media Studies Tensies Awards. Although it has been delayed, a mobile version is in the works which is giving me experience in mobile development and in crafting an intuitive mobile UI.
When we heard that the theme for the 2021 Global Game Jam was “Lost and Found”, a couple of ideas were
thrown around. Our favorite was one that Sean had scribbled on a napkin while Varun and I were discussing
mechanic ideas. The idea was for a good-natured rat who returns the items that the population of the
city has dropped. This developed into Lost and Raturn, an arcade game built in C# with Unity engine.
In it, you play as Marshall, a rat who must grab items that are dropped by different types of city folk
and climb up their legs to return the right items to the right people. But look out! City dwellers are
dangerous, and if you get stepped on, you’ll lose a life!
In all honesty, this might be the game I am most happy with in all of my portfolio. It was a ton of fun
to work on, I got to become closer with my friends and the game development community at my jam site
(all of the voices in the game were from various other jammers who responded to our call for “yelps
and shrieks”), and I just think that the game is a lot of fun to play. I hope you enjoy it!
Note: the online leaderboard does not work in the online version, but if you download the game it
should be connected.
When you hear the word RFID, you probably think of credit cards, door locks, and those people
injecting microchips into their
skin. But would you think… controller for classic Atari games?
Well don’t worry, we did.
RFID Pong is exactly what it sounds like: Pong, but controlled with RFID cards. The game is written
in Python and built using the pygame library, along with an arduino running 2 RFID scanners on a
breadboard. It works by the 2 players both having 2 RFID cards, 1 programmed to be down and 1
programmed to be up. When a player wants to move their paddle in a direction, they scan the card
associated with the desired direction, and the paddle will move as long as the card is on the scanner.
It was built in 8 hours during the
2020 KU hackathon,
but was disqualified from being entered because I contributed in organizing the event that year (see HackKU
RFID in the Hardware section). It was a big hit, and other participants would come over to play the game and compete!
Terminal is an asychronous, cooperative, puzzle, couch-multiplayer game with some unique mechanics.
Player One is in charge of the top two-thirds of the screen, and for them the game is a platformer.
They use a controller and are able to jump around the environment, utilizing special abilities like
wall jumps and a high jump. Player Two is in charge of the lower third of the screen, and for them
the game is a combination of a typing and puzzle game. Player Two uses the keyboard, and takes on
the role of a hacker, typing in commands to a terminal. The "hacker" (Player Two) is able to manipulate
the "spy's" (Player One's) environment. The two players must work together in order to complete
levels by using a combination of skillful platforming, clever puzzle solving, and fast typing skills.
The game was created in Lua using the LÖVE 2D framework, and was actually my first ever video
game that was played by other people, so this game holds a special place in my heart. It was created
for the 2017 Jayhacks hackathon, and won 2nd place!
Conflicting Objectives is a short prototype of a competitive couch multiplayer party game written
in C# using Unity. The objective is to collect more coins than your opponents in the allotted amount
of time - typical party fare stuff. The twist comes that you must rely on the compass on the side
of the screen, which shows where your player is heading, rather than the player character itself.
Your opponents can then get power ups, which disrupt your compass in a variety of different ways.
From mirroring and restricting your movements to distracting you with other arrows, it becomes much
more difficult to navigate your way to the coins. On top of that, power ups can stack, leading to
hectic and enjoyable chaos that can be enjoyed by up to 4 friends on one single controller!
EECSurvival is a 2D bullet-hell shooter that is implemented using our homebuilt engine, The DFQE. DFQE was developed in Java using the Lightweight Java Game Library, which communicates directly with OpenGL. The project was built using an Agile Development Cycle, where we created design documents and hosted Scrum mettings. We also heavily tested the engine and game using a testing suite we created.
Most everyone knows Minesweeper, the classic puzzle game in which you try to clear a minefield using numeric hints as fast as you can. This project is simply a reproduction of the game written in Java using the JavaFX framework that was put together in one afternoon. The stretch goal for this project is to design a mechanic that removes game overs that are out of the player's control.
Full description coming soon...
Full description coming soon...
Description coming soon...
PoserRank is a social media platform that relies on an abstract concept of "posery" (an umbrella term for acts of stupidity). The project was primarily developed in Python using the Flask framework, but also contained uses of SQLite for database communication. The user interface was generated using HTML and CSS. The project has been discontinued due to lack of enthusiasm, but significant work has been done on the backend and frontend.
Hot Rod Gif Database is a webpage containing a variety of .gif images taken from the movie Hot Rod. The website was built using HTML and CSS, with a fair amount of Javascript sprinkled in for making aspects of the UI functional. The project presented a lot of obstacles due to the amount of data being shown at one time. The project is used by many of my friends on a somewhat regular basis.
Doodle Clone is a web-based scheduling service, much like the popular Doodle application it is named after (I know the name is unoriginal, I did not pick it). The project is written mostly in Javascript, and uses HTML and CSS for the user interface. The project was developed on a team on which I was lead. The project is significant because our team inherited the project, and was then tasked to implement more features.
After helping organize the HackKU hackathon
for 2 years in a row, I decided I would not help organize my final year and simply enjoy the event.
However, when I was asked to develop an RFID system to help keep track of attendees, I couldn’t resist
the challenge. What arose was HackKU RFID, an application built in Python that would log what participants
came to which events and workshops. The program was created with Flask for the server and CircuitPython
for the client that was loaded on one of two Raspberry Pi. The system worked flawlessly (the second day) and was
an incredible help to the organizers of the event!
Unfortunately, the only images I have are from when the program was failing (the first night was hectic
because the RFID readers had been set to the wrong settings), but they nevertheless show the program in
action.
Ah the Nintendo Wii. As the classic home console system of the late 2000s, I grew up loving the Wii.
However, it wasn’t until much later in my life that I discovered the Wii controller works on basic
Bluetooth, and that with the right libraries,
the power of the Wii controller can be utilized
by anyone with some basic programming skills.
Wiimote Adventures is a collection of small scripts used to play around with the Wiimote’s capabilities.
The project is written in Python using the cwiid library, and contains a few scripts: a lightsaber that
utilizes the internal accelerometer to play whooshing sounds, a wheel controller that takes the
accelerometer inputs and interprets them as keyboard inputs to steer a virtual car, and one that just
rumbles the remote in morse code.
The Spotify Data Analysis project arose from my discovery that you can
download all of the data that
Spotify has on you (which includes your past year’s worth of streaming history). From this, I decided
to put my data science skills to the test and analyze my streaming history to find trends in my
listening habits. The project was written in Python using a Jupyter Notebook, as well as a variety
of graphing and analysis libraries. Analysis actually wound up taking many months to get to, because
before I could analyze my data I had to clean it and enrich it, which took a few months to complete.
To do these, I utilized Spotify’s API and created a helper tool to clean data, which can be found in
the Websites portion of my projects.
If you're interested in your Spotify listening habits as well, feel free to download your data and
run it through the journals! It should be set up to support all data.
KU-dle is a scheduling program, similar to the popular Doodle service. The app was created using the Java language and the JavaFX framework. The app gave me experience with working on a deadline, as well as practice crafting a simple and intuitive user interface. I was team lead for this project, and that title made me responsible for delegating tasks and making sure everything was running smoothly.
The Morse Code Project is a fun application that allows computers to communicate through the use of morse code projected through speakers at superaudible levels. The project, written in Java, has a user interface that is implemented using the JavaFX framework. It utilizes high-level Digital Signal Processing libraries to parse audio data into patterns, and those patterns into text. The project is unfinished, but will be completed one day!