This Month in ZoC - 2017.01.24

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 can fly above any terrain or ground units, but can't capture sectors

Most units can't attack helicopters - WeaponType got max_air_distance: Option<i32> field

Helicopters can be seen by enemies even in non-visible tiles

Helicopters have a different field of view rules - their FoV have no 'obstacle shadows':



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.

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:

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

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

This opens a list of available units:

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.

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:

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

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.

@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.

Now destroyed vehicles leave 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.

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 w hen partial damage for vehicles gets implemented.

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.

This change caused some refactorings in the codebase:

Added a new event type: Reveal , similar to ShowUnit but generated by Core itself and not by the filtering system

Merge all *State structs and GameState trait into one universal State struct

Added a proper FoW layer for air units

Other changes

Gameplay screenshots

I'll try to release next issue of TMIZ by the end of February.

@ozkriff