Mothia was our third project with our own Engine at TGA.
"The Firefly Café has been raided by the Mothia! As a mercenary frog; jump, roll, and spin through the seedy underbelly of the lighthouse island to retrieve the fireflies."
Our group size was: 18
My responsibilites were: AI & Story.
Story: Created an NPC which acts like a guide for the player.
For this project I wanted to delve deeper into AI with behaviour trees and an AI Director.
I combined statemachines and behaviour trees to create the AIs behaviour.
AI Director:
We had encounters which spawned on triggers but what made it special was how the AI Director changed them. When spawning encounters our Level design team put out spots where enemies would spawn, each spawn had a different set of instructions on them which the Director took use of. Instructions would allow enemies to either spawn or not depending on how the player was doing.
Parameters which it took into consideration was: Total time, time between encounters and player skill. Player skill had a couple of points such as hits taken, kills, cool kills etc.
AI Director
For the first time I used Miro to document everything before working on them. I feel that it helped a lot with actually putting it into code afterwards. Here we can see the different inputs the director would use to determine how good the player was.
AI Director Easy encounter
Here we can see the encounter only spawning one enemy because the game doesn't think the player is very good.
AI Director Hard encounter
Here we see the same encounter as before but this time it has more enemies and even a special stationary sniper at top left. This is because the Director believes that the player is better than previously.
Surprising enemies
Surprised enemies are vulnerable and can easily be eliminated.
Losing Line of sight
When losing Line of Sight the AI will try to find them by walking to their last known position.
Bullets and deflection
If you are skilled enough bullets can be deflected, this is one of the most effective ways to eliminate the opposition but it will also affect the way the Director looks at you.
Story/Progression
Created a custom camera and system for our Twiceler over here.
Need to be careful
While the AI alone does not put up a big challenge but when they are huge in numbers they can be quite nasty.
Optimization
I tried to be extra aware of optimization this time and a couple of things am I extra proud of:
- Level of detail on the AI: The AIs Level of detail changed depending on how close the player was. Everything from update, behaviour tree update to rendering of animation/mesh would be affected by this.
- A Frame budget for the AI, if it didn't manage to update this frame it would start where it left off the next frame.
Our Behaviour Tree
What I made was it so the tree determines if I should swap my state or not. This is made with a state machine as well. This worked well but I am unsure if instead having a behaviour tree for each states update instead to do both the task at hand and to swap state if needed.
For P7 I continued to work on both P6 and P5 because we still had stuff left to finish. Thanks to us having a longer pre-prod period and me using Miro I managed to sketch down almost everything needed from my part on P7 which allowed me to work more efficiently.
I took every opportunity I could and went back to our previous projects and worked on them. While this made P7 have less features on the enemies which had to be scratched it did boost everyone's moral because we could see the light behind us and made it so others could focus on P7.
Our Team:
Animation: Sofie Nilsson - Portfolio
Animation: Mischa Fridman - Portfolio
Animation: Jovana Vladusic - Portfolio
Graphics: Anna Christensen - Portfolio
Graphics: Johnathan Von Letscher - Portfolio
Graphics: Elisabet Sarsenov - Portfolio
Graphics: Elvira Aldén - Portfolio
Level Design: Jeff Persson - Portfolio
Level Design: Gustaf Löfkvist Andersson - Portfolio
Programmer: Ossian Sáren Gran - Portfolio
Programmer: Simon Nilsson - Portfolio
Programmer: Kaspian Ringqvist - Portfolio
Programmer: Kristian Svensson - Portfolio
Programmer: Johan Rubertson - Portfolio
Technical Artist: Tyler Thomas - Portfolio
Technical Artist: Jonathan Lindberg - Portfolio
Technical Artist: Janine Wahlberg Özdemir - Portfolio