Feels like I’ve been working on clutter for ages and ages. And from a certain point of view, I guess I have. These clutter systems are kind of a simpler version of most of the rendering parts of MMORPG Tycoon 2; creating and destroying renderable geometry when it’s needed, so we don’t have a ridiculous amount of geometry just sitting around in memory all the time, not being used. This is an important consideration, when your game world is the size of World of Warcraft! The stuff I do here will eventually generalise out to the height map, and then (hopefully!) to most other procedural geometry int he game, and should make the game feel a lot more responsive.
So today I’ve done phase two of the multithreading of clutter. Yesterday, each “clutter tile” kept its own thread which would sleep while waiting for a “build some new clutter” job to arrive. Today, there is now just one “worker thread” which handles all clutter rebuilding tasks. This behaves a lot more nicely (particularly for people with fewer cores on the CPU), and should scale a lot better. And it’s noticeable faster again to rebuild tiles of ground clutter, even compared against how fast it was yesterday. From my point of view, the system side of ground clutter is now basically finished. All that remains to do is to generate different types of clutter depending upon the terrain type (right now, it generates grass on everything, even bare mountain faces)
The plan is that tomorrow and over the weekend, I’ll be bringing this same system over to edge clutter, and to the base height maps as well. This should substantially improve the frame rate jitters that I currently get when a new block of world terrain comes into view.