It’s been a decently productive week, with things continuing to come together nicely. At this rate, I’m only a few weeks from merging the new system into the master branch. 🙂
- Put together a really naieve particle system. Particles are basically a big vector of position, color, age and mode. Each frame, particles age by the time since the last frame, fade and expand (this is configurable based on mode). They are mapped into a GL buffer as points, and rendered into the buffer system. There’s lots of room for enhancements, and I’ve kept it deliberately flexible for this reason. Quick testing showed no appreciable slowdown from running 60k particles in a frame, so it’s good enough to get started.
- Implemented a “tile changed” particle effect; it spawns particles randomly within a tile’s viewspace, all going up (no gravity). This was attached to the lumberjacking system, so when a tree is destroyed each tree tile generates a number of green particles giving a relatively visceral notification that the tree is gone (this also covers the 1-2 frame delay while the tree vanishes as the chunk buffer is recalculated). It makes lumberjacking feel a lot better – you get some feedback as to where a chunk of map just went.
- In preparation for the building system, created voxel models for: nuclear camp fire (the ship crashes with a couple of camp fire kits; it’s basically a plastic camping kit that can replicate marshmallows), personal survival shelters (a pretty way to say “tent”), and crates containing these two items. Integrated them into the raws and was happy to see that they “just worked”.
- Got the old Design->Building interface ported over, which lists available buildings. You select one, and it appears on the screen where your mouse goes. If you can’t build it (because of terrain), it turns red. Clicking fires off a message, and a placeholder building is added to the terrain (greyed out) and relevant jobs enter the queue (and components are marked as claimed, so they aren’t used in subsequent building efforts unless you cancel the job). Settlers scurry to pick up components, and build your new building.
- Implemented the “emits smoke” particle effect; when you build a campfire, it sends smoke into the sky.
- Attached new buildings to the new dynamic lighting system; when you build a campfire, it emits yellow light into surrounding tiles.
- Added a voxel model for the sawmill, and adjusted raws for it (it’s a 3×1; various attempts left it looking better that way). Added voxel models for building blocks and wood waste (you can use sawdust for various things like charcoal, paper, etc.). Tweaked the workflow AI system (I forgot to register it with the workflow controller), and was happy to see that settlers will perform their chores – chop down a tree, drag the wood to the sawmill, and make blocks/sawdust.
- Fixed up the keyboard controls so you can press D-B to start building things.
- Temporarily attached a particle effect to finishing performing a reaction, just to make it easier to see in debugging where things are occurring.
- Fixed up an issue where tool-tips were showing information for the z-level of the camera not the mouse.
- Since building blocks were now working, it was time to get a bunch of other buildings (derived from wood; I’ll do the stone ones once mining works) designed graphically. Added voxel models for: Bonecarver workshop (which turns bones from hunting into useful items), Butcher shop (for chopping up dead beasties). There’s a lot more to do, but it’s getting there.
It’s becoming increasingly clear that some shadow effects will really make this “pop”, so I’ll probably get distracted trying to make that work in the coming few days. Otherwise, mining and architecture are next – along with making even mode models!