The aim of the practical side of this module is to design and implement three gameplay demos. The demos will be implemented using Unity, a middleware chosen to allow gameplay to be the focus, as opposed to having to write engine level code such as rendering.
The topics chosen for development are three very common elements used in a third person action game. Each of them present a different challenge for development:
1. Third Person Cover System
Early mockup of the cover system using the Mecanim character model.
The cover system is going to be a simple version of system seen in games such as Gears of War or Spec Ops: The Line. The system will allow the player to move to cover, change position along it, peek over the top or around corners, transition between two pieces cover (within a set distance) and then exit cover to move on.
The cover system will also look into adjusting the players ability vision over cover. This is designed to prevent players sheltering behind cover from spotting enemy players without risking a peek (thus exposing themselves)
The main focus of the implementation is the gameplay so animation is not a high priority but will be modified if time allows.
The first stage is to get a character to move and stick to cover and properly leave. This will not include an updated set of animations – those of the built-in character in unity will be used.
2. Realistic Ballistics
A video detailing the detailed physics of the Bohemia Interactive game ArmA 3.
The ballistic system is designed as a framework that would allow designers to create a selection of different firearms and model the different sized and powered rounds they fire. This needs to correctly model the relationship between a round’s velocity, weight and impact force.
An advantage of Unity that helps this implementation is the fully featured Asset store that has several useful plugins to aid in the creation of physics systems. Analysing these plugins is one of the first steps of development to hopefully ease the transition of values between real world values and Unity’s in-engine values.
The first stage is to choose a physics helper and then begin implementation that allows an entity to fire a projectile governed by physics. This first projectile type will be generic but the aim is to make it match the physics of the NATO 5.56mm round due to its widespread use in games.
3. Location Based Damage
Very early stage of development showing the huge leg zones and hip area. Since development, knee joints have been shrunk to a sensible size and the large muscle groups have been split to improve their reaction to animation of the player
To tie into the ballistics system, a system of location specific damage is going to be created. The idea with this is to create a system that allows a game to inflict damage relating to which body part has been hot. This is commonly used in RPGs (both tabletop and video games) but is commonly down to a vague sector. My implementation will create a more detailed system.
The plan is to use a series of colliders (a key part of Unity) to represent areas such as bones, muscle and key additional parts. Each is then assigned a value to represent its strength or ability to withstand damage. When an attack impacts it passes through the various colliders, losing speed at each stage. Each section damaged will inflict an effect on the player – injuries to the legs reduce movement (broken bones more so then damaged muscle), arm shots reduce aim and such. The system would also allow other effects such as deafness (turning off a players audio) or masking part of the players field of vision.
Another element is a system to approximate shock. To model the effect of multiple impacts, a quickly regenerating value is reduced by each impact. If the value reaches 0 then the affected player falls into shock effectively rendering them ineffective.
To begin with, the first stage will be to create the system just using the largest and most used zones, the large muscle groups. This will create a 2 colliders per limb, with additional zones for the upper and lower chest and head. The large zones will contain the other and provides a good generalised start.
- Initial design and concept complete
- Creation of Unity workspace focused on development
- Cover System – creation of tags to be used by the system. Setup of the various functional states to be used
- Ballistics – Evaluation of several physics tool-sets. Research into projectile physics
- Realistic Injury – complete version of lower body zones planned and added to a unity structure. Creation of the scripting side of the system has begun.