Ever since I integrated FBX into RMQ, since I had a hunch it would be useful, we’ve had an easy way to create waypoints all across a level, using the waypoint editor. That’s much simpler than placing 200 path_corners by hand (believe me, I’ve done it); and once you waypointed a map for multiplayer (assuming you ARE doing that to your map), you have this set of navigation nodes sitting in your map directory.
And accumulating dust – since most of the time is spent on singleplayer development.
I’ve been ogling those node sets while creating SP gameplay for a while now. They’re a prefectly good resource, they basically contain a machine readable map of the map… so why let them go to waste? If bots can use them, then… monsters can use them.
The Frikbot X code in RMQ has been mostly treated as a black box so far. It’s pretty intimidating code, and most devs are more comfortable to assume it only does its magic in multiplayer and never needs to be touched. Like a black box that does one thing and is ignored otherwise. This is BAD since in reality that code contains a lot of useful stuff. It’s QC like everything else, right. It is not rocket science.
For example it has code that helps someone get around the map, get to location X and so forth. And it has code that parses and creates the waypoints. What could monsters do with access to a complete set of waypoints?
They suddenly know the map.
They could pick a random waypoint and start moving there, periodically picking a new target.
Right now, RMQ uses something called figgin roaming. The figgin, like the cake, is a lie. It moves around the level and roam-enabled monsters will march towards it. It’s a bad method though – all roaming monsters march in the same direction, and they will all happily march into a wall while they’re hypnotized by the figgin.
Several plans exist to fix this. Have several figgins; have monsters follow walls etc instead of a figgin; use several roaming methods and several states on the roaming monsters, and so forth. However, waypoints are new. They’d allow the monster to follow a known path (it knows the entire map), while trying to get to (figgin 1, waypoint 261, entity X, the kitchen, the player).
You could have a situation in which some monsters in a map will not only appear busy, but be busy. Add a bit of randomizing to this, figure in the existing random groups (randomized spawning), other bits of random usage and skill levels, and no two playthroughs of a level will be the same.
So roaming is one application. There are others.
Have new waypoint types, or new flags on waypoints. Such as “use teleporter”, “possibly jump here”, “target practice”, “cook food”, “set a trap”, “can take cover here”, “can ambush here”, “play animation”, and so forth.
Imagine 12 crossbow knights popping in and out of cover and shooting at you. Ouch. Imagine enforcers using cover. Imagine a spellcaster standing behind a stack of crates and casting buff spells on his friends from relative safety.
We can make even more out of the fact that monsters now know the map. A wounded monster could do a tactical retreat. Retreat is actually a splendid tactical move. Let the rest of the group (RMQ already has monster groups AND random groups) deal with the player. Add regenerating health to this – a wounded monster takes cover or retreats along a corridor, while its health ticks up slowly.
Finally, monsters now know where items are. This is a whole new can of worms. Let’s say we allow monsters to collect backpacks, or armour shards, or stimpacks. Or open secret doors (remember Unreal? Monster-use-only doors!) Or a special type of monster-use-only healthkit.
… Actually, why not have monsters compete with players for items? Bots do it.
And finally finally, monsters could use waypoints to get in and out of water, or lava, since monsters drown and burn in RMQ.
Singleplayer could be so much richer than it is now. Dammit.