/* Top game projects I have chosen to represent myself. */
Apocalypse Approaches is a top-down 2D rogue-like where time is everything. Instead of having a traditional health-bar, your "health" is the amount of time remaining in a run. You are always losing time, and certain things (such as taking damage) can cause you to lose more time. You can gain time back by defeating enemies and performing certain other actions such as parrying with the sword. Everything plays heavily into Time being a resource, as your health, magic, and build.
The game is currently in development, but as of now includes a procedurally generated dungeon you can traverse, as well as items you can find to progress your build throughout your run.
Enemy Artificial Intelligence System ("Maneuver System")
Created custom editor interface for developing enemies generically in Godot inspector
Each enemy has a decision tree to pick a "Maneuver" to execute
Each enemy has a list of maneuvers that can be chosen by their decision tree
"Maneuvers" are sequential lists of atomic actions to be executed in order.
"Actions" can play desired animations, activate/deactivate hitboxes, specify damage, knockback, and other variables. They can be overridden for additional functionality
EG: "Approach" action pathfinds towards the enemy's target (usually player), "Fire Projectile" action fires a projectile towards the enemy's target
Graph-Based Procedural Dungeon Generation System
Created custom editor interface to set up graphs that represent valid dungeon layouts
Created system for interpreting graphs breadth-first and placing valid rooms connecting to each-other
Dungeon Room Representation
Enemy Encounter System
Wave-based encounters that can specify enemy types and spawn-points, and signal their completion
Level Management System
Cutscene System
Made use of Dialogic and Animation Players to create a cutscene management system
Pixel Art & VFX
Clock and Time Gauge UI on top, Logo, character dialogue portraits, dialogue assets, and various assets in the levels
Particle systems, Dither Shader
Junk-Punk is a competitive 1v1 turn-based tactics game which allows players to equip modifications to their move-set for a limited time to gain advantage.
Turns have three phases: Environment, Setup, and Action. During the environment phase, environmental effects take place, such as scrap falling from the sky and decaying in value. During the setup phase, players have access to a shop and can purchase modifications using scrap, which go into their inventory and can then be equipped. And finally, during the action phase, players can move and perform an "action", which is specified by the selected arm mod they intend to use.
Systems for Movement, Combat, Action Economy, Grid Representation
Movement can be defined with continuous paths as well as teleports to unoccupied tiles
Combat can be melee, ranged, or AOE, and AOEs can be rotated.
Game Manager that tracks different phases, UI updates for the active player and scoreboard, and manages player turns.
Systems for interpreting data defined for movement, and attacks.
Structures for Player & Scrap
Scrap spawns every 3 turns for balance, can be destroyed for bonus currency, value decays over time.
Players store information about mods, inventory, and signal controls to the game board.
System Designing and implementing unique mods.
Define paths, damage, range, aoe, passive effects & etc. using editor, and if necessary, inheritance.
Singleton Database to store mod data for players to copy and reference, and assist with integrating new mods into game.
Asset Integration (Audio, Sprites, UI)
Player sprites animate & limbs colors reflect equipped mod
Claw Game is a multiplayer party game where players alternate between controlling the claw of a claw machine, and living plush toys that fight against the claw machine grabbing toys. The player that scores the most points (by getting the most toys into the chute) during their time as the claw wins.
Both the plush toys and the claw have the ability to grab and throw items, as well as each other. Points can even be stolen by a claw player when they drop one of the players into the prize chute! And, if a player so chooses, they can pick up their friends and form an alliance with the claw. Endless emergent gameplay choices to be made here!
Multiplayer implementation
Up to 4 players, spawning at a list of spawn points or possessing the claw each turn
Character select implementation
Persistent character select choices between gamemodes and scenes.
Platforming characters with the following features:
Grabbing (items and other players)
Throwing (items and other players)
Ragdolling (when grabbed)
Death/Respawn/all that fun stuff
Score assignment implementation
Characters get points while acting as the claw and dropping items in the item-claim, can steal from other players by picking them up as well
UI flow
Asset Integration (UI/Audio)
Cordyception is a 2D top-down puzzle platformer game themed after the cordyceps fungus. The player is a fungal witch with the ability to possess bugs and use their abilities to manipulate & traverse through a puzzle environment. The player's objective is to enter a house at the end of each level.
Each of the bugs has 2 main abilities. 1 which can be used indefinitely, and one special ability which will kill the bug after it is finished, as the bug will have used the last of its energy doing so. In addition, the player cannot walk on stone, but all bugs can, so the player must be using a bug to avoid the stone loss condition. Beyond this, bugs carry momentum when unpossessed and the player gains height when leaving a bug.
Concept & Design
2D platforming characters:
Witch | Hopper | Roller
Gameplay Systems:
Game Manager Singleton
Possession/Unpossession
Level Editor
Level Tracking & Resetting
Interactible Level Objects: Poison | Rocks
Asset Integration:
Audio Manager Singleton
Sprites / Animations
VFX Particle Systems
UI Implementation and Flow
Pinfinity is what happens when you cross pinball with doodle-jump. You control paddles that move up with a pinball as you continue to push it up into space. The ball can bounce off of bumpers, balloons, and other obstacles as your height increases, which nets you points that contribute to your score at the end. You can even get combos by bumping off of multiple bumpers while airborne! Once you lose your ball, you lose, and need to start over.
Procedural Generation
Level Designs, how they interact with each-other
Placement of groups of chunks based on height in-game
Game Management:
Implemented score counting system and combo system
Paddle controls & implementation
Bumper & other obstacle implementation
Persistence & Scene Management
Global Leader-board Implementation using Unity Services
Asset Integration
Audio and Sprites/Animations
Bumper audio goes up major scale during combos
Programmed and designed UI elements.
As a part of my curriculum in NCSU's game development concentration, I developed a game engine in C++ from scratch.
The current example game it compiles for is Snake, however different games can be programmed by modifying & creating scripts, and assigning them + other components to game objects in the game manager's startup function for either the server or client.
JavaScript Scripting
Event management
Networking
Multithreading
Component-based object model
Components include: Scripts, Colliders, Triggers, Rigid Bodies, UI text, as well as some others
SFML | ZeroMQ | V8 | WSL | X server | C++