1. Tank Squad
  2. News

Tank Squad News

Development Status #33



[h2]Dear Tankers,[/h2]

Welcome to our 33rd Development Status. You can see on what we were working the last two weeks.

[h3]Release date postponed[/h3]
As we have reported before in comments on the Steam forum or discord conversations, we have to postpone the release date to Q4 2023. We are still working on the game as you can see in the devstatuses, but adding all the content we want takes more time than we anticipated when we started this project. We apologize for this delay. We hope that by doing so, we will be able to bring you the high quality game you have been waiting for so much.

[h3]Soviet “Teplushka” railway wagon[/h3]


[h3]Turret Stands and ladders[/h3]


[h3]Extinguisher[/h3]


[h3]New testers[/h3]
This month two new QA testers, Jakub and Marcin, have joined DeGenerals to help us with the testing of the game and its features. Their responsibilities consist of explorative tests where they just play the game and notify us about bugs they have found, standardized tests where they test a specific aspect of the game with a checklist, for example, they test each character animation for each character; and gameplay tests where they judge whether the game is fun enough. QA department in our studio has got currently 4 people. They are responsible for the final quality of the game.

[h3]Tank parts assemble and dissemble[/h3]
While holding a specific item (in this case - Notepad) Player will switch to Repair Mode which let him add or remove smaller vehicle parts. There are two available modes at the moment - “Dismount” and “Mount”. In “Mount” mode, we can highlight parts we want to remove just by looking at them. After switching to “Dismount” mode, all available empty slots for parts will be highlighted, looking at such a slot lets the player see if he can put a vehicle part in its place or if it’s blocked by other slots. This is the third way for modifying our vehicles. Now some parts need to use the crane, some can be carried around by the player character and some can be dismounted/mounted this way.

[previewyoutube][/previewyoutube]

[h3]Visit at tank museum[/h3]


We are delighted to inform you that we have started cooperation with the Museum of Military Technology Gryf (PL: Muzeum Techniki Wojskowej "GRYF")!

Thanks to their rich collection of vehicles, exhibits, and documentation, we will be able to provide you with even more detailed models of tanks, weapons and other equipment.

We encourage you to visit their website and have a tour in person, just like we did or follow latest news from here!
[previewyoutube][/previewyoutube]

Thank you and have a good one!
DeGenerals

Development Status #32



[h2]Dear Tankers,[/h2]

Welcome to our 32nd Development Status. Check out our work from last three weeks

[h3]Anhanger maschinensats sd.ah.24[/h3]
The Sd. Ah. 24 Maschinensatz was used to transport the heavy machine set A with a power of 220/380 V, 12 KW, 25 ampere. Usually, the Sd. Ah. 24 was used by radio and maintenance units.



[h3]Characters on the repair scene[/h3]
We’ve created some idle animations for NPC characters in the repair station. It adds some life and makes the scene more interesting.
[previewyoutube][/previewyoutube]

[h3]UI Markers[/h3]
To help the player better and faster prepare for the next battle, we have designed a system of so-called Repair Tasks, which will include the repair/replacement/replenishment of tank resources, troops, and other bonus items. Each task will have a hint or several hints and landmarks of the places where this task must be completed. For example, the player has the task of finding out information about the upcoming battle, so at the moment in the game, he will have HQ indicated when talking with which he will find out all the necessary information.



[h3]UI Compass[/h3]
As you can see, some tasks will consist of several tasks, and to improve the orientation in the area when searching for the location of these tasks, we have made a special compass that the player can see at the top of the screen. Here, in turn, special hints will be displayed that make up a holistic task, which was described earlier.



[h3]Water and mud VFX[/h3]
We present three new dedicated particle effects. They are activated during the following actions: when the tank enters muddy water, when is inside and finally, when leaves the water surface. Particles are simulated from two-dimensional billboards, which were originally generated in software called Houdini and then exported as a texture atlas.
Also, the following video shows new mud materials, based on a technique called flow mapping. As the name suggests, new materials use shaders with supports for flow maps. These textures contain vector data for local distortions of UV coordinates, which allows for the creation of more realistic fluid surface animations.

[previewyoutube][/previewyoutube]

Thank you and have a good one!
DeGenerals

Development Status #31



[h2]Dear Tankers,[/h2]

Welcome to our 31st Development Status. You can see on what we were working the last three weeks.

Tank Crew
We’ve added a tank crew into a tank. That means that we are programming different states for the tank, for example, if the gunner is dead, the tank is unable to shoot, if the reloader is injured, it takes more time to reload, etc.
The tank crews will have dedicated animations and players will be able to see their reactions to specific events such as the Tank being hit, reload, shot from the main gun, etc.
We have added basic animations for now, and we will be adding more animations for each crew member during production


