Category Archives: Professional Specialisation

Post relating to the Professional Specialisations module, an element of the MProf Games Development course

Professional Specialisation: Post 6 – Development Update

At this point I have almost completed the prototype for the hand in. There have been several tweaks I will cover later on but I have embedded the Unity project demo below.

(missing unity attachment)

Controls: Left mouse button to shoot, WASD to move. Tap reload to quick reload, hold briefly to perfom a full reload

Shooting: the ballistics modelled are those of an M4. Real world values were put into Unity and then utilised to create something that matches the characteristics of a M4.

Reloading: A quick reload drops the mag (dumping any remaining rounds and moves to the next fullest one. A full reload stores any remaining rounds and moves to the next fullest one. Both take into account the round in the chamber (if there is one)

Injuries: All the enemy characters are using an injury system that models shock and injuries to certain parts of the body. Only the one directly in front of the player will show its damage on the UI

Cover System: The cover system is not yet implemented

 

As mentioned, the cover system is not yet implemented due to several bugs and will be added before the final deadline. But this version shows a good work in progress of the three systems

Professional Specialisation: Post 5 – Focus on Cover Systems

A screenshot from Gears of War showing the cover system in use. The two characters in the foreground are blind firing.

A screenshot from Gears of War showing the cover system in use. The two characters in the foreground are blind firing.

A modern feature used across nearly every third person shooter is the cover system, a way to simply and make more exciting the act of finding cover while under attack. First seen in games like Kill.Switch, the game that truly bought it to the masses was Gears of War. Since then, many other games have tried to implement the system to varying levels of satisfaction.

Put simply, while sticking to cover it pushes the character to match the height of the protection and locks them to moving along the edge they are currently attached to. Once in cover, players can shoot over without exposing themselves (a process known as blind firing) or can pop up to aim over the top.

For this demo implementation, I intend to get the basics working – letting players move to a piece of cover, attach themselves, move left and right and then leave. If there is time, the shooting mechanic will be implemented in addition, hopefully

The best way to make this work is via a state machine. Its default mode is to do nothing. As soon as the player hits the “cover” button, the character will look for cover directly in front. If it finds something, it will move the character towards the cover at its default speed. Once close enough, the machine will move to a “in cover” state, restricting the players movement and putting them into a crouched position. If the player wishes to leave, then simply tapping the Q key will detach them.

This is only a very basic implementation but the idea is to work on it after this project is complete.

Professional Specialisation: Post 4 – Focus on Damage Pt 2

The damage zones outlined on the final model. The largest capsule is the model's collision mesh.

The damage zones outlined on the final model. The largest capsule is the model’s collision mesh.

 

The focus on this post is to look specifically at the second part of the damage system – the individual elements.

The elements are based off two great features that Unity provides – hierarchy and powerful colliders. The elements are game objects that are comprised primarily of colliders but also contain a version of the damage system element script. This calls back up to the Damage System script mentioned previously every time that a hit is registered providing details relating to the projectile such as its kinetic energy. In addition, the system also contains details of an elements hardness which can be compared to a projectile’s energy. If it is below the hardness, the round is halted by it. If it is higher, then the round passes on through, causing damage and passing on through. If its significantly higher then the round causes a catastrophic amount of damage.

The hierarchy allows the elements to be attached to the bones of a character’s mesh so that they move correctly when the character animates. The downside to this setup is that it requires that every element must be placed carefully making sure it fits properly.

Each element can roughly be split into one of three types. Muscle is the most used type, with one is placed over each group of paired muscle. Bone is usually paired with a muscle but is just factionally smaller. The final type is Special which is utilised for various other body parts such as joints, specific organs and such. Each type has a basic differing level of element hardness with bone the hardest and special the weakest.

The final advantage of these separate parts is the ability to use them to affect gameplay. Potential examples could be reducing movement speed for leg injuries up to camera changes if a character loses an eye or such. This is something that needs to be worked and and carefully decided.

The next post will look at the final element of the demo, the cover system.

Professional Specialisation: Post 3 – Focus on Damage Pt 1

The location based damage system has several key aims:

1. Do not use a health point system – although it does a fair job for most games it can lead to unrealistic play

2. Each body part should have an effect – make it that a headshot is not the only shot that is actually useful in a firefight

Working from this idea, I started looking not only at realistic shooters but also at games that feature compartmentalised damage such as vehicle simulators like Steel Beasts or the old Mechwarrior series. One of the things I noticed is that there was a split between systems that had a combination of parts and health points (damage to a part of the body also removes health point) and systems that allow for almost complete annihilation such as War Thunder’s Ground Forces beta where a tank isn’t destroyed unless by a cataclysmic event.

The human body though isn’t an unfeeling machine – if you pump enough damage into it then it will shut down. However, it can still put up with a fair amount once the adrenaline starts pumping. This has lead to the concept of shock. Simply put, if you shoot enough damage into a body in a certain amount of time then the body simply shuts down putting the character into a death state that would require revival.

This works effectively with certain weapon types. In a very simplified way, shotguns become effective as the fire a large number of low velocity (low damage) which impact very quickly thus overwhelming the shock system. At the other end, large calibre rounds do one very large amount of damage that have a very high chance of hitting the upper limit of the shock maximum. In between, various weapons will be most effective with a high number of shots on certain locations while on other more vital points it has the potential for a single shot to do what’s required.

The system will be comprised of two types of component:

  • A controller object on the player’s base element that handles the high level details and acts as the brain of the system
  • The individual sections of the body which will be detailed in the next post.

Professional Specialisation: Post 2 – Focus on Ballistics

The ballistics demo has a few key aims:

1. Model bullets travelling correctly

2. As far as possible, use real world values to make implementation simpler and more accurate.

So the first attempt to do this was using prefabs that are created when the bullet is fired and then rely entirely on the unity physics system to handle the aftermath (applying forces etc) The problem with this is that the projectiles when using real world values are moving too fast for the physics system to comprehend and act upon. This system would allow projectiles to appear in mid air (if the action was paused or slowed down) but in terms of gameplay benefit a purely physical system is unusable.

Therefore a hybrid system is now being used. This combines the physical object with the use of raycasting,  which gives a much faster response than the collisions. This will work by shooting a ray once the round is fired, checking for any contact with colliders before moving the round forward its velocity distance.

Also to note is that a round hitting one character or object does not stop it – instead it merely slows the velocity and allows the round to continue moving if it has enough velocity left. It is only removed after a certain timeout or if the round has no velocity remaining.

Professional Specialisation: Post 1 – Initial Concept

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

CoverDemoImage1

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

[youtube https://www.youtube.com/watch?v=cix07R1vlhI]
 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

Capture

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.

Progress (17/02/2014)

  • 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.