[Existential Metal] Fan Project: Endless Possibilities Dev Log 0.2
It has been about a week since the last entry. Most of it has been spent fixing the problems I introduced when I started letting NPCs move around the map.
The biggest issue ended up being, well, the map itself. It was never designed with anything other than Sonic in mind, and that showed pretty quickly once other characters started navigating it on their own. I had to go back and clean up a lot of terrain edges, adjust slopes, and add invisible boundaries in places where NPCs would start making too many bad decisions and end up falling straight into the endless void below. Fun stuff.
The upside to this is that the world flows better now, even for Sonic. Movement lines are cleaner and there are fewer spots where speed is hindered by my bad map design.
I am pretty proud of myself.
NPC behaviour is more stable too. I tightened up how often they reevaluate actions and added more separation to their decision weighting so they do not all pile into the same behaviour at once.
The odd one or two still get stuck occasionally, but it is rare enough that it feels more like a bug than a design flaw. Something I will probably be able to fix later.
With that mostly under control, I started working on what I am calling Core Dynamic NPCs. These characters are important NPCs made up of the Sonic cast that are not just background characters or dressed up quest markers.
They are definitely a step up in complexity. They use a new prototype system that I feed directly into each character. They have more complex behaviour, longer memory, and more influence over how events play out. The idea is that they should feel like persistent actors in the world rather than scripted encounters.
This works by feeding character data and setting up the core components of their personality, then allowing them to make decisions based on that information. After that, they are given tools to carry out things you would usually expect them to be doing.
For example, Knuckles rarely strays far from Angel Island unless he has to. Usually that is because he has spotted hostile badniks floating around the area, or because something bigger is happening somewhere else on the map.
This is still incredibly early, but it is already making things more interesting. Running into the same character in different parts of the map as they go about their own business, seeing them react differently, or sometimes even offering to follow along and help depending on what quest you are on feels like a step in the right direction.
Like Tails following me around and helping complete a simple fetch quest before splitting off and later meeting me again in a completely different zone.
I also implemented the first iteration of Metal Sonic this week.
Right now he is designed as a roaming boss rather than a fixed encounter. He moves through the world on his own and will engage Sonic if they cross paths.
He runs off a slightly tweaked version of the Core Dynamic NPC system, where he can take action and learn how to make encounters more impactful and interesting.
Tuning him has been tricky. Because he is not locked into a single fight, he needs to be challenging without being oppressive. At the moment he is probably a little too punishing if you run into him unprepared, but I would rather dial him back later than have him feel toothless.
After all, I am sick of him being treated as non threatening. He is meant to be Sonicâs rival, not some pushover.
So far it works. Running into him unexpectedly feels much better than being forced into a scripted event. I even got to see the Core Dynamic NPC system start to naturally create small story moments.
After fighting him a couple of times, I noticed he started trying to ambush me around areas with a lot of badniks to make things more challenging than before.
It made me work up a bit of a sweat and I had to lock in, but it was some of the most dumb fun I have had in a long time.
On a whim, I decided to implement a simple reward system for Metal tied to Eggman when he does something particularly smart against the player.
Overall performance is still acceptable. The additional logic for core characters does add some overhead, but nothing unmanageable yet. I will need to keep an eye on it as more systems stack up.
This feels like a step in the right direction. Everything holds together, and sure there is some jank, but I am having fun.
I think I have something here. I am going to play with it for a bit before I start layering more stuff on top of it.