MICAH MATEO VARGAS

Game Developer

INFO

Project Type:
Development Engine:
Programming Language:
Other Tools:
Team Size:
Role:
Duration:

Game Development
Unity
C#
Github
5
Developer
6 months

ABOUT

Project Spiral screenshot Project Spiral screenshot

Project Spiral is a an extermination job that went haywire because that damn wizard casted the wrong spell on a little creature. It now gets stronger and stronger and transforms into a more powerful foe every time it's defeated.

Spiral's gameplay consists of a series of boss fights. After defeating each transformation, the player gets to 'build' their character. They get the option to refill their health or choose a new item. Items replace the character's primary attack, secondary attack, or have passive effects. By combining various items into a 'build', different playstyles emerge.


Using Spiral Development

This project is being created using the spiral development methodology. This involves creating a series of feature-complete builds, or “spirals”, that qualify as finished games, regardless of the amount of content they contain. Each spiral builds upon the previous and adds more content or features to the game, but at the end of each spiral, the game is in a finished state. A finished state is defined as being playable from start to end with all included features in a complete state.

A major advantadge of this process is how it relates with scope. As each spiral is an iterative step forward, it also leaves the game technically complete as is.

To keep track of our updates to the game, we used a three-number build numbering system. The first number represents the major version, or the state the game is in. During development, this number was a 0, because the game was in a pre-release state. The second number represents the spiral we were on. This number was incremented each spiral. The third number represents patches, typically quick bugfixes made after the spiral is completed.


Developed Content

One standout story among the content I created was the boss 'Basilisk' and movement item 'Grappling Hook'. With spiral development, we've prioritized the reuse of code where possible to quickly create content. We've built this idea into our game idea, with the objective of reusing standout boss attacks as items. One such example of this was a boss I created, the 'Basilisk'.

As an intro to the Basilisk: it was designed to roam, place down permanent hitboxes creating a hazerdous field, concentrate it's hazerdous area in the middle if being circled, and to launch a tongue attack that sticks the player and drags them to it's mouth. This combination resulted in a boss that acted somewhat "campy".

The functionality of the Basilisks tongue attack were made with a Script using a LineRenderer that interpolates between the players position and basilisks mouth, then uses those points to be rendered in Unity's LineRenderer Component.

I quickly realized this functionality could be used for more content, so I morphed the attack into a movement item. Instead of being pulled to an enemy, the player gained the ability to pull themself to anywhere on screen.


Procedural Animation

One of the major systems I've created as part of this project has been a Procedural Animation system.

Our team is made out of 4 programmers and 1 audio specialist. As we don't have any artists, I proposed this system on its merits of being stylisticly interesting and a viable alternative to reduce our artload. We plan to bring on an artist in the future, however with this system in place we only need 3D models. No rigs nor animations necessary.

Procedural Animation is code-driven as opposed to handmade/keyframed traditional animation. The first version of this system is in game and driving the player's animations.

Limbs are driven by a custom InverseKinematics script that uses 3 positions, a mesh, and a target. Using my custom IK, the script calculates the transformations necessary to make the end of the mesh to reach the target or point towards it if it's out of reach. For player arms using positions for the Shoulder, Elbow, and Hand, the players hands are automatically placed in the default stance or to hold a specific item. For the legs using positions for the Thigh, Knee, and Foot, the players feet are automatically placed to their next step location. To drive the legs I also created another script called LegStepper to calculate the next step based on the distance traveled if there's at least 1 foot placed before stepping.

This system while being applied to the player will be used to drive all a cast of varied characters and bosses.