Arizona Bones is a game made over the course of a single semester by a team of ten. I was the primary programmer for the game and have created a system that is broadly applicable to any 2D platformer.
Above is a visualization of the most essential gameplay scripts and their relationship to each other. Note that both the player and NPCs use the same systems for consistency.
As the gameplay programmer for this project I was responsible for creating all of the systems for both movement and combat.
I designed these systems to be modular enough that any of the components can be combined for various effects. For example the damage script can be added to various attack prefabs or it can be placed on a lava pool for constant damage on contact. Of course, the health script allows for immunity to certain types of damage so you can have dinosaurs that can walk across the lava. This can also be used to make walls that are only broken by certain types of attacks.
These systems are intended to be used in many 2D platformer games beyond just this project.
Here is the inspector view of the damage and health scripts. There are lots of variables for designers to adjust as desired. I like to use animation curves. This project was relatively simple, yet future games may need to have shotgun or explosion attacks that do less damage or grow in size over time.
As I continue to develop these systems for future projects, I plan to split the massive movement script up into smaller, more modular components. That way enemies that can't climb, jump, or slide don't need the deadweight of all these extra variables.
Whenever possible I also include an option to spawn effect prefabs for various actions. I also implemented object pooling though so that spawning and de-spawning the same effect repeatedly won't effect performance.
As with all of my scripts, the movement system has plenty of options for designer input. The speed and acceleration of a character determines a lot about the feel of a game. Having a jump that responds to how long a player presses that input along with highly customizable gravity stats also contribute to making an overall enjoyable platforming movement system.
Each character is composed of a series of colliders that can be set to interact with specific layers in the scene. This means that ledge grabs and wall jumps can be limited to certain types of terrain if you so choose. The character can also change layers while dashing which allows them to slide past enemies and obstacles that they may normally collide with.
The weapon wheel was added late in the second half of development to easily visualize useable items.
In addition to the core systems I have described, I also worked on a lot of other essential elements for the game. This includes the actual AI of enemy dinosaurs which was a new challenge for me. The behavior is not particularly advanced, but has some options for customizing how they react to the player such as being naturally aggressive or territorial. There is a stealth and decoy system in the game too so that the player can hide in bushes to avoid detection or throw things that distract the dinosaurs.
I also created a weapon wheel so that players can quickly change what item they have selected. This involved learning and working with the other programmer's inventory system. I had to create a save system as well so that the player's progress and inventory persisted after dying. I was also responsible for implementing all of our artist's animations.
I consider myself a well rounded and experienced programmer that works well with other programmers, artists, and designers. I work hard to create systems with flexibility and features that are easily understood. I am good at communicating issues as they arise, and even foreseeing where potential problems may appear in the future so that they can be avoided. Overall I think my expertise developing games with Unity is an asset to any team.