Abraham Charara

C / C++ Developer

The Cave Prototype
Music Director
The Cave Prototype was the first large project under TORN Entertainment and where I first got truly familiar with Unreal Engine and its tools. It was originally a shooting gallery game inspired by the SNES classic, Wild Guns, before it was changed during development into a third-person shooter dungeon crawler. I was responsible for the guns in the game. This included how the player holds and manages their guns, as well as how the many different guns acted.
My first responsibility was to get basic shooting into the project. With the little experience I had in Unreal at the time, this was a big learning process for me. By the end of the first month, our cube character was able to fire bullets, but the bullets would follow the reticle even after firing. This was something that my teammate, Ryan Wardell, and I would work together to fix later on.
By the end of this month, I had begun to find my footing with the engine. Using our newly developed table for gun information, I first created an ammo system and reloading mechanic as well as a developer interface to see the ammo change in real time. Next, I created a gun carrying system where the player can hold multiple guns and switch between them. This involved an array of structs, where each struct was a gun with its name, current ammo, and total ammo. Finally, I had created gun objects that can picked up by the player. Picking up a gun would automatically drop the currently equipped gun.
Final exams and being very sick during this month left me with little room to do anything substantial, but that didn't stop me from at least trying to help the project along. This month, I had cleaned up the player character's blueprints by breaking down blocks of code into functions.
This month focused on further developing the current systems in place, such as not allowing the player to reload when they run out of total ammo, picked up guns taking empty gun slots, and empty gun slots being skipped over if the player switches to them. Picking up and dropping guns was also in a finished state, as the dropped guns now retained their attributes, (bullets left in their mag, for example) when they were dropped onto the ground. I also updated dodging to function less like a jump, which did not work with slopes, and more like a fast movement over a certain number of units. Finally, the planned-out numbers for enemy health and gun attributes were implemented into the project.
With the current systems in a good place, I moved on to new content. One thing I was excited to get to was the shotgun. I implemented a "gauge" attribute to the gun table which shotguns (guns with "shot" set as their firing system) would use to determine how many bullets come out of a single trigger pull. I had to rework how shooting a gun functions to prevent a single shot from playing multiple sound effects and consuming multiple bullets. There were also several small bug fixes throughout the month.
Once the shotgun was far enough along, I shifted my focus over to one of our core mechanics for the game.  Attachments can be picked up and added to the player's gun if their gun has the correct attachment slot. A separate table was created that tells each attachment to augment the player's gun in a certain way. This can be by increasing accuracy, decreasing spread, etc.. If the player has already filled an attachment slot, they will drop their attachment when picking up a new one.
At this point in development, the game was far enough along that we started to get an idea for how it would turn out, and we ultimately did not want the game to be a pure shooting gallery. We brainstormed many different ways to mix in other shooter genres. This is where I began experimenting with fixed cameras in every room that follow the player like a security camera. The plan was for the player to enter a shooting gallery mode when they reach a combat room with enemies. After creating the new camera system, I wrote out a small document that showcases how it works and how to use it.
In the end, our brainstorming lead us to create a third-person shooter where aiming at enemies puts the player into our shooting gallery mode. For this shift in genre, I created a toggleable lock on system that selects the nearest enemy in front of the player, activates a 2D marker on them, and switches to a camera that always keeps the player and enemy in focus. If the player aims while in this locked-on state, they will automatically turn to face the enemy. The player will stay locked on until they either get out of range, kill the enemy, or toggle it off.