Hey There!

I'm Joel!

I am a...

Gameplay Programmer


I am looking for a new studio to call home!

Professional Summary:

I am seeking a position as a Gameplay Programmer or Generalist, either remote or in the Boston MA area. I have experience in developing Gameplay, AI, and Tool Dev and am proficient in Unity and Unreal.I have worked on two fully released commercial products and have also released several of my own projects and repositories on GitHub.

Commercial Projects

Unity3D Point-And-Click Game

Commercial Project


This is an escape room game designed to analyze a team's communication skills throughout the experience. Teams must read clues, solve puzzles, and interact with objects to escape each room before the timer runs out.A lot of time was spent profiling and optimizing the game mechanics to ensure that the game is visually pleasing and stable across our WebGL target platform.

Unity3D Point-And-Click Game

Commercial Project


An escape room game designed to analyze teams' communication skills throughout the experience. Teams read clues, solve puzzles, and interact with objects to find a way to escape each room before the timer runs out.The mechanics were created and optimized for our target platform, WebGL.

Projects

Unreal Engine 5 FPS

Pirate Software Jam


In a world overtaken by darkness, you, your flashlight, and your lighthouse are the last beacon of hope.Collect supply drops and use light disintegrate shadow beasts that strive to consume this world. And whatever you do, do not let the battery die.This game was done for the 2024 Pirate Software Jam. Completed over the course of 2 weeks.

Unity3D Fishing Mystery Game

Team Project - Cozy Autumn Jam


You're a fisherman in a cozy forest town. You spend all day by the lake, casting and reeling them in. That is, until someone dumps all their garbage in the lake. Talk to the cute animal folk to puzzle out who may have done it - all while fishing up clues from what they say

Features
- 8 silly and unique characters to meet
- Day/Night cycle
- A tiny open world to explore
- 9 outstanding pieces of trash to collect
- 9 adorable fish varieties
- 1 reel mystery afoot, er, afish!

Unity3D FPS/Top Down Hybrid

Ludem Dare 52


Midnight Harvest is a Hybrid TopDown/FPS game. The goal is to survive as long as you can against hordes of monsters coming through portals. At your side is an arsenal of plants that you can use as ammo. Each with different effects and abilities!Be careful though, sometimes your crops aren't always safe.You need to think like a farmer and to do that, remember these rules- Don't shoot at the crops
-Don't blame the crop for not growing fast enough
-Don't uproot crops before they've had a chance to grow
-Choose the best plants for the soil
-Remove weeds
-Remember you will have good seasons and bad seasons - you can't control what comes out of those portals

Demon Delivery Service

Unity3D Parkour Action Game

Ludem Dare 53


Demon Delivery Service (D.D.S) is a first-person parkour system with a focus on procedural dungeon generation. It features a full modifier system that affects both you and the rooms that spawn.As an employee of DDS, your task is to find lost scrolls in Hell and deliver them back safely. You will traverse through an ever-changing Hell, jumping over lava, grappling your enemies, and figuring out how to get to the next area. After delivering the scroll, DDS will reward you with more power, making it easier to trek through and make your next delivery.

Unity3D ARPG Game

Team Project


Mythgrove is a rogue-like dungeon crawler where players can go dungeoneering with their friends. The game begins when the player discovers a secret forest with a dungeon entrance and soon realizes that the legends of the yearly spirit dungeon festival are true. The player is the only human in this festival and must attend the sport of dungeoneering to enhance their fame and experience.Throughout a variety of dungeon terrains, the player must rely on their battle skills to enhance their weapons and prove their worth in the festival. As the Lead Programmer, the largest contribution to the project was coding the procedural weapon mesh generation system, UI, inventory system, and multiplayer networking using the Mirror Framework.The game is available for free on Itch.Io.

Mythgrove

Unity3D Game Mechanic Recreation

Personal Project


This project aims to recreate the turn-based battle system featured in "The Legend of Dragoon" and its unique timing-based combo sequence, adding an additional layer of complexity.
To achieve the combo-based sequence of attacks, a custom battle system was implemented. A custom Character Controller was also developed to control the player's actions. Additionally, a custom Character Object system was created to allow developers and designers to easily edit the timings and damage multipliers of combos with animations.

