Project: Spite: New Sun

Project Description

Engine: Fraktal Oktav (in-house) and Unity (editor)
Duration: 12 weeks
Genre: Hack and slash (Diablo-like)

Contributions

  • Navmesh (A* and Funneling)
  • Enemies (Behavior Tree)
  • Collision System
  • Trigger System

I implemented navigation on a navmesh that we used in this project. This included implementing the A*-algorithm and the funneling-algorithm in order to find the shortest path for an agent to take.

The implementation included raycasting on the navmesh to find where the user clicked and finding the closest point inside the navmesh when clicking outside.

The closest point inside the navmesh is calculated when clicking outside

Enemies

I created the behaviors for both enemy types (grunt and mage). This included creating a behavior tree from scratch and implementing the different leaf nodes that were going to perform some action.

To make the movement more smooth I also implemented steering behaviors and a movement controller that the enemies used. This allowed the enemies not to walk into each other (using separation) and feel more realistic.

Collision System

I created a collision system, supporting different shape types including: AABB, Sphere, OBB, Point, Ray collisions.

The system supports layer filtering which was used to filter different collisions, allowing us to not let the player abilities collide with the player for example.

Trigger System

I updated and refined my system from the Stella's Quest project. This included the introduction of a new concept I called "Condition". The new "Event" class has a "Condition" and a corresponding "Action", allowing for very modular behaviors. The events are consequently polled every frame to check if the condition has been met, and if so, the action is executed.

In Unity, I upgraded the interface to be able to enhance the user experience.