1. Tank Squad
  2. News

Tank Squad News

Development Status #65


[h2]Dear Tankers,[/h2]

Welcome to our 65th Development Status.

[h3]Engine version comparasion[/h3]



We made a short video of what the build of the game looked like (on Built In in Unity, around October/November 2023) of the demo version compared to the current version of the game from the latest builds.

[previewyoutube][/previewyoutube]

We have already covered the whole thing in previous dev statuses, what the changes consisted of and why we decided to do it. In the video, you can certainly see a big difference in the quality of the graphics and much more.



In the video below Outskirts of Morton... yes we know, there's that mission again - on defence, it's one of those missions where we test and embrace the latest innovations before we implement them on subsequent missions/scenarios.

[h3]Additional effect like suppression, damage indicators[/h3]

As you can see on video above we have added also few basic effects. When receiving an direct hit fr example from enemy anti-tank gun or a tank we would see a suppression effect / vignette animation on our screen. Also when actual damage is being taken, another effect is visible - slight red overlay. This is purely a cosmetic change. Design was to make it slightly visible and for sure to not be annoying or intrusive.





[h3]Optic ocular improvements[/h3]

Another new feature is the change in eyepiece magnification when aiming. The closer we zoom in, the larger the eyepiece becomes. The change is also accompanied by a pleasant sound effect.





[h3]Extinguishers[/h3]

After adding a molotov cocktail to every single soviet infantry soldier we’ve ran into problems. Driving into a group of soviet infantry ends in our tank becoming a barbecue. That’s why we’ve added a quick fix - electric extinguishers that just extinguish all fires on top and close around our vehicle.



We know that electric extinguishers were very rare, especially not really exsitant for soviet vehicles, but this is a temporary approach, just to stop a critical bug of being forced to respawn after receiving few molotovs on engine bay.

[h3]Proving Grounds[/h3]

What we are also working is the proving grounds. A place where you will be able to test any tank in the game at will, check ballistics penetration etc. When we will add the X-Ray system it will be an excellent diagnostic place in the game. In the next dev status we will try to record a dev log showing this scene in action.



Thank you and have a good one!
DeGenerals

Development Status #64


[h2]Dear Tankers,[/h2]

Welcome to our 64th Development Status.

[previewyoutube][/previewyoutube]

[h3]Long time no see[/h3]

It's been a while since we've been heard from, we're hard at work optimising the game in everything from code, animations, missions, tanks or weapons. We've been working on everything to reduce RAM and increase FPS. And what specifically have we done? Read more about it below.

[h3]Ballistics - Behind Armor Effects and X-Ray progress[/h3]



We’ve been also working on adding the long awaited X-Ray feature, our current progress is adding dedicated armor for few tanks and adding few new ballistics features:

  • Spalling (when penetrating vehicle armor)
  • Shrapnels (every explosion)
  • APHE effect (explosion after triggering HE fuse and reaching designated meter offset)
  • HEAT effect (as a cone after first fuse trigger)
  • Effective armor calculation - based on attack angle
  • Effective projectile armor penetration - also based on attack angle

[h3]AI Infantry anti-tank behaviour[/h3]

Now that we've added periscopes (not just for the Tiger), we've extended the damage system to the periscopes. Now enemy soldiers with AT rifles will prioritise them when firing at an armoured vehicle.

This is also a part of the game where, later on in development, we want to add vulnerabilities or points on vehicles where a particular soldier or weapon will do the most damage. So, for example, a light AT gun or rifle will not just shoot at the centre of the tank, but try to see if their weapon can damage the main armour, if not then try to see if they can damage tracks, wheels, etc.

If the distance is too great, or the available target is too hard to hit, the unit should remain silent if not attacked - but this is something to be added later.

[h3]Playtests status[/h3]

The main target of our last few months was to implement feedback from the demo, optimize the game and start a small playtest of a new mission. This is taking forever as our new mission was very heavy on performance and required a lot of work - that is still not yet finished.

Right now grab a small peak from our internal playtesting of the map, as we’re trying to get a stable and acceptable FPS and RAM usage.

Right now the FPS is getting where we wanted it to be, but RAM usage is still above 13-14 GB at peak on that mission. We have to lower it at least to 11-10 to even think about sending it to a playtests so still takes time.

