Notice
This website is made for viewing on medium and larger screens (Specifically: 640px) Width screens or larger. For the portfolio site, please use a device with a larger screen.
Aspirations
Efficient Designer
I make sure to spend the quality time to think through designs and employ the best practices when implementing them.
Efficieny Striver
I strive to make my code as efficient as possibly can be where it is needed. I choose my efficiency battles properly.
Communication
I make it imperative to communicate as much as a I can to the team, being transparent and making sure everyone is on the same page is key.
Fortitude
I will stick through thick and thin when it comes to getting a produce out on time. I do not mind taking the extra mile to get things done.
About Me
My passion for video games began at a young age with titles like Diablo II and Starcraft, igniting a lifelong interest in game development. I started my journey with Roblox and LUA scripting, and expanded my skills through summer camps where I learned various game editors and coding practices. In high school, I ventured into 3D modeling and animation, but ultimately found my true calling in programming and game design.
overing new hiking trails. I have always had an adventurous spirit, whether it's developing a new project or finding an awe-inspiring trail to explore.
As I continue to develop my skills, my goal is to become a proficient systems designer and developer. I am passionate about creating intricate game systems and efficient solutions, and I am dedicated to breaking into the game development industry. Whether by joining a renowned company like Grinding Gear Games or starting my own game company, I am excited about the opportunities that lie ahead.
Languages
Good
C++
C
68K Assembly
Decent
JS
C#
Python
Lua
Java
SQL
Unfamiliar
PHP
Tools
Good
Unreal Engine 5+
Visual Studio
Perforce
Jetbrains Rider
Decent
Git
Jira
Webstorm
Unity
OpenCV
VSCode
Postgres
Maya
3Ds-Max
Photoshop
Unfamiliar
Godot
Blender
Audacity
Wwise
Skills
Multiple Programming Languages
My experience spans several programming languages, including Python and Java. During an internship, I shifted to web development and also contributed to a game developed in C#. With a solid foundation in C++, I am now ready to focus on creating impactful projects in Unreal Engine, including the current one I am working on.
System Designing and Developing
Becoming a system developer involves the crucial task of balancing game mechanics. One of my favorite aspects of design and development is ensuring that systems are both intricate and well-balanced. I strive to create multiple engaging pathways for players, keeping the gameplay complex and interesting.
Creative Artist and Developer
I have been doing art since I was little able to draw all sorts of things that my mind envisions. I find that this creativity extends to programming as well, letting me create interesting and unique systems. I also had a few years of 3D-animation and game art in high school, so I know a lot of the programs used in the industry.
Version Control Experience
Throughout my schooling during my undergrad I learned to use github for many projects. While this built the fundamentals of using github, I became profecience in github when working for Web Ascender. Now I know different methodologies for version control and different sprint and cycles for producing content.
Projects
Game Engine
Built from the ground up, my engine is backboned by a Scope and Datum system, a hierarchical key-value store (Scope) paired with a versatile data container (Datum). Datum and Scope are extremely light weight a provide a great foundation for creating the concept of game objects.
The engine used Json as the content facing driver. That means content creators are able to create games purely with json due to the engines deserialization process.
Under the hood, this engine employs modern software-engineering practices: a single global singleton for service registration; templated interfaces for type-safe service retrieval; macro-driven binding; lazy initialization with caching; and a fully decoupled architecture.
Github Privated
Youtube UnavaliableCrimson Knight
Crimson Knight drops you into a looping realm ruled by The Absolute, a goddess who forces you to relive your own brutal past. You wield a heavy, blood-soaked greatsword—absorbing enemy life to fuel special attacks—while mastering dodge-rolls, parries and stamina management. Each death reshapes the arena and teases out fragments of who you once were.
Crimson Knight is in development at Squinky Studios. I led the implementation of Unreal’s Gameplay Ability System—designing core abilities, building custom calculation classes, and fine-tuning every skill to feel responsive and impactful. This project has taught me GAS from the ground up.
I also built our in-game debug menu and hooked all GAS effects into custom calculators with SetByCaller parameters tied to DataTables, so designers can tweak ability values directly without touching the effect blueprints.
Perforce Privated
Youtube UnavaliableDiablo 2 -3 week remake
This early graduate project involved developing a procedurally generated tile-based world using OpenGL and C. The tilemap engine calculated walkable surfaces, rendering randomized tiles at runtime. Players explored vast dynamic maps while managing real-time navigation, showcasing early work in spatial logic and grid-based systems.
Implemented A* pathfinding to govern enemy behavior, using a grid-based evaluation to select optimal paths. Debug lines visualized search trees and final routes, providing tangible insight into algorithm efficiency. Directional animation states responded dynamically to path outputs, supporting an 8-direction locomotion system through ENUM-controlled animation playback.
Designed a randomized power-up system rewarding exploration and enemy defeat. Drops applied gameplay-modifying buffs directly to player attributes, emphasizing strategic collection. Although full loot systems weren't completed, modular pickup effects and timed buffs created a compelling sense of progression leading up to a climactic boss encounter with Diablo.
Developed an object-oriented C framework that tracked thousands of game entities using a custom object manager. This architecture abstracted drawing, updating, and deletion into a virtual table design, allowing reusable logic across players, enemies, projectiles, and tiles. Centralized update loops maintained performance across large-scale enemy swarms.
Built a frame-based animation system supporting 8-directional movement and attacks using texture atlases. States were enumerated and mapped to specific sprite coordinates, dynamically switching based on direction vectors. Implemented non-looping animations for deaths and special effects, enhancing visual feedback and player immersion.
Diablo 2 -3 week remake
Entity System and Memory Efficiency: Entities are stored in a contiguous memory block and indexed using address registers for fast iteration, minimizing instruction count per frame. The EntityManager leverages direct address manipulation and register reuse to optimize CPU cycles during update and draw phases.
Input Handling Through Bitmasking: Player input is decoded via bitmask operations on controller state registers, allowing for extremely fast checks and compact logic. Inputs are then passed to the InputHandler through specific data register conventions, avoiding stack operations and keeping input latency low.
Optimized Rendering with Direct VRAM Access: The game’s rendering system writes directly to screen memory using calculated offsets in address registers. Primitive drawing functions, like rectangles and bitmap blits, use tight loops with precomputed deltas to avoid costly multiplications, conserving clock cycles on the 68k.
Game State Transitions via Vector Tables: Game states (e.g., title, gameplay, pause) are managed using a jump table stored in memory, allowing fast O(1) dispatch with a simple jmp through an offset. This design avoids long conditional chains and keeps control flow clean and efficient in raw assembly.
Collision and Movement with Fixed-Point Math: To support smooth motion without floating-point overhead, entity movement and physics use fixed-point arithmetic with shifted integers. Collision routines rely on branch-free AABB checks using cmp and bhi instructions, ensuring consistency at minimal instruction cost.
Project DeathDealer
High Concept: Project DeathDealer is a Vampire Survivor game (wave horde survival game) featuring static and unique rifts (difficult areas) and boss fights. Unlike most horde games where bosses spawn at random intervals, DeathDealer includes difficult bosses to aspire and kill faster each run.
Leveling: In Project DeathDealer, players switch between selecting spells and passives when they level up. Players can have unlimited spells to choose from when leveling up but are incentivized to select the same spell multiple times to increase its base damage. Levels 2, 5, 10, 20, 30, 40, and 50 are for picking spells, while every other level grants a passive bonus to the character.
Gameplay: You start the game in the middle of a giant map. Your character begins with a basic attack that you can use with your mouse click to gain initial experience. Spells you acquire are fired automatically at a set interval (reduced by cooldown) and have interesting interactions. You must defend against waves of multiple types of enemies.
Future Prospects: I plan to implement more items in the data tables and introduce custom drop rates for certain enemy types. Additionally, I aim to add boss portals to provide pinnacle content for players to aspire to.
Solo Project: This project was undertaken to get my feet wet with Unreal Engine. Everything, except for VFX and some sprites, has been done solely by me. However, I hope to involve other talented individuals in the future.
Project Rampent Reload
High Concept: In Rampant Reload, your goal is to make it through levels as fast as you can. This doesn't mean moving as fast as you can but shooting and hitting. The idea is you have a small clip size and the faster you use them the more points you get making speed a very important factor. There are enemies as well as targets to gather points and cause hinderances.
Zones: Zones consist of cover points, enemies, targets and player buffs. Traversal through a zone is like old arcade shooters where the screen moves for you to the next cover point. Once you cleared that position you may move to next. The goal is to get to end door without dying and getting as many points as you can along the way.
Gameplay: You are equipped with two different guns by default. A revolver and a dual shotgun. If you reload fast inbetween unloading a clip whilst hitting a lot of targets, you will get special ammo types once your reload is done. Some of these ammo freeze enemies, others ricochet multiple times before ending.
Future Prospects: I plan to keep working with 8D Productions until the game is released (expected end of 2024), or until other obligations cause me to stop. I strive to get parts of the code base up to new standards by that time.
Group Project: This project was undertaken by 8D Productions a small group of graduates from many different schools. We have currently six people working on the game currently. Nate (project lead) and I are the programmers while the rest work on the visual/audio aspect.
Github Privated
Youtube→Project Rampent Reload: DocuGen
DocuGen is a tool we built within project Rampant Reload. It allows us to rapidly create templates for XML documents, script files to reference those XML documents and also create tooltips based on the XML content for the Unity editor to utilize.
DocuGen is not on its own repository yet. Once Rampant Reload releases and all the bugs and kinks are out of the program, it will be released to open source. This was made by both me and my project mate, Nate.
Github Privated
Youtube→Rapidly-exploring Random Tree
Here is my implementation of an RRT, or a Rapidly-exploring Random Tree. This was a project undertaken during my undergrad in which I had to create an RRT from scratch (using journals talking about RRT for reference) and then visualize the process on screen. I used pygame to generate the visuals.
Youtube video not available.
Genetic Algorithm
This was my favorite project during my undergrad. This genetic algorithm implementation is used to solve the N-queens problem, which is placing N queens on a N by N board without any queens able to attack each other. Genetic algorithm uses randomization and mutations to find the solution fast via computation.
Youtube video not available.
A* Algorithm
This was my first AI project that used hard coded nodes that referenced each other. These nodes only referenced other nodes that it could "see", which means that there is no drawn lines blocking its visibility. In retrospect, I wish I implemented a method that used collision detection. Still a reasonably fun project.
Youtube video not available.
Web Ascender: AC&E
This was my 2nd Web Ascender project that I worked on. I really loved this site and how it turned out even if I didnt have 100% creative freedom because I was provided a base template from photoshop. It was a great privilege to work with the guys on backend and learn how to link up to the API they worked on.
Youtube video not available.
Web Ascender: Dewitt Fence
This was my first solo project. Almost all the work was done by me with a ton of help from the Web Ascender team. On this project the whole creative process was undertaken by me. I used Wordpress specifically on this project which was a nice change from actually writing all base HTML myself and it exposed me to the quick workflow it provides.
Youtube video not available.