So, instead of playing Civ VI, I baked some cookies, and after baking cookies I wound up writing some more code. Focusing on starting to differentiate between water and land, and making a few improvements to barbarians.
This screenshot tells the story well:
Now if that isn't a scary sight! Barbarians have been trained to keep their warriors and camps on land, and have also learned how to build Galley, if they are on the coast. For testing purposes I turned the chance of galley creation each turn up to 68% for a coastal barbarian camp, but I plan to set the default to 3% for non-testing purposes.
I also gave the barbarians some hitpoints, so they aren't perpetually in the red zone for their health bar. Yes, they should be scarier!
Next I'll probably add restrictions to player units walking on water. I might also play around with the barbarians a bit more. I've added a separate barbarian camp list to the Map, so we don't have to check every single tile to see if there's a barbarian camp when spawning barbarians between turns, but I'm quite tempted to add another barbarian AI class or two, that's a bit more interesting than the random one.
My general goal with these changes is to continue to make things a little more interesting, while having parts of the code that might live long-term (e.g. the sea/land differentiation). Firing up the Aztec release, the world already feels considerably more alive with unit animation, forests/marshes/jungles, hills/mountains, and barbarians that move around. But we aren't quite at the point of having actual gameplay yet.
-----
Edit: These changes are now in
PR #76 (including player units only being able to walk on land). This isn't everything I want to do in this area, but by opening the PR now it stays a reasonable size that might not deter all reviewers, and I can still branch off of the branch.
-----
Edit 2: I've also started revamping UnitPrototype so that the prototypes are actually used instead of being re-created as duplicates every time something is produced. (In a branch, UnitPrototypeRevamp) UnitPrototype now implements an IProducable interface that is meant to represents things that a city can build... units, buildings, maybe other things eventually. The refactor isn't quite done yet, but barbarian and city production is now using prototypes.
As part of that, I've also given coastal human cities a 1/3 chance to build a Galley instead of a Chariot. These are land-based galleys for now, but soon will sail on coasts instead of plains.
This is starting to point towards some future doors to open. One of them is an AI component for choosing what is built next. Another is a native C7 specification for unit prototypes. Currently they're all just specified in code, but that's obviously placeholder.