Player’s decisions
In the demo version of the game that we plan to release (and then in the final version), players will be able to take a series of decisions that are going to impact the course of the game. At the beginning of the game, at the repair station, players will receive information about the next mission. The information will consist of what kind of enemy units they can expect in what proportions if the area is for close distance or long distance combat if they can expect mines, obstacles, bridges, etc. Also, each mission is going to have different scenarios. You will be able to choose if you want to attack from the left/right flank or center. Each scenario is going to have different characteristics. Players can call for recon to receive additional information, but calling a recon will cost some resources.
Using those information players will have to take a decision on which tanks are they going to use (light, medium, heavy), what kind of infantry are they going to take with themselves, and if they are going to need artillery support or maybe airplane support, etc.
We have to balance each player’s decision in such a way, that if they take wrong decisions, the game will teach them how to make better decisions to win a mission without making it too difficult to learn or without taking too much time. On another side, when players take optimal decisions, we want to reward them for it, but at the same time, we do not want to make the game as a result of their decisions too easy, as it can become boring after some time. We all expect a challenge that is not too easy nor too difficult. The challenging part for us, developers, is that different players are going to play our game.

Soviet anti-tank mine TM-35
TM-35 - A small, rectangular Soviet anti-tank mine, widely utilized during WW2. Comprised of a metal case, carrying handle, and a raised pressure plate in the center. The mine's load was 200g blocks of TNT and could be packed up to 2.8kg of those. Despite being called effective, it did not have the punch required to cripple German armored vehicles sufficiently.


Levels junction
To make the work of our graphic designers and level designers easier, we needed to abandon one large battle scene approach. So to keep battles scale big, we developed a system that allows to easily save a collection of sublevels. Such a collection, in part or in whole, can be loaded in the editor or during the game. It will also make it easier for us to optimize the game. So right now we have game logic, terrain with props, lighting separated in sublevels, which we join together when game is loading.

Panzerfaust animations
Animation set for soldiers with the Mauser Kar98k rifle and panzerfaust as an additional weapon, as we said in the previous stage of development, units with anti-tank weapons will be visible to players.
[previewyoutube]https://www.youtube.com/watch?v=t0mHMzHxkBM&feature=youtu.be&ab_channel=DeGenerals[/previewyoutube]

New team members
Recently two new junior 3D artists have joined our team to help us with creating 3D assets. Their tasks will consist mostly of creating content for the environment of the game but also in creating some weapons and vehicles. TM-35 mine and power set models that you have seen above were made by those junior artists.

Thank you and have a good one!
DeGenerals

Development Status #30



[h2]Dear Tankers,[/h2]

Welcome to our 30th Development Status. You can see what we have been working on for… yeah. It's been a while, right?

For a long time, we managed to publish development statuses regularly. Unfortunately, by focusing on testing, optimization, and documentation, we didn't had anything interesting to show you and we preferred to avoid uninteresting publications.
However, after this break, we are back and we hope that you missed us as much as we missed you!

Vertical Slice

We’ve been focusing the most on transitions between repair and battle levels. When a player launches the game, the first thing they see is the main menu. They start a new game, first, they are going to select a campaign and create a room so other players can join them. Once they start the game, they begin at the repair station, where players spawn the vehicles they want to use, prepare them for battle, load ammo and fuel, customize them, select a strategy for battle, manage resources and choose some support units. Then during the battle, players' tanks will receive some damage, they will spend resources, gain new resources, lose some AI support, etc. After the battle, players depending on if they have won or lost the battle, will go back to the previous repair station or move to the next one. Also, they will be able to restart a battle. All the information between players and levels has to be transitioned and synchronized.

Panzerfaust animations

A series of animations for soldiers with Panzerfaust and Mauser Kar98k Carbine. In gameplay anti-tank grenade launchers like Panzerfaust will be visible on units if they are equipped with them to inform the player that such unit is a bigger threat than the rest of the soldiers, of course in case of Panzerfaust it will be thrown away after use.
[previewyoutube][/previewyoutube]

Repair Scene

We are making a new design for the repair scene. It includes:
  • Headquarters
  • Quartermaster
  • Human resources
  • Field hospital
  • Infantry
  • Logistics/sappers
  • Scouts
  • Repair Stations
  • Player spawner/despawner
  • Vehicle parking
  • Graveyard
  • Spare parts
  • Rearm station
  • Refuel station
  • Paint shop
  • Bergepanther


On the repair scene, we’ve been developing an interaction system with NPC. It required some changes in the configuration of characters. Players can approach NPCs and interact with them, which will be required to gain or convert resources, gain or sell vehicles, set a strategy for a mission, etc.

Game economy

We’ve begun to work on the game economy. Here are some basic questions that we have to answer:
  • How many resources and vehicles player will gain with each mission?
  • How many resources will we drain from players in each mission?
  • How expensive are going to be parts and vehicles?
  • How much fuel will the vehicle consume in each mission?
  • How much power will the player gain during the progression of the game?
  • How quickly vehicle parts will need maintenance?
  • How expensive is going to be a new vehicle?
  • How much AI support will the players be able to take with them to each mission?

The difficulty in designing and balancing the game economy in Tank Squad is in the fact that we have to balance repairing vehicles, balance battles and do all the balancing for 4 players in multiplayer simultaneously. So we are going to do a lot of iterations and testing to find an optimal solution. Sometimes a small change in the game economy can decide if the game is going to be too easy, too difficult, or impossible to finish in certain circumstances. We are going to use mathematical calculations and statistics in developing game economy but we won’t rely only on that. We are going to play the game over and over again and take some intuitive decisions as well.