Legend of Dragoon Combat Remake

Unity3D Game Mechanic Recreation

Personal Project


This project is a recreation of the gameplay mechanic from the game Control. It was created to explore how to easily manipulate UI in world space using DoTween, while also learning how to properly optimize physics and object breaking. The project ended with a DoTween system and optimized physics with breakable crates/barrels, as well as animated UI in world space.

Control: Telekinesis Mechanic Remake

Prototypes

Unity3D Adventure Game


Actively developing a 3D adventure game in a beautiful rendered forest where you fish, take pictures of animals, fill out a journal, go on a scavenger hunt.Creating all the mechanics such as the AI, fishing, picture taking, UI.Also using assets to help with the feel/look of the game such as the Quibli Shader, Bakery, Rider Flow, and the Odin Inspector so that I may create tools for my designer.

Pickford Pines

Custom Ecosystem AI Behaviors

Personal Team Project

Survivor-Like with Crafting

Unity3D Game Mechanic Recreation

Personal Project


Created to develop a Vampire Survivors-esque system with the twist of everything needed to be crafting. I wanted everything to be manipulated such as-Bullet Movement
-On hit effects
-Effects that happenend every some odd seconds
-Etc
In the end, I developed a module system that allowed Designer's/Developers to create any effect they wanted and easily implement it in game.

Game Jams

Jam - WWI November 2022

Mini Jam Theme: 5 Second Gameplay


2 Hour Game Jam. Made a Warioware style mini game with randomized levels. Wanted to make a game where the only action was fire a bullet and hit the apple. The catch was each rectangle that a bullet collided with changed the properties of the bullet.With only two hours, I went with simple sprites and let the gameplay take over. I wanted to add more effects, but ran out of time as I was too focused on level generations to make each level beatable.

5 Second Game Loop

Unstable Rockets

Jam - WWI October 2022

Mini Jam Theme: Unstable.


2 Hour Game Jam. Since the theme was unstable, I created a system where you could not control a rocket launcher. Each rocket that was generated, picked a mutation that it acquired. It could Pick 1-4 mutations. While the whole system could take any kind of mutation. Within the time frame, I was able to create 8 different movement mutations.I had to create a serialized system so I could store non-monobehaviour scripts in an array so that when a rocket was created, it would create a copy of one of those serialized mutations and attatch it to itself.

Description

Shadow Beasts was created using the Unreal Engine over the course of 2 weeks for the Pirate Software Jam. Crafted by a dedicated team of:
1 Programmer
1 Tech Artist
1 Sound Engineer
1 3D Modeler

The theme of the jam was of: "It's Spreading"

While the team first struggled to come up with ideas, we had decided to land on something simple and unique. Much like Alan Wake we wanted to use light as the main feature.

Thus Shadow Beasts was born!

My Contributions

Through out the Jam my main contributions were the two main mechanics of the Game.
- The Lighthouse
- The Shadow Monster

The Lighthouse

The team wanted the lighthouse mechanic to be the central mechanic of the game.My First Goal with this was for the player to just rotate in one direction and have it move the light. When this was completed. The next thing I wanted to do was add the ability to move it in the direction you were facing. This is where it got tricky, as there were many solutions, however, most of the solutions made it feel very rough. I dug into some examples of how other people might have done this, and in the end decided to do my own solution and use Vector Math. Using my own solution, I was able to control how smooth/rough it would be to mimic moving something heavy while also taking in account the player's velocity.The solution can be found under the gif to the right

Shadow Monster

We wanted the shadow monster to be sneaky and fast. However we also wanted the player to use the flashlight whenever we shined the flashlight on the monster. So I used Unreal's Behaviour tree to determine the state of the shadow monster between it wandering, chasing the player, or being disintegrated.


Achieving The Lighthouse Rotation

The First thing I had to do was get the player's velocity. This was done using the Dot Product of player's Velocity with the Forward Vector of the Player, I then normalized it.This gave me the result of 1 if moving forward and a -1 if moving backward


The next step in this process was seeing if you were on the right or left of the object. This was done so I knew which way to rotate on the Z-Axis. This was normalized again so I was working with 1 and -1. This is imperative down the road.


I took the previous step, and multiplied the Vector of the player by the side we were on.



