The birth of this bad idea
A few weeks back I was playing around with watabou’s awesome fantasy city generator. It gave me the idea of a gta2 style game where you play a wizard and craft weird spells to invade these procedurally generated fortresses.
But really, these fortresses will only play the role of giant sandboxes for the main focus of the game, the compound spell crafting system. Which im not going to go into detail in this log(There’s a bit more detail about it on the main page). I will write more about it when I actually be working on it.
This log is more about my progress and observations after 3 weeks of pouring all my free time into the prototype for this idea.
Over engineering everything
So, I have a fair amount of experience with programming but this is my first project with Unity3D. Therefor, I coded a lot of unnecessary stuff that the Engine already had figured out.
Pathfinding
I wrote my own 2D pathfinding and NavAgent.

The game starts by generating a grid

Each node makes a raycast to each of its neighbors. If no building is found the connection between the nodes is set as “walkable”. If a node has at least one walkable connection is it set has “accessible”. All this was largely inspired by this post
I then slapped a A* algorithm on that and created a nav agent component so the enemies could move around.
Its all fun stuff but looking back I could of just cheated Unity’s Nav3D to work with 2D and save myself a lot of time.
State machines

It started with a state machine diagram for the Guard AI

I then wanted to create a easy tool to integrate these states and events in Unity. I ended up with a wayyy over engineered dynamic state machine system.
The system has 3 elements:
Events
States
Linkers
Linkers determine which events are connected to which states. They also determine what happens when a event is triggered. A state can have a transition to another state. A state can also be added so multiple states can run in parallel.

Even though this is probably overkill for my project, the state machines have worked strangely well. But the complicity will probably come back later to bite me in the ass.
The SuspiciousState followed by the SurprisedState in action.

Thats it
Problems and over complicated solutions aside i’m having a lot of fun with this. i’ll soon get to work on the spell system, the main focus of the game and see if my idea could actually work has a game.
Thanks for reading!
0 comments