Some good progress was made this week:

  • The AI Mining system is ported, so settlers know how to collect picks and travel to mining destinations.
  • The AI Guarding system is ported, letting settlers guard important locations.
  • The AI Harvest system is ported, so settlers can collect plants from the environment.
  • The AI Lever Pulling system is ported, allowing settlers to close bridges, doors and set off traps.
  • The AI building system is ported, allowing settlers to construct buildings.
  • The AI architect system is ported, for large-scale construction projects.
  • The AI huntning system is ported, for those times you just have to kill and eat some wildlife.
  • The AI butchering system is ported, allowing settlers to turn slain animals into food/bones/leather.
  • The trigger system is ported, allowing traps to fire on entry (as well as pressure plates to act as levers).
  • The settler melee and ranged combat systems are ported.
  • The sentient attacks system is ported (for NPCs who want to hit things).
  • The creature attacks system is ported (for angry wildlife).
  • The turret attack system is ported, so automated defences work once more.
  • The damage, killing and healing systems are ported – so entities can inflict damage, kill one another, damage the terrain, and get better over time.
  • The “viewshed” system is ported; it maps out “what can I see?” questions for entities.
  • The vegetation system is ported, so grass can grow, be damaged by passing animals, etc.
  • Massive warning reduction run – removed over a hundred VS2017 warning messages (almost all relating to casts).
  • Wired up the new, thread-safe, messaging system for all of the systems that have been ported. It works really well so far, especially after…
  • … fixed a few race conditions in which systems that are now running concurrently tried to change things while another system ran. This was a MAMMOTH task, and required as much intuition as it did debug-tools – errors tended to be subtle rather than breaking.
  • Started putting the “cursor and selection” system together. It handles highlighting the currently selected cell, and things like highlighting trees that are designated for chopping, tiles that are marked for mining, and so on. It’s a big job, and should be finished early in the week.

That leaves finishing up the cursor/select, particles (sort-of done; messages are transmitted to indicate that they should be created but the render code isn’t there yet), and any niceties I decide to throw in. After that, the new engine is a Go – and I can get back to gameplay and making the UI slick.