Economy structure (code)
We’ve written code for economy structure. It contains:
  • Resources pool
  • Resources container
    - Static
    - Mobile
  • Resources migration
  • Resources converter
  • Resources inventory
  • Pricing
  • Resources source
  • Resources drain

The game will feature a variety of gameplay when working with resources. For example, two separate mechanics were developed for using a liquid type of resource (fuel and oil) and for a solid type of resource (for example, ammunition for a tank). Thus, we want to bring the player as close to reality as possible and add interest even to such details. We have also made progress in interacting with such objects. For example, now the player can refuel his tank using a canister, which first must be filled at a special point on the repair station map. We’ve written a code for moving a resource from one place to another using a special container (in that case, a canister).

Environment: Railroad

As you’ve probably seen in previous development statuses, we are working on the Prokhorovka map. It contains a railroad and train station. So we’ve been working on that too. Here is a screenshot of new 3D models for that specific map.


Thank you and have a good one!
DeGenerals

Development Status #29



[h2]Dear Tankers,[/h2]

Welcome to our 29th Development Status. You can see what we have been working on for the last two weeks.

We’ve been asked recently by a member of our community discord, if we could explain what do we do to optimize our game to make it possible to run smoothly on regular PCs. Today we present some of the techniques that we use to achieve that.

Level of detail

Most 3D models in our game have a LOD (level of detail) version. Each LOD version is shown depending on the distance from the player’s perspective. The main difference in LODs is the number of triangles and vertices in the model. This optimization technique is applied in 3D models of environment, vehicles, characters, weapons. A model seen from far away does not need the same amount of detail as a character seen from close. Each model has got a so-called LOD group.



On the left, there is the most detailed version of the character. As you can see, its topology is the most complex one. On the right, there is a simple version of the model which will be seen from far away. Fewer triangles being rendered on your computer at the same time means better performance.

In some cases, the last LOD (farthest from a player) is just a 2D image of a 3D model. From far away you can’t tell the difference but the difference for the GPU is very noticeable. A 2D image has got 6 triangles, meanwhile for example a whole tree can have 15k triangles. This 2D image is what is called an impostor or billboard.



Another trick that we use is that we do not render shadows for objects that are far away from the player.

Bullet pool / VFX pool

To optimize the performance of our game we are developing an object pooling system. During gameplay, each object dynamically spawned in game, like bullets, effects, etc. is stored in a dedicated pool. Each time we want an object to appear on the scene, instead of creating it, we take it from the pool of previously created inactive objects and activate them with proper values, then instead of destroying we deactivate it and restore it back to the given pool. This way of reusing previously created objects helps to relieve the processing power of the CPU.

AI

For AI we split it into separated logics, so it can combine them as we want, but we save Ram and CPU this way. This also allows us to switch between commands, so it saves CPU as we have only the current one and previous command (only if needed) at a given time on all squads. We also made that finding big obstacles is only made by the squad leader, and he sends that info to others in his squad. A similar thing is with finding enemies, Leader checks if any of the units have an enemy, if he has it, he checks whether this enemy is still within range, whether the unit still has a weapon for that opponent, etc.
  • If there is at least one such unit, then it should be searched for a new enemy, only then the leader looks for potential enemies
  • If he has a list of potential enemies, on its basis, the unit that needs a new opponent selects the enemy accordingly, checking whether this enemy meets these requirements above (I have a weapon on him, he is within range)
We use our custom pathfinding that bases on the system that is used also by the game Easy Red 2, made by our friend Marco. It is more optimal, dynamic, and easier to use than Unity NavMesh, as we only have to set which collision layers are obstacles, and AI will find them.

For Infantry

Now code of AI infantry of player that follows tank is executed on this player client side, before that all AI was executed on the host side. Infantry gets logic of taking covers only when they are got near them, thanks to mentioned before commands system, so another CPU save.

For Tanks/Vehicles

In the case of Vehicles, we rewrite the way of syncing them in multiplayer. Now they send/receives only info about their movement as position and rotation, but we already had one idea of how to make it even more optimal. And all other calculations are made on the client side.
For Cannon and Turret, we send only info about rotation on one axis (x and y, respectively) and only for a weapon that is currently used.

BattleManager

We use BattleManager to control the course of the battle, it collects references to all objectives, events, and AI spawners in a given battle scenario, in the form of so-called Dictionaries. This allows us to use one of PhotonView instead of having a separate one for each of these objects. It also deals with their synchronization, as well as turning on / off further objects under a given scenario.

Animations

Also in the last two weeks, we’ve prepared some hand order animations using motion capture technology.
[previewyoutube][/previewyoutube]
The list of hand order animations:
  • Attention
  • Unite
  • Stop
  • Lie down
  • Move left/right/forward/back
  • Follow this way
  • Stop/Start engine
  • Move slow
  • Move back

Thank you and have a good one!
DeGenerals