This Month in ZoC - 2017.01.24

(Repost from https://users.rust-lang.org/t/this-month-in-zone-of-control/6993)

Hi, everyone! :)

It has been four months since the first post, sorry. I'm struggling to find enough time for the project plus I was busy with porting glutin to winit for about a month around October.

Helicopters

https://github.com/ozkriff/zoc/issues/111

helicopters

IDLE animation:

It's not easy for ground units to catch up with a helicopter :) :

Haven't got around to implement AA-guns and Manpads yet so the main AA-defence for now is just jeep's machinegun.

Reinforcements

https://github.com/ozkriff/zoc/issues/208

Players have no starting forces now - everything is bought in reinforcement sectors for reinforcement points.

The upper-left corner displays the amount of reinforcement points that current player has and their per-turn increment:

Reinforcements

Reinforcement sectors are marked by two circles in player's color:

Circle marks

There's an additional "reinforcements" item in the context menu: when clicked it opens a list of available units:

Main context menu

This opens a list of available units:

Context sub-menu

There must be enough reinforcement points and enough room for the unit. Units have no move or attack points at their first turn.

And, by the way, AI has been taught to buy units too.

Map selection

https://github.com/ozkriff/zoc/issues/213

After the implementation of reinforcements it became possible to add map selection.

You can change map by clicking on the current map's name in the main menu screen:

Main menu

It was mostly needed for testing/debugging purposes so most of the maps look like this for now:

Debugging map

Tests however are in early prototype phase and are not in the repo yet. Right now they use special maps but I intend to implement some ASCII-DSL like the following:

let map = "
    ... ... ... ...
      ... ... ... ...
    ... ... t.. r..
      t.. t.. r.. ..B
    r.A r.. r.. ..C
      ... t.. ... ...
";

where 't' is a 'trees', 'r' is a road and 'ABC' are positions.

Tests work by sending hardcoded commands and waiting for specified events in response. I can't test anything that depends on RNG (attacks mostly) but the movements, FoW, etc are more or less testable. It can't help with errors in visualizer but it makes it easier for me to refactor the Core.

Auto-deploy to github releases

https://github.com/ozkriff/zoc/pull/246

@Gordon-F has implemented auto-deploy of releases for travis and appveyor.

Now you can download windows, linux and osx builds for tagged releases here from the github releases page.

Android is totally different story with all its SDKs/NDKs and is still built and uploaded manually.

Wreckages

https://github.com/ozkriff/zoc/issues/247

Now destroyed vehicles leave wreckages.

Wreckages

They only obstruct movement for now. Later they'll be used by infantry as protective covering.

When particle system will be implemented wreckages will emit smoke and fire.

Towing

https://github.com/ozkriff/zoc/issues/161

There're two new items in context menu: "attach" and "detach".

You can't chain attachments or attach WholeTile-sized units.

Towing system is mostly important for quick reposition of field guns but it can also help with clearing roads from wrecked vehicles. The latter reason will become more important when partial damage for vehicles gets implemented.

Smoothly fading to alpha Fog of War

https://github.com/ozkriff/zoc/issues/210

Opening FoW is a very common action so it deserves to be a little more pretty :)

It was easy though I had to rework the FoW rendering code to make it use a lot of independently colored scene nodes instead of a single big mesh.

Fixed an old error with units moving into invisible enemies

https://github.com/ozkriff/zoc/issues/106

This change caused some refactorings in the codebase:

Other changes

Gameplay screenshots

gameplay screenshot 1

gameplay screenshot 2

@ozkriff on Twitter