Mothia

Mothia a 3D action platformer inspired by Jak n Daxter

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.

Highlights

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.


Reflection

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.


Time management

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