My Role

My role in the project was mainly AI programming, as that is my expertise.
I implemented the behaviours of all 11 enemies and make them networked correctly. I also worked on the A* Point Graph, Behaviour Tree- and wave spawning systems.
Other than AI programming, I also put a lot of time into the PlayStation port and implementing the PlayStation requirements.

  • Creating the behaviours of all 11 enemies (see below for more information)
  • Improvements on the custom A* Point Graphs for crawling and flying enemies.
  • Improvement on the custom Behaviour Tree and Blackboard systems
  • Creating the wave- and spawnpoint systems
  • Creating multiple tools for navmesh generation and wave systems
  • Creating enemy difficulty scaling and modifiers
  • Creating multiple enemy related systems (e.g. relocation-, phase-, targeting and status effect systems)
  • Implementing most PlayStation requirements
  • Implementing Unity Cloud Save- and Friends systems
  • Implementing Photon Fusion Networking on all my multiplayer behaviours and systems
  • Other minor AI and gameplay programming related tasks

Enemies

Description

grunt

The Grunt

The grunt is a simple but fearsome foe, they attack by slashing at their target. Even though they don't do much damage, they come in dangerous numbers.

For the grunt I had to implement the main 3 behaviours: Targeting, Moving and Attacking. I also had to put my behaviours together in a custom Behaviour Tree and make the movement work with the custom A* point graph that allows these critters to walk on walls.

The most difficult thing I had to do for the grunt was setting up all base behaviours and blackboard systems, these I would later reuse for other enemies.

Spewer

The Spewer

The Spewer is a more complex enemy, using their range to spew acid spit at their targets.

For the Spewer I had to make my first real attacking behaviour script. I made this script in a way so that it can be expanded upon and reused for other enemies. I also implemented and refined the basic behaviours I had made for the Grunt.

The most difficult thing I had to do for the Spewer was the relocation behaviour. This behaviour would allow the Spewers to find new attacking positions when their target goes out of sight.

Flyer

The Flyer

The Flyer is the first enemy that is completly different from the others. This is because they fly, they are quick, nimble and annoying to deal with, much like mosquitos.

For the Flyer I had to implement a whole new moving system to allow the Flyers to use the A* Flying Point Graph. I expanded on the Spewers ranged attack to make the Flyers ranged attack similair but distinct and I created the relocating behaviour for the Flyer.

The most difficult thing I had to do for the Flyer was creating the ZigZagging behaviour. The difficulty mainly came from the networking side of it.

MudMuncher

The MudMuncher

The MudMuncher is one of the most annoying bugs out there. They hide under the sand and wait for the perfect moment to strike their target.

For the MudMunchers I had to implement new behaviours that would allow them to be hidden from the player when moving and only being targetable when they attack. I had to design their attack from the ground up, it mimics their movement and is able to go up slopes.

The most difficult thing I had to do for the MudMuncher was their targeting, due to the nature of their attack it was hard to figure out if it could hit. They also had to attack frequent enough so they wouldn't be too annoying.

Spinner

The Spinner

The Spinner is fast, very fast. Once they see you they will spin up and launch themselves at you, causing a big BOOM.

For the Spinner I had to refine the movement behaviour as they move in two ways: walking and spinning, both have different speeds and animations.

The most difficult thing I had to do for the Spinner was refining the pathfinding. Since the spinners moved very fast, it would become very apparent if they had some weird "kinks" in their pathfinding. I had to smooth the path in an optimal way that would still account for obstacles but also make it go direct towards the player.

Tank

The Tank

The Tank is a sturdy foe, protecting other bugs with their massive shield and stomping on you with their ram. Taking a tank out is priority number #1.

For the Tank I had to do a lot of work, since they have 2 unique behaviours, the Shield and the Ram. For the Ram behaviour, I had to make a new custom move behaviour that would use a different pathfinding system.

The most difficult thing I made for the Tank (and all enemies) was the Shielding behaviour. When the tank shields, a barrier pops up around them, blocking bullets until it is destroyed. The shield also gives other nearby enemies a shield that regenerates as long as the Tanks shield is active.

Mini Bosses

The Mini Boss(es)

The Mini Bosses are powerful bugs that are an evolved form of some of the basic bugs, each with a more powerful attack.

For The Mini Bosses I made a few new systems and behaviours. Including a Phase System that would allow Mini Bosses to get stronger the more damage they take, causing their phase to change. I also made a new relocation system that allows bosses to rotate around the map without walking.

The most difficult part of the Minibosses was making their attacks. Since there are 4 minibosses, I had to make 4 new attacks for them, ranging from a swarm of stingers to stalgmites to a laser!

Queen

The Queen

The Queen is the scariest of them all, the big foe that you have been working towards, defeat her and this will all be over.

For the Queen I had to make a whole new behaviour for attacking and had to improve on the Phase System. The queen would start spawning minibosses in her phases, instead of upgrading her attack.

The most difficult part of the Queen was tying everything together. She uses all the attacks of the minibosses as well as two compeletly new attacks. To make sure there were no repeat attacks with the minibosses and herself, I had to implement a sequencer in her behaviour tree.