This Month in ZoC - 2017.01.242017-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 can fly above any terrain or ground units, but can't capture sectors
Most units can't attack helicopters - WeaponType got
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':
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.
Auto-deploy to github releases
@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 when partial damage for vehicles gets implemented.
Smoothly fading to alpha Fog of War
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
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
GameStatetrait into one universal State struct - #255
- Added a proper FoW layer for air units
The short-term roadmap was translated into English and updated
AI was taught to capture sectors
AI is still in poor state and crashes once in a while. I need to implement replays to reproduce and fix these errors. It's either AI sometimes issues orders to units that are already dead or there are bugs in the event filtering system.
Android memory alignment errors are finally gone, thanks to @not-fl3, @tomaka, @brendanzab and @mhintz.
Fixed bridge slots count. Now bridges are real strategic points which can be controlled or blocked easily.
Added "zoom in/out" buttons:
because it's simpler than handling multi-touch gestures on android :)