[h3]PzKpfw V Panther Ausf. A[/h3]



During the last development status, some of you noticed that the Panther tank can be spotted in the video. We added it to the game when we were working on the optimisation, but there wasn't much opportunity to 'officially' introduce it. So we are doing so now.



[h3]Desync fixes[/h3]

We've been working on a problem that made the game completely unplayable at one point - the desynchronisation of the game. This was caused by large lags, for example when spawning many units at once, especially vehicles, and caused the game to lose at least a few dozen frames. When frames were lost, the synchronised OnChange property notifications were lost. Clients would not respond to the property change and desync was imminent.

We've just finished rewriting much of the project to take a different approach, optimising what and how we load during unit spawn. The desync is gone, but the spawn time can be further reduced and the lags spread out - still to be done.

[h3]CPU - GPU Optimization[/h3]

The biggest optimisation problem we've encountered so far in Tank Squad was related to the way objects were sent to RAM and VRAM. Previously, each texture in our scene, was sent as an instance, but was sent independently. That is, each unique material was treated as a separate object that had to be mapped to the graphics card's memory.

Each graphics card has a limited capacity to process unique textures simultaneously, no matter how much VRAM it has. If we exceed the parallel computing capacity of the graphics card, the system starts to compensate for this problem by creating special paging files in which the CPU will hold textures in RAM ready to be sent to the graphics card. This generates a huge consumption of system memory. This problem already existed in our old demo, which you still have the opportunity to play.

Our solution was to create texture sets that are sent in packets to the graphics card, so that we can store them on VRAM, which the graphics card can access much faster. The difference is that the GPU treats the texture packets as one composite texture. This managed to halve the system memory usage, and resulted in a much more stable Unity experience.

This solution required us to make fundamental changes to the way objects are rendered, which was a laborious and lengthy process, but it has had the intended effect.

At the moment we are still in the process of testing the changes we have made. Our aim is to achieve optimal performance on computers with 16GB of RAM.


Thank you and have a good one!
DeGenerals

Development Status #63


[h2]Dear Tankers,[/h2]

Welcome to our 63rd Development Status. Lets take a look what happend during development last weeks!

[h3]Devlog #6[/h3]

[previewyoutube][/previewyoutube]

[h3]VFX update[/h3]


We are working on updating the battle VFX in our game. Currently the focus is on tracers and muzzle flashes and smoke trails. Generally we are in the middle between being historically accurate and having fun gameplay - some effects will happen more often. For example tracers - some will be exaggerated (enemy muzzle flashes, AI tracers) and some kept smaller. Our vehicle dust generation from shooting and driving, so the player can actually see something.



Thank you and have a good one!
DeGenerals

Development Status #62


[h2]Dear Tankers,[/h2]

Welcome to our 62nd Development Status. Lets take a look what happend during development last weeks!

[h3]Visors[/h3]



Over the last few weeks, after Christmas and the New Year, we have continued to work on a new feature in the game, namely crew slots in a tank. As we wrote earlier, it will be possible to choose in-game whether to have players in slots during missions, e.g. driver, commander or gunner.



On the visual side, we are adding and improving the interior elements of the tanks, including the scopes. Pictured here is the new driver's visor on the Tiger I. In addition to this role, there will be new visors for the commander, radio operator and gunner.

[h3]Mission overview - Push to Vinogradovka[/h3]

Preview of the design (subject to change)



Push to Vinogradovka will be the 7th mission in the Germany campaign, and it has a different approach to the gameplay mechanics. The map is divided into 5 sectors. In the middle is a road that the Russians use to retreat. Our task as German tankers was to catch up with the USSR tank regiment, but the Russians were prepared for such a scenario and made the main road impassable.

Each time you play this mission, the sectors available to the player are randomly selected, making it always entertaining and different.

Preview of the map (WIP)



Each sector will have unique terrain and give you a different way to engage in combat. The whole map is a tree labyrinth, so with our approach you will always be going through a slightly different place.



We are currently testing this type of map design and would love to hear your thoughts on it. Our focus here is to maximise the use of the terrain for gameplay purposes, while still making it fun and streamlined for the player, without unnecessary detours just for the sake of it.






Thank you and have a good one!
DeGenerals

Development Status #61


