A light update this week. Trucking along on 0.11, but had to take some personal time due to family stuff going on. I have 11 cards left ouf of 30 for this release, so it’s getting close (only two of the remaining cards represent a large amount of work).
I’ve also been enjoying the new github project boards. I’ve been keeping a “next release” column, and an “unscheduled” column for short-term goals (I’ll try and get long term goals in there, but they are scattered across various notebooks – so that’ll take a while), and employing some work discipline. Bugs/Features get their own branch, and it doesn’t get merged back to master until it has been tested on all three platforms. That slowed me down a bit, but master has remained stable as a result. I was surprised by the number of people cloning and updating the game themselves, so this is my effort to make their lives happier!
Changes this week:
- Finished the log system, mentioned last week. It’s an easy interface for me, and provides a nice colored log on-screen. The hooks are in place for a “log” screen to allow going back through a longer term log, but that’s not a target for this release.
- All major dialogs now use a unified GUI system, which has greatly improved code cleanliness – and made them look a lot nicer. The back-end is in place for the color scheme to be defined in config files, so when this is complete you will be able to put in whatever color scheme suits you. It’s also responsive; the majority of the screens resize correctly if you adjust your window size (either by dragging it, or by editing the
- Fixed an issue whereby you could wind up accidentally giving a move order in rogue mode by switching dialogs.
- Fixed a crash bug that could occur if I made a typo in the configuration for a suit of armor.
- The start of a reputation system: If you attack sentients (members of other civs), their civilization will dislike you for it. Conversely, when you attack a civ and another civ dislikes them – they will like you for it. Screens displaying this information are slated for 0.12 or thereabouts.
- Sentients from factions who dislike one another will shoot each other if they meet in your play area. It’s quite entertaining to watch a battle play out while you take cover!
- Vegetarian sentients will no longer kill all the wildlife they can see. There’s a note to make them harvest plants, instead, but that isn’t in yet.
- Greatly reduced the amount of unnecessary log spam.
- Encouraged civilizations to build near to one another, giving more interesting setups.
- In world-gen, the colors of each civilization now mean something. More red = nastier, more green = friendlier, blue = neutral.
- Spent way too long finding a serialization bug in which I was saving a
uint16_t, and accidentally loading it back as a
uint8_t. This was causing some bizarre stuff to happen. Oops.
- Replaced the sand glyph with a less heavy one, which made the game look a bit better.
- Tooltips now include all of a building, rather than just the center square.
- Added a “standing orders” screen. You can now specify some default behaviors; for example, “only upgrade equipment if it is nearby” (to avoid settlers wandering off a long way), “only wander randomly near Cordex” and similar.
- Created a “linter” for the world definition files. It runs on start-up, and flags issues. For example, WARNING: Cook has an invalid melee weapon, bronze_knife..
- Added a dedication to the front page. Kylah is our foster baby of 8 months, who just went home to her birth parents. She’s awesome, so this is my effort to immortalize her.
- Created the framework for a tile-click menu. Click a tile with a settler in it, and you get a pop-up menu to view that settler’s information. This is a precursor to a LOT of other work.
- You can click an under-construction building and cancel the build order. You get the building components back.
- You can click a building and select “remove construction” – and a settler will run out, demolish the building, and retrieve your building components.
- As a footnote to “remove construction”, stopped players from removing Cordex himself and thereby insta-killing themselves.
- You can click a structure (wall, stairs, etc.) and select “demolish” – and a settler will run out, and remove it. You get the components back.
- Started a big refactor on how I’m handling some basic construction elements. Wood planks and stone blocks are gone; now you just have “blocks” – and they inherit the material properties of their initial material (you still need a sawmill for wood and a stonecutter for stone). This was partly in place before; if you mined microcline and made a wall, the wall was blue and had a strength based on microcline – but this is a lot more thorough, and helps bring the tech-tree under control (instead of needing to define “stone wall” and “wooden wall” in the raws, I just have a “wall” – and it is based upon whatever you used to build it. An interface for selecting reagents will be in 0.12 – for now, it’s whatever is closest). This is also being applied to mining – so when you mine a metal ore, it produces just “ore” rather than defining individual elements for iron_ore, copper_ore, etc. The ore has an associated material, and will smelt into that metal. Likewise, when turned into something useful (say, a sword), the metal is applied to it directly – again, I can stop having to define “bronze sword”, “iron sword” etc. – and instead have “sword” and it is modified by the material used to create it. This simplifies things a lot as more metallurgy is added, without sacrificing complexity from the player’s point of view (and makes things like temperature tolerance a lot easier in the future). Conversely, I’m having to make reactions a bit more complicated to compensate (and still working on it!); I’m building a filtering system. In the raws, you can specify that this reaction takes blocks as an input, but only blocks that have a combustion point of X degrees (or whatever) – so any fire-safe material that is added to the game can be used for a smelter, for example. It’s complicated, but it helps.
So all in all, it’s coming along nicely – but there’s a lot more to do. I suspect 0.11 will be delayed further as I tackle some of the larger issues that have been exposed by allowing you to remove big chunks of the map!