You can tell from the big screenshot below that all the game elements are in. That means it’s game on… finally.

If you’ve been following this blog thinking “is this thing ever going to happen?” well, perhaps you were not alone. Moving the game to our own 3D engine (written in python!) was difficult and, at times, scary. We’ve completed it though, and I’m happy with the results.

I understand there will be people who take issue with 3D presentation as such. Feel free to unload in the comments 🙂 though obviously we’re way beyond the point of no return now.

The Weather

We are using jaggy, irregular patterns for weather boundaries – check out the edges of the snow patch in the screenshot below. This is different than UoC1 where we used patterns that were more noisy in nature. These patterns (based on perlin noise) didn’t work so well in 3D, so we’ve come up with this new stuff. Overall I think the effect is similar: they match the hexes well while still maintaing an organic look for the boundary.

Time needed to re-load the weather is now 2-3 seconds, which is good news if you found load times in UoC1 frustrating. You could be waiting for 30 seconds (or more) to start a new turn in UoC1, and re-loading the weather was responsible for most of the wait. No more!

Otherwise, the weather remains as it was: dry, mud or snow. The one change is that there will be less mud in western Europe. We are simulating countries with more developed infrastructure, and the effect of mud was never quite as debilitating in the west as it was with the Russian rasputitsa. The weather engine is taking this into account by creating considerably less mud in the west.

(click image for full size)

User Interface

We’ve been cheerfully over-engineering the UI since, like forever, so it’s refreshing to see that come online as well. It’s an intricate design rendered in vector graphics, laid out with flexbox and styled with CSS. I really hope people like it. We are also taking care to softly animate all the UI transitions, to give the game a contemporary feel.

The UI should be scalable in theory but I haven’t really gotten around to testing that yet. Eventually, you will be able to zoom-in the UI separately from the map. No more squinting at tiny fonts, ever.

Headquarters and Supply Hubs

HQs have been added to the map – you can read all about them in a previous diary. A unit can be placed in the same hex as an HQ, as you can see with both US army HQs in the screenshot. In comparison, the Free French 1st Army is alone in its hex – we’ll be placing a general there in such cases, perhaps with a flag pole, we’re still discussing the right approach.

Barrels represent supply hubs which can co-exist with both units and HQs in the same hex. We don’t have a situation with all three stacked in the screenshot but this is allowed as well. Note also that you can see German supply hubs even when they’re inside fog-of-war. This illustrates a core design principle: there’s always some information visible from within FoW, it’s never completely blacked out.

If you spy very carefully you will also see stragglers, which represent forces effectively out of your control (due to becoming disorganized in combat, for example). They play a big role in making the rules “less bloody” as described all the way back in Dev Diary 1 (!). Stragglers really deserve a post of their own, so let’s say this is a tease and leave it at that for the moment.

Technical Developments

The map now has lakes – previously we failed to import them from GIS and somehow didn’t notice that lake Ladoga was missing. The map editor has new desert and tundra terrain, and there’s even a GIS vegetation layer to help with placing forests.

We’ve moved the game to 64-bits, meaning you’ll need a 64-bit OS to run it, which you most likely do. We’ve added explosions (yay!) and a bunch of new sounds includings tanks finally squealing properly. I know some people were concerned about that.

The code that’s meant to create tank tube blasts for now just shoots ping pong balls. I’ve grown fond of the effect.

Cheers! 🙂