Before I made any more calculations, I wanted to also determine the look at point (where the player would look) while rotating the levers.



This was the final calculation I needed to. Once again using the Dot product, I got the forward vector of the light and compared it to the player. I then normalized it again so would get a 1 or a -1



This was putting everything together. After multiplying all the 1's and -1's into the Variable NewZ. I then added it to the relative rotation by lerping the old position to the new position in the "Add Relative Rotation" graph

The Whole Blueprint

The Final Result


Description

Introducing 'A Reel Mystery,' a captivating creation born during the lively 2-week event, the Cozy Autumn Jam 2023. Crafted by a dedicated team comprising:1 Visionary Producer
2 Skilled Programmers
1 Talented Tech Artist
3 Creative Artists
2 Masterful Sound Designers
This project was nothing short of ambitious, driven by the desire to craft not just a game, but an experience—an enchanting world designed to be both beautiful and deeply relaxing. The goal was to create something that could be cherished long after the main story's completion, with new and delightful content waiting to be unlocked, ensuring players' enjoyment persists even after they unravel the game's initial mysteries.

My Contributions

I had the pleasure of creating the following mechanics of A Reel Mystery- Fishing
- Full Dialogue
-Cutscenes
- NPC's that walk around

Fishing

Crafting the fish system was a quest for simplicity intertwined with engagement. My aim was to avoid overwhelming the player, opting instead for an experience that was easy to grasp yet deeply involving. Delving into a plethora of fishing mechanisms in various games, our team discovered inspiration in the tranquil waters of Moonstone Island. Drawing from this inspiration, I initially mirrored the circular movement mechanic, delicately guiding players over the fish.Yet, I craved innovation. To inject excitement, I introduced Quick Time Events, adding a dash of urgency to each encounter. The thrill of swiftly responding heightened player immersion. Then, as a satisfying crescendo, the triumphant moment when a caught fish gracefully leaped out of the water, delivering a profound sense of accomplishment.In the end, the fusion of these elements birthed a system that not only met but exceeded my vision. Its elegant simplicity and thrilling engagement make it a cornerstone of our game, leaving me immensely satisfied with the outcome.

Dialogue

When the team embraced the idea of incorporating dialogue into our project, I envisioned a dialogue system reminiscent of the charming interactions in Animal Crossing. In this vision, I saw animated sequences seamlessly woven into conversations, bringing characters to life with expressive gestures and emotions. Additionally, I was keen on empowering players with choices, allowing them to influence the direction of the story. To bring this vision to fruition, I meticulously designed a comprehensive Dialogue system. Within this framework, animations found their purpose, enriching dialogues with visual depth, while choices acted as catalysts, branching out the narrative into diverse and engaging pathways. This holistic approach not only elevated the storytelling experience but also injected vitality into our game!

Cutscenes

These charming vignettes were strategically scattered throughout the game to enhance the player's experience. To seamlessly incorporate this feature, I ingeniously integrated it into our Dialogue system. This fusion not only ensured ease of use but also transformed mere conversations into dynamic, visually engaging experiences, adding layers of excitement and depth to the gameplay.

NPC's

Initially, our team had opted for static NPCs, but I had a vision: to breathe life into our game by allowing NPCs to roam freely. Despite the need for further refinement, this decision undeniably enhanced the game's ambiance. Witnessing NPCs moving about added a vibrant, dynamic quality to our camp, making the entire environment feel genuinely alive.All it required was harnessing Unity's NavMesh feature and investing effort in configuring their movement abilities. Through adjustments of their navigation paths, we achieved the dynamic NPC behavior that breathed vitality into our game.

Description

The Demon Delivery Server was created for the 72 Hour Game Jam Ludem Dare 53.It is a very over the top ambitious project that I am happy to say was feature complete barring some bugs.I led a team of 8 with the intention of creating something over the top. More over the top then the previous Ludem Dare game, Midnight Harvest. This was the result. A fully Physics based Parkour game with a procedural dungeon, with a modifier system that alternates how the dungeon spawns, how enemies will interact and how you will preform

My Contributions

