Eric: The Portfolio

Click a button to jump to a particular game, or simply scroll for all games.

Top

Skye's Repose

Simulation/Farming/Exploration

I dedicated a summer to this project, my first large-scale solo project. I hoped to learn Unreal Engine in more depth and to ensure I had the determination to complete a solo project.  I wrote all of the code for it except for the day/night cycle which was provided by the Good Sky asset pack.  The art came from various asset packs Unreal has given away over the years and a few friends following the project on the Discord.

A couple years later, I returned to the game. I changed just about everything and plan for this to be be my first extended, full-length game. Because of this, it has its own page where it’s described in detail.

Top

Holodefense

Hololive Tower Defense Game

Solo Project
Holdodefense is a tower-defense fan-game I made over a six month period to practice Unreal Engine and create a publicly released game. It was finished and wrapped up in the middle of my last college semester.  It uses assets from asset packs and fan models which were free for fan games.

Holodefense is made up of 5 towers with unique functionality such as slowing enemies around themselves or dealing splash damage, as well as its own damage type and one unique type of upgrade.


The enemies each take damage from each damage type differently, like the Phoenix enemy heals from fire damage while the water enemy is weak to fire. In addition, each enemy has unique features such as the Phoenix needing to be killed twice or the Death enemy making its allies immortal around itself.


The Minimap ensures you can tell what’s going on at a glance, and the camera automatically pans and angles itself based on how zoomed in you are to give you better views of the gameplay and environment.

The UI was designed to be readable and interesting to look at despite my limited assets. The Holodex offers information about all the gameplay mechanics and how the enemies and towers function. The level select makes sure you play through the game in order and shows your highest score in the map.

Towers show their range while selected or being placed. While being placed, towers automatically check if they’re being placed in a valid location– not overlapping any obstacles on too steep a slope– and showtheir status using the range indicator. The Range indicator is a decal with a dynamic material to control its color.


The upgrades are limited to 5 total per tower to encourage building more towers, and on hovering over the upgrade you see a preview of the result of the upgrade.

Top

RAM

Side Scrolling Metroidvania

Take control of an anti-virus program plugged into an old computer infected with a corrupting virus.  Explore the inner workings of the computer and find a way to erase the virus and save the computer.

Solo Project
Random Access Memory is a side-scrolling Metroidvania I made after I got out of school and my team parted ways on Clock Busters.  I wanted to see how much I had improved since the start of Clock Busters and to keep working on a project.  I used minimal assets, experimenting with how far I could go without any art help.

Boss
Each enemy has different mechanics, and the bosses push those mechanics to the limits. For example, this boss uses the calculator mechanics to grow stronger, growing more unstable-looking and doing more damage until it grows too strong and explodes, returning to its base power.

Calculator
Each area has unique mechanics such as this area with its running calculator. As you defeat enemies they add values to the calculator, and depending on the result, doors will open or close. Another area has a score system as you defeat enemies which can be used to unlock features in the environment.

Placed/Warp
The construction system allows for permanent buffs to the player, such as increased damage or stunning attacks. It also allows you to place fast travel points to easily travel between areas you can build in, if you can spare the space.

Dialogue
The dialogue system plays smoothly mid-gameplay, interrupting itself only if marked as important dialogue. Any dialogue played is added to the menu so it’s readable at any time.

Bouncing Barrels
The camera system smoothly transitions between different angles based on the environment using triggers to decide where to shift and how to follow the player.

Save/Load
The save system saves the state of picked up upgrades, placed devices, all environmental flags, where each item has been randomized to and claimed, and what level is loaded.

Level Load
The game world is broken up into areas permanently loaded at all times, and individual programs or levels that the player can load one at a time into one central location in the center of the map.

Randomizer
The randomizer is designed to ensure no game will be impossible; there will always be a route to unlock every item.
It starts with a list of placeable items and a default fallback item and then makes a list of item checks, places the item can be placed. Each check has a list of ability sets that can unlock it.
The randomizer works by checking if there’s an item it can place to unlock new item checks, and places it in a random check that’s reachable with what’s already been placed, prioritizing marked “Valuable” checks. It repeats until every location is unlocked, and then places the rest of the items randomly, confident there’s a valid route through the game.

Top

Clock Busters

As the team leader and lead programmer for Clock Busters, I coordinated the other four developers, helped determine which assets to use from asset packs and which to design from scratch, and juggled a full school load, all while coding a fair number of the unique features of the game.

The Basics

Uncover the secrets of a castle throughout time as you try to stop the Time Lord from destroying the natural flow of time while fighting your way through a metroidvania built around a randomizer.

Created by five game design students over the course of a semester, this demo includes a mostly complete vertical slice of our vision, including:

  • 2 classes to choose from at the start.
  • 2 different time periods to explore.
  • A randomizer for upgrades to ensure no two games are the same.
  • A variety of upgrades, including 5 unlockable abelites.
  • A toggleable life system to encourage making use of the randomization.
  • A boss to prove your skill against.
The Randomizer

Items: 

As a metroidvania, one of the core aspects of the game is a variety of upgrades and abilities that each unlocks new locations and aids the player in exploring for new items.

I coded the items and some of the upgrades such as the dash, the fire-ball explosive, the ground-pound, and, not in the currently released version, a slow time ability.

The selling point of the game is the built-in randomizer which allows the developers to mark locations for items to appear in and note what abilities are needed to reach that location.  Then the randomizer chooses where to locate each item, ensuring that no item can be locked behind itself in any way by starting with the locations that don’t need any upgrades and ensuring that at least one of those containers has an item that unlocks a new area.

Level System

I built a level system that separates the past and future zones into separate maps while still allowing the randomizer to function and facilitating the save/load system.  It’s also being expanded so each large zone has its own map. This increases efficiency by not requiring everything to load at once. 

(I wish I could say more about this because it was challenging to make it work right, but there’s just nothing to say.  It works now.)

Combat + AI 

I designed all the systems for combat, including player health+damage (implementing Unreal’s damage system), the attack for both the melee and ranged classes, and all the enemies and their AI.

The enemies all make use of the same base blueprint, and the AI is constructed from blueprints rather than behavior trees.  The base blueprint includes features for patrolling at any given speed, remaining stationary if needed, taking damage, dealing contact damage, perceiving the player and targeting them, and making an attack of some sort.  Then more specialized child-blueprints are used to make the melee enemies, the turrets, and all the other enemy types.

Miscellaneous features

Other features include a more practical options menu for volume, an optional life system where you can only die so many times before you have to turn off iron-man mode or start a new game, a checkpoint system that saves the game under an auto-save when you use it, a variety of environmental features like destructible walls and elevators, and a save/load system that stores picked-up items, item location, the Checkpoint where the player saved, player class, money, lives, and any flags anything else requires.

Top

Game Jam Games

What can a small team can accomplish during a sleepless weekend given enough pizza and sodas? Here are the best of my Game Jam games from the past four years.

A girl in space is forced to relive the same day over and over until she finds the cause of the time loop. Download on itch.io

My role: Sole programmer, 5-man team

Explore caves and uncover the secrets of the floating obelisks with the help of friendly bats. Download on itch.io

My role: Sole programmer, 2-man team

A simple ship builder where you make a ship out of blocks and fight circles for money. Download on itch.io

My role: Team leader, 3-man team