Update: 1.0.0 is final, and 1.1.0 "The Nether" is out
Short status update for anyone who tried it or is curious.
1.0.0 left the release-candidate stage shortly after my first post, and 1.1.0 is now on GitHub too, again with packages for macOS (universal), Windows x64 and Linux (AppImage):
Release: https://github.com/DeiVadder/QtCraft/releases/tag/v1.1.0
What's in 1.1.0
The big one: a world can now have more than one dimension. Build an obsidian frame, light it, stand in it for a few seconds, and you're in the Nether. Creatures, items and minecarts come along, one block there is eight in the Overworld, and the portal on the other side is found or built for you.
[image: 84-9-crimson-forest.jpg]
[image: 84-9-soul-sand-valley.jpg]
The Nether with five biomes, each with its own fog, particles, ambience and music
Nether fortresses, bastion ruins and ruined portals
New creatures, including a fireball-spitting one you can hit back and a rideable lava walker
Brewing (longer, stronger and splash potions), 17 status effects, tipped arrows
Netherite and the smithing table, a new armour formula
A three-headed boss whose drop crafts the beacon
Hunger with saturation, eight volume sliders by kind of sound, an option to start a new world in the Nether
14 music tracks by Scott Buckley (CC-BY 4.0). The generated music is still there as an option; textures and all other sounds are still generated by the game itself.
[image: 84-5a-bridge.jpg]
[image: 86-2-beacon-night.jpg]
Old worlds keep working. World generators are versioned and frozen per release, so a 1.0.0 world opens unchanged and simply gets a Nether the first time someone goes there. On opening, the game asks once whether you want to switch the world to the new generator. If you do, it keeps everything already explored, and "Switch with transition" blends a ring of chunks from the old terrain into the new one.
From the experiment side
Two things I found interesting this round:
The Nether is the first feature that touched almost everything at once: chunk storage, the server tick, the protocol, the renderer, the save format, the handbook. After the entity rework story from my first post I expected pain, but it went surprisingly smoothly this time. I think that's mostly the guard rails and the decision log paying off: the agent had to plan the dimension model as numbered decisions first and only then build it.
The release still nearly failed at the last step. The Windows package broke in the release workflow on an MSVC warning about a shadowed name, which neither Clang nor GCC reported in the regular builds. The fix was trivial; the lesson was to also build with /WX on Windows before a release. Guard rails only help where you actually put them x)
The test suite is now at about 540 tests.
Next: 1.2.0, "The End": strongholds, the End portal and the End dimension are already in the development branch.
As before: feedback on the game, the code or the approach is very welcome, here or as issues on GitHub.