Lately I’ve been working on a multiplayer ‘Capture the Flag’ battleground scenario for my RPG style game.
It started to get difficult (and boring) to test and debug a team-based game mode alone, so I added AI Bots to my game to fill in the empty spots and make it a full 10vs10 battle.
I also hit a point where I needed to refactor my previously unorganized AI system, and switched to a priority based Goal system. Each NPC has a single active goal as well as a list of pending goals with lower priorities, and each goal then updates its priority every few seconds depending on the NPC’s current state.
It was mostly simple to implement the goal system, but I’m noticing it requires a lot more fine-tuning and debugging in order to ensure that all of an NPC’s goals are working together properly. So to make it easier to debug, I also added a visual output that shows a list of the selected NPC’s goals as well as the priority for each goal.
Here’s a quick gif showing the goal debugger, as well as the AI picking up the flag after it was dropped.
The general lore behind the battle is that a faction of Dark Elf bandits are trying to invade a neighboring faction of Crystal Elementals for their precious metals and gems (the players are Wood Elves, so they can choose to fight for either side). There’s also still a lot of work to be done decorating and polishing the map, but the overall layout is done.
This even sparked an Idea in me as well. I was messing so long with procedural street generation and it didn’t work out because for a stupid algorithm some roads don’t get pruned, some cul-de-sac’s are generated etc.
This opens a whole new idea to me. Streets are already there and are a somewhat “solved” problem then And some people might take streets they are familiar with. Ahh that would be a nice sideproject again
Yeah, I’m in a similar direction but when I started listing the things that I needed to make a game idea “work”… procedural generation of the road network was a detail that could be added later since there is already a ton of street data to test with.
…and familiarity with the data is bound to feed some procedural generation ideas.
Bit of a busy week or two ahead moving house amongst other things, but I’ve been busy updating the world-pager library and creating a position-plotter library. The world pager creates an endless world, and the position plotter places grass, vegetation and trees onto the terrain using various settings.
Since each library is seperate, I’m also making a tech-demo combining them both to make a world full of vegetation - which should also be useful to the user to work out how to use them.
I’m not certain when the position plotter library will be available; probably over the next week or so.
Love it. It’s always exciting to see how far a developer will take their endless terrain/endless world applications. I saw one of your previous projects on YouTube and I thought it was super cool, even though I would never have a use for an endless terrain system myself.
Added basic street widths to my OSM visualization… it almost works. OSM data lacks some fidelity that would be nice and ultimately it doesn’t matter for what I want to do. Fun to play with.
Oh, I also added proper elevation from some USGS satellite data.
This is a shot of “my house”… the horseshoe shaped street to the left is my street:
The green elevation dot is roughly where my house is.
Still need to come up with a proper strategy for dealing with intersections:
Another shot of the same intersection from the other side showing the tricky part about long right turn and left turn lanes. You can see the road go from 2 lanes to 3 lanes to 4 in a very unnatural way:
There is really no ‘right’ way to detect things here so I will have to guess. After all, in the end this is only stand-in data for something that I will generate and I just wanted to make sure to handle a lot of different real-world cases. It doesn’t matter if I detect them correctly.
Another tricky case with a bridge/overpass over a major highway:
It’s nice because this particular dataset I’m loading which is near where I live has lots of these sorts of strange cases to play with… and I know them well because I drive them all the time.
The code “as is” is far enough along for me to do my next level testing… which is just to make the roads+ground solid and drive around on them at ludicrous speeds. Maybe add some random stand-in trees and buildings just to have something fly by.