Gameplay Engineer
Capture.PNG

Targe

Targe

 
 

[Github] [Game]

Active Date: November 2019 - February 2020

Development Time: 4 months

Tool Used: Unity

Language: C#

Targe is a third person, action game developed in Unity. The core gameplay revolves around using a shield as a weapon with offensive and defensive capabilities.

I created a team to develop this project and was the programmer and designer for this project.

Main Contributions
- Combat System
- Character Controls
- Camera Controls


Combat System

 
combodemo.gif
 

[CODE]

  • Combat detection is derived mostly from the animations. There are detection points placed on the models which determine collision at certain points of time in the animations.

  • Sizes for attack hit boxes as well as combos vary depending on if the player has the shield equipped. This is kept track of in the controller, regardless if the the shield is actually there or not, it will swap over to the bigger hitbox.

  • Damage functions have access to entity state to determine if damage is actually done or if the entity is in their invulnerability frames after getting hit. This is done in order to avoid having the damage being dealt every frame of the attack animation.

  • The shield is heavily inspired by the axe used in God of War. When thrown, the direction is taken into account and a force is applied to the shield. Then when the shield is called back, the return curve is calculated using a Bezier curve with the position interpolated between the start and destination position.

charcont demo.gif

Character Controller

[CODE]

  • Due to the iterative nature of the development cycle, I would need a flexible system that allowed for quick and simple transitions for animations as well as actions. Due to this, the character controls are set up using a finite state machine. Adding states are as simple as adding a new function and adding an enum that corresponds to that state.

  • The animations would also be handled here due to the fact that the types of animations played are contextual. The exterior factors such as locked on camera or shield equipped would be taken into account when writing the functionality of each state.

Camera Controller

[CODE]

  • The camera has distinct states: Free Form, Locked On, and Aiming. Each state had its own distinct limitations and I had to implement accordingly.

  • Free Form had to be limited vertically with no restriction to horizontal movement. This was achieved by clamping the pitch and yaw of the camera.

  • Locked On would rotate the camera to face the enemy every fixed number of frames. The camera position would be fixed at a certain location behind the player. The player during this state would have no control of the camera.

  • Lastly the Aim state was similar to Free Form. The only difference would be that it would be at a locked position behind the player.

camcont demo.gif