A game project (especially when "indie") rarely stays the same from beginning to end. This talk will highlight how the design and the scope of FATAL ERROR evolved in time, following the feedback we gathered during events or through Early Access, but also because of external forces, like the situation of the Steam marketplace. The process and the reasoning behind big and small changes will be detailed with the help of drawing, sketches, bits of code, and screenshots.
4. MILAN 20/21.11.2015 - CIRO CONTINISIO / ENNIO PIROLO
Where it all began...
FATAL ERROR was born in Oct 2013.
A prototype meant to be shown at GamesWeek Milan alongside
UFHO2. We had just 2 weeks to make it
Three basic needs:
● Established genre > easy to understand controls
● Multiplayer (better if 4 players)
● Quick matches (around 3 minutes)
6. MILAN 20/21.11.2015 - CIRO CONTINISIO / ENNIO PIROLO
First prototype
Blocky aesthetics > Pixel art textures and particles
7. MILAN 20/21.11.2015 - CIRO CONTINISIO / ENNIO PIROLO
Something unique
Same screen multiplayer > Shared information
Can we hide something from some of the players?
We can hide the input on the controller!
8. MILAN 20/21.11.2015 - CIRO CONTINISIO / ENNIO PIROLO
Teleport mechanic
1. Players enter a black hole, disappears
2. Chooses an exit with one of the 4 coloured buttons (XYAB)
3. Comes out of that exit as a compacted robot
4. Many compacted robots, only the player knows which one he is
Hidden information!
5. Surprise attack!
23. MILAN 20/21.11.2015 - CIRO CONTINISIO / ENNIO PIROLO
4-player tutorial
● Moving
● Aiming
● Shooting
● Using the sword
● Using the Transport System (stealth)
● Taking the Battery (Gem)
How much can we fit in one fourth of the screen?
37. MILAN 20/21.11.2015 - CIRO CONTINISIO / ENNIO PIROLO
Issues with the robots
● VERY blocky (“The washing machine”)
● Difficult to tell apart from each other
● Can’t tell where are they facing (useful when defending)
● They were just plain ugly
65. MILAN 20/21.11.2015 - CIRO CONTINISIO / ENNIO PIROLO
AI in FATAL ERROR: why?
● Market needs
a. What if a player buys the game AND he’s alone?
b. What if a player gets addicted and wants to improve?
● Players need to play the game alone TOO
66. MILAN 20/21.11.2015 - CIRO CONTINISIO / ENNIO PIROLO
AI in FATAL ERROR: Requirements (1/2)
So...
● We need players moved by computer (BOTS)
● Bots should behave like a human player
a. Take the battery to the base to score points
b. Use the stealth mechanics
c. Search and kill others who are taking the battery home
d. And many more behaviours...
● Bots should be more or less good based on a difficulty setting
67. MILAN 20/21.11.2015 - CIRO CONTINISIO / ENNIO PIROLO
AI in FATAL ERROR: Requirements (2/2)
And...
● The system should be modular
a. New game mode?
b. New stealth mechanic?
● Never throw away anything! The system should be reusable
a. After FATAL ERROR?
b. For another game genre?
68. MILAN 20/21.11.2015 - CIRO CONTINISIO / ENNIO PIROLO
AI in FATAL ERROR: The structure (1/3)
69. MILAN 20/21.11.2015 - CIRO CONTINISIO / ENNIO PIROLO
AI in FATAL ERROR: The structure (2/3)
ABehaviour PseudoCode
...
Update(){
newBehaviour=null
FOREACH connectedBehaviour AS beh
IF beh.mustBeActivated() THEN
newBehaviour = beh
CONTINUE
END IF
IF newBehaviour!=null THEN
this.OnUpdate()
ELSE
this.deactivate()
RETURN newBehaviour
}
70. MILAN 20/21.11.2015 - CIRO CONTINISIO / ENNIO PIROLO
AI in FATAL ERROR: The structure (3/3)
Bot PseudoCode
...
Update(){
CurrentBehaviour = CurrentBehaviour.Update()
PassBehaviourInput()
}
…
PassBehaviourInput(){
GameManager MovePlayer ID by moveVector
GameManager ModAimOfPlayer ID by aimVector
}
71. MILAN 20/21.11.2015 - CIRO CONTINISIO / ENNIO PIROLO
AI in FATAL ERROR: Examples (1/3)
Find The Battery
MustBeActivated:
is there a battery in the
scene?
Target:
followPath to the
battery
Enemy in sight:
aim and shoot!
Enemy not in sight:
ignore
72. MILAN 20/21.11.2015 - CIRO CONTINISIO / ENNIO PIROLO
AI in FATAL ERROR: Examples (2/3)
Some seconds later..
Green Bot has taken
the battery
Take Battery to Base
Kill the Enemy with
the Battery
73. MILAN 20/21.11.2015 - CIRO CONTINISIO / ENNIO PIROLO
AI in FATAL ERROR: Examples (3/3)
Team Play
Support Mate With Battery
MustBeActivated: my team
mate has taken the battery?
Target: choose a position in the
middle of the path of the nearest
enemy to my team mate