[h2]Dear Tankers,[/h2]

Welcome to our 61th Development Status. Lets take a look what happend during development last weeks!

[previewyoutube][/previewyoutube]

[h3]Environment Overhaul[/h3]

Change from built-in to URP, had to spawn new approach to our visual fidelity. With new technology, came new tech art pass. We had to rework our shader for trees, and other vegetation, because it didn’t meet our new expectations. With that in mind, we got back to the basics, addresing the problems You, our Community had in demo tests couple of weeks ago:

  • Performance
  • Overall look & feel






For fixing our performance, we had to cut geometry from trees. GPU Instancing of 30 000 trees with 3-4K trisses, inputted heavy strain on GPU. So we cut triss numbers in half, which gave us much more resources to work with.



Because of these changes, less geometry directly impacted how our game looks from the distance. Unity auto-optimized rendering hides geometry, if said geometry was smaller than one pixel to render (tree leaves started to vanish unnaturally). Our new shader had to compensate this problem. Chosen approach was to use higher values of alpha cutout threshold with the distance from player camera. This way our trees from afar look better than previously, beacuse they are blending better with environment. We also introduced specular, and emission fading, to boost volumetric feeling of vegetation. With this “alpha trick”, we added special depth pass on the shader.

Depth pass write into Z buffer geometric information of every mesh on the scene, which prevents overdraw in actual forward+ pass for semi transparent materials (like leaves for example). This way we are minimizing numbers of one pixel being rewritten by the GPU. To push this approach even further, here comes the reduction of alpha cutout, mentioned above. With this trick, tree leaves obscure more screen space, which reduces even more pixel rewrites.

Also we use atlas textures for every tree and grass in the game. With this approach we are reducing use of RAM, VRAM, and cycles of GPU work to render everything.



For overall look, with URP came new lighting model. Physical Based Shading use physics principles for lighting. The main change is conservation of energy. Light dissipates more naturally in the scenes. Previously our lighting model was based on Blinn-phong approach, which is quite nice approximation of natural lighting, but has nothing to do with realistic lighting.

We also added new tech to the shader itself. Our vegetation now have simple implementation of subsurface scattering, which gives feeling of light going through leaves. We also baked Ambient occlusion to the vertex color, to boost volumetric feeling, and make trees look less “flat”. With vertex information, we additionally changed vertex normals, to make shading more smooth and natural.

Additionally to all, Tank Squad presents its first steps towards dynamic time, and weather. Everything on the scene is computed in real time, no baking involved.



Changes also come in for our sky, fog, and clouds. Now environment as a whole, feels more connected. We introduced to our workflow implementation of decals.

Tank tracks, or some other smaller details will be added to Tank Squad with next development cycles, which give us another tool in creation of believable terrains.

With URP also came in Screen Space Ambient Occlusion, which unfortunately is not meeting our expectations, so we are swapping SSAO for HBAO+. AMD FidelityFX Super Resolution will make its appearence too, so for people that struggle with performance, this should help them resolve this issue to some extent.



[h3]AI enhancements[/h3]

We’ve been pushing the next phase of AI enhancement process, this time focusing on attacking and ambushing.

Quick summary of both behaviour types:

Attacking means either level designer sets up an event with Attack Command for specified squads to:

  • Move towards specified place or along waypoints
  • If units get engaged while moving towards the target position they switch to assault behaviour:

    • The squad is divided into 2 groups, where one group assaults, second group is prone and provides support fire
    • Every X seconds the groups switch and rush toward their enemies

  • Based on this tactic:


Ambushing means:

  • staying in assigned pose by lvl designer
  • Not starting combat untill:

    • being shot upon
    • enemy is close enough (is lvl designer set this as trigger to start combat, we call this ambush radius)
    • enemy has triggered a specified collider on scene

  • When combat starts all units switch to one of two behaviour types:

    • Standard - when they are set to be defensive, so they just stay where they were and open fire
    • Attack - start actively seeking contact or directly assaulting the enemy that triggered the ambushers





We would like to showcase this in future dev log or even dev stream how this works, as our plans to extend the AI are big. But we have to focus on many different aspects of the game. Thats why we now want to finalize and iron out current AI features and go on to those other aspects.



Thank you and have a good one!
DeGenerals