- Led a team of 8 developers-Programmed the Physics Based Player Movement- Programmed the grappling hook mechanic- Programmed a fully procedural dungeon system.-Programmed a Modular Modifier system that interacts with every part of the game-Collaborated with the Designers on the look/feel of enemies, the look and feel of movement

Player Movement

One of the main goals the team had was to incorporate physics-based movement, like in Quake. I assigned myself the task because I thought it would be a fun thing to learn. Needless to say, I spent a lot of time tinkering with the values of the custom Scriptable Object I created to get the movement just right. There is still a lot of work to be done, but I am happy with the result. Adding the grappling hook was the most fun I've had, and it complemented the movement mechanics well.

Modifiers

I wanted to add replayability to the game. So I introduced a Modular Modifier System. This system introduces new ways the player will interact with the dungeon, how the dungeon spawns, and how enemies work. Through out the Jam I was able to program in 12 modifiers.
- Lower Gravity
- Bouncy Ground
- Slippery Ground
- Spawning Enemies based on health remaining
- Enemies become Lighter
- Spawning more grapple points in room
- Spawning
Through using the Odin Inspector and it's custom serialization system, I was able to easily do plug n play modifiers which which led to me creating so many modifiers in the short amount of time

Dungeon Generation

The next big thing I contributed was the dungeon generation. The system itself was a very simple system.
There was the entire Dungeon Builder which handled building the rooms by using the Room Template Scriptable Object I had created. Which held a Room script, the weight of the room (how often it could spawn).The Room Script itself was the brains of the room. Each room had an objective that you had to complete to move on to the next room, and held everything that the room needed to spawn/achieve it's goal.

Post Mortem

This is one of those cases where everyone did fantastic work, but when it came time to put everything together, it fell apart. There were several factors at play, but it can be boiled down to being out of scope. Despite this, I am proud of what I achieved and wish the game had been released in a better state.
I was shocked that I was able to get everything I wanted done while leading two programmers (including myself), two designers (a modeller and a concept artist), one tech artist, and two sound designers. I want to give props to those who led. It's very hard to lead people and keep everyone on the same page.
In the end, I'm happy overall. I'm disappointed, yes, but I learned a lot and am excited for the next jam!

Midnight Harvest

Role: Team Lead/Unity Programmer

Description

Midnight Harvest was created for the 72 Hour Game Jam Ludem Dare.It is a very ambitious game that I am glad to say was fully finished with everything the team set out to do.I led a team of 7 with the intention of creating something over the top. This gave birth to Midnight Harvest a hybrid between Top Down and FPS. The main goal of the game is to survive as long as you can, Harvest crops to get seeds to plant more, or convert the seeds to different kinds of ammo that do different things, and in between waves: switch to top down to re-plant crops and plan for your next set of wave

My Contributions

- Led a team of 7-Programmed the player movement- Programmed the FPS Mechanics- Programmed 9 Custom AI behaviors (3 Enemies each with 3 variants)- Programmed a Save System that saves stats after every run- Programmed the growing of the crops-Collaborated with the Designers on the look/feel of enemies-Programmed custom UI Behavior to differentiate Top Down/FPS

Post Mortem

Plain and simple. 72 Hours is NOT enough time for something like this. But we did it. I am very very proud of my team for what we created. I lost several hours of sleep.That being said I learned a lot. Especially leading a team. Which I want to talk about.

Plain and simple: 72 hours is NOT enough time for something like this. But we did it, and I am very proud of my team for what we created. Even though I lost several hours of sleep, I learned a lot about leading a team, which I want to discuss.
I led a team of 7 people, including 2 programmers, 3 artists, and 2 sound designers. I was able to keep everyone on track by giving them tasks and playing to their strengths. I knew what I wanted and planned accordingly. I also picked up the slack where it needed to be picked up. For myself, I did a lot of coding that was out of my comfort zone, such as AI and Grid Based things, and I learned a lot. I also helped out with the growing process. Whenever the other programmer needed something, I was there ready to help. I would love to work with this team again and make something this ambitious. We connected well, had a lot of fun, and it reminded me why I love doing this.

Game Of Clones

Role: Unity Gameplay Programmer/Optimizer

Description

An escape room game with the goal of analyzing team's communication skills with each other throughout the overall experience. Teams will read clues, solve puzzles, and interact with objects within the game to find a way to escape each room before the timer runs out

My Contributions

- Handled programming mechanics of the game and worked with a team of designers and programmers.
- Created the mechanics for the rooms, which were networked using the Photon Engine in Unity.
- Worked with the designers to create cut scenes using the Unity Timeline feature.
- Created tools that the players would use throughout their experience with this game
- Optimized For WebGL to achieve a large rendered world at 60 Frames a second.

Challenges

- Led the upgrade of the of the Unity version in the overall project.-Worked around Webgl and it's limitations-Generated random elements and networked over the Photon Engine

Agency Secrets

Role: Unity Gameplay Programmer

Description

An escape room game that, with the goal of analyzing team's communication skills with each other throughout the overall experience. Teams will read clues, solve puzzles, interact with objects within the game to find a way to escape each room before the timer runs out

My Contributions

- Handled programming mechanics of the game and worked with a team of designers and programmers.
- Created the mechanics for the rooms, which were networked using the Photon Engine in Unity.
-Created a Lobby system that allowed players to join and ready up before the game started
- Worked with the designers to create cut scenes using the Unity Timeline feature.
- Created tools that the players would use throughout their experience with this game

Challenges

- Designing the backend mechanics that would be used in the current game and future games-Worked around Webgl and it's limitations-Generated random elements and networked over the Photon Engine

Description:
A study in battle mechanics; this project is a recreation of the turn based battle system featured in "The Legend of Dragoon". The battle system also boasts a unique timing based combo sequence, which adds an additional layer of complexity.

Legend Of Dragon Combat Remake

Combat Research

The Goal

The goal of this project was to research how the combat functioned in the famous Playstation 1 game, The Legend of Dragoon, and learn how to recreate it's timing based combat system 1:1.

The project not only ended with my intial goal completed. I was also able to create a modular plug n play system so that anyone could take my code and put it in their game. I was able to utilize the Odin Inspector to it's full potential by using it to create my own serialized Character Controller scriptable object. While also creating my own animation system that handles the combat animations.

Challenges:

The first challenge that I ran into while creating this project, was researching how everything synced with each other, from the beginning running state all the way to the end. I initially spent a few days researching and watching YouTube videos frame by frame to figure out the timing. Which then became the second challenge.Timing plays a huge role in this type of combat, from the timing of the player running to the enemy to the timing of the button hit. Everything had to be programmed to be able to use these really tight timings.

The final challenge that I had set out to solve, was creating a modular system that was close to plug n play as I could get it. While I did achieve this, it requires some dependencies that some users my not have.

Post Mortem

I set out to create this combat, as it is near and dear to my heart. One of the reasons why I wanted to do what I do. And I am glad to say that I achieved what I wanted. There is definitely room for improvement, such as optimization, refactoring to make the code cleaner. I am proud of the system I created and the amount of time I spent going frame by frame to make sure timings were correct was a pain, but worth it in the end!

Control: Telekinesis

Mechanic Recreation

The Goal

The goal of this project was fairly simple, take the famous mechanic, Telekinesis, from the hit game Control, and re-create it from scratch. This includes, but not limited to: UI, Animations, the actual throwing mechanic, chain reactions.I ended the project achieving what I set out. Recreate the mechanic with everything I wanted.

Challenges:

Having the object "Pull" itself to the Hand and look like its floatingI worked around this by first doing Vector3.Lerp. However I wasn't getting the result I wanted, so I used DOTween instead, which gave me the result I wantedAdding force and having the object going towards the direction of the cursor point in the middle of the screenThis was for some odd reason the "hardest" thing for me to do. And went through several iterations to get something that felt good, and went in the direction I wanted to do. I ended up just shooting a Raycast from the middle of the screen. and then AddForce to the relevant point that was hit minus the position of the object in hand.

Post Mortem

It was a busy week for me, so what I got done, is pretty awesome. I am glad I improved my skills, but the huge takeaway with this, was I should not use Unity's Third-person Controller. While it was great and saved me A LOT of time. I was locked into a lot of things. I;e The new input system, I had to use very specific animations, I had to change some things about the character controller. So starting next week, I will probably build my own universal character controller. That way I can do what I want and not have to mess around with pre-made things. Also I learned I'm not great at art!