Welcome to our 40th Development Status. You can see on what we were working the last two weeks.
Walk through the repair station
We are still working on the repair scene board. We invite you to take a short walk through it with us.
Environment
We've finished most of the level design at the Prokhorovka battle. Below you can see progress from blockout to the first environment pass. What you see is 1/16 size of the map, scene dressing of the whole map is going to take a few months.
Ammo & medical boxes
Special thanks to our community member ✠LootSoldat✠ from discord for reference pictures!
KV-1
KV1 is in the development stage. First, we are preparing a high poly model which we will use to bake all the details on the low poly model.
For now, the exterior is almost finished (without additional stuff e.g. boxes, and tow ropes; this pass will be in the next stage) and we are adding all stuff mainly inside the hull like control panels, ammo racks, fuel tanks, electric parts, etc.
The Interior of the turret also is almost done, there needs to be made some smaller fixes to set all objects properly in “technical harmony”. Also, the engine and transmission will be reworked or made from scratch because of the different structure than in T-34 which is ready. We try our best to provide as accurate historical quality as we can.
Thank you and have a good one! DeGenerals
Development Status #39
Dear Tankers,
Welcome to our 39th Development Status. You can see on what we were working the last three weeks.
Diorama
For the Main Menu, we are going with a diorama approach. By default, this will be the default scene visible in the Main Menu. We might add more scenes & layouts later on during the development. The design idea of it was to show a diorama of a tank being repaired on a field during or between the battles.
UI & Game branding changes
As we work on developing different aspects of the game, one of the important parts is the visuals of how the game is going to be represented. What colors, what logo is going to be used etc. Current colors and logotypes are going to be changed somewhere soon. This includes also improving the Steam Store layout with a new fresh look. Once we will set it all and mark it as ready you will of course be informed about it.
Here is a diorama with work in progress UI mockups screens showing how we are trying to adopt new things. New logotypes will come with a few variants. The main colors used are black/white and red. Keep in mind this is just a prototype and it's not meant to be 100% delivered with a full game. For example LVL. 69 is just a preview - we didn’t yet decide to add or have player progression in the game. If you are familiar with our first game Tank Mechanic Simulator, the camera will be animated/rigged. You should be able to spot some similarities as in there. Below is a screenshot taken from the project itself:
Recorded sample of how this UI works currently:
Currently, we have started prototyping a new look for Main Menu that includes new logotypes and new colors. What do you think?
Repair Station Environment
Another big push was on the first iteration of set dressing of a repair station scene. We have taken a look at terrain materials, improved shading and overall feel of the scene.
Placeholder models started to be replaced by final assets. Layout elements of the scene such as the HQ and ammo stations have been redone with new assets.
The whole scene has gotten a lot of love over the past weeks of work.
Opel Blitz
Opel Blitz is a German truck, produced from 1930 up to 1975. Blitz, German for "lightning" reflected that not only by the emblem on the grille, but also by the way it paved the way to new, lightning quick German tactics developed during WW2.
In the years before the war, Opel was the biggest truck manufacturer in Germany, and to rearm the country, it helped by producing around 130,00 of those vehicles. It was powered by either a GM Marquette engine for heavier applications, or by Opel's own engine for lighter ones. By 1934, however, the GM engine was replaced by another Opel design, that was so similar to Chevrolet engines, that if any malfunction appeared in the field, it could be repaired using allied vehicles' parts.
When the war started, Wehrmacht started heavily using the 3.6 tonne, 4-wheel drive of the Opel Blitz, seen in this status. To deal with bad road conditions in Russia, a half-track model of the Blitz was created as well, called Maultier.
For our game we made 3 variants of this truck. Two with cargo, one closed and the second one as a more open variant. Third variant is a medical version.
Level design
Some new features and improvements in battle levels:
Configuration of side objective types:
Conquer
Defend
Protect
Destroy
Collectibles have been added
Randomization of AI units positions
Optimization of performance: limit amount of AI units active at once
Retreat of friendly and enemy units when they’ve lost objective or their vehicle is broken
Configuration of airstrike events
Randomization of timing in events
Units field of view
Detail blockout:
Mills
Cemetery
Hives
Road signs
Sawmill
Sets of houses with backyards
Turf mine
Thank you and have a good one! DeGenerals
Development Status #38
Dear Tankers,
Welcome to our 38th Development Status. You can see on what we were working the last three weeks.
PGA
Last week (Friday) we had the great pleasure of visiting Poznań and participating in the PGA (Poznań Game Arena). We took it as a good excuse to integrate and gathered 16 people coming down from all over the country to attend the event together. In addition to visiting the site itself, we attended several lectures, met people from the industry, and had the opportunity to play a few new titles. In the evening we went out for dinner together, and then visited a few Poznan pubs, where what was going on we will leave to ourselves ;)
Crane
Current technical features of traces
Support for many (up to several thousand) emitters (objects that generate traces);
Support for many Terrain Components, without restrictions (each of them can have any number of splatmaps);
Track marks fade effect (its speed can be set in the component);
Smoothing traces, high quality, and precision;
Ability to set shared albedo (RGB) smoothness (A) and normal maps for traces from the component level;
Each trace has a radius adjusted to the size of the emitter (based on bounds if it has a Renderer), for empty GameObjects the radius (Radius) is set globally from the component level;
The ability to decompose the generation of traces in every N image frames to obtain better performance;
Tracks are generated only if the emitter has contact with the ground surface. No more bugged traces floating in the air. Proprietary way of detecting the geometry of the terrain, optimized, without physics or raycast.
Level Of Details for traces.
PaK 40 animations
Some time ago we’ve showed you a model of a german anti-tank gun 7,5 cm PaK 40. We’ve done animations of characters and of the PaK 40 itself.
Airstrike
During the battle, players will have to watch out for enemy airplanes. If players notice enemy planes incoming, they can hide from them in a forest or between buildings. There are going to be an enemy and friendly airplanes. Something that was happening in real life during world war 2, was that planes could confuse enemy tanks with their tanks. For that reason, tankers were placing flags on top of their tanks to make it easier for pilots to recognize them. In Tank Squad, players will have to place flags on their tanks to decrease the chance of friendly fire from airplanes.
Thank you and have a good one! DeGenerals
Development Status #37
Dear Tankers,
Welcome to our 37th Development Status. You can see on what we were working the last three weeks.
Binoculars
Blowtorch
German Wagon
Tank’s movement speed dependent on the terrain surface
Tank Squad has a new feature called "Terrain Physics Materials". It is based on the written scratch new scripts by us. In real-time, this system detects on which terrain texture (splatmap) the vehicle is currently situated. In practice, it gives us new possibilities. For example, to simulate terrain friction, we can calculate the maximum vehicle speed value independently for every ground texture. So now, when the tank enters different surfaces (muddy/sandy /rocky etc.), the system adjusts drive physics to present a more realistic behavior of the vehicle unit.
New Environment Artist
A new Environment Artist - Sebastian has joined our team this week. He will be responsible for modeling and sculpting the terrain and its integration with gameplay. Together with the level design department, he will make sure that the maps and missions in Tank Squad are interesting and balanced in terms of difficulty. In addition, he has made a menu background for us, which we will soon be able to show off in one of the future development statuses. Our team consists now of 21 people and is still growing!
Thank you and have a good one! DeGenerals
Development Status #36
Dear Tankers,
Welcome to our 36th Development Status. You can see on what we were working the last three weeks.
PAK 40
PaK 40 - a German 75 mm anti-tank cannon developed between 1939 and 1941 and used by the German army during World War II.
ZiS-3
ZiS-3 - a Soviet 76 field gun developed in 1942 and used during World War II by Soviet army.
Swamps
Prohorovka is a map mostly filled with grasslands, forests, and smaller urban agglomerations, which might seem a bit monotonous to some of the players. As a solution to this matter, we've decided to introduce a bit of variation in the form of a new terrain biome - the swamps. Our main intention was to create an immersive surrounding that would make you guys feel the grim atmosphere of the wetland and provide some exploration potential for those, who curiously look at the world around them. You may find here tons of mud, puddles of the marsh water, and only a few roads that guarantee a safe passage - going out of the track might be beneficial, but you do it at your own risk! The production process of a swamp was fairly easy, as it only required the use of basic terrain deformation tools, followed by polishing with some additional details - you may see it on our timelapse above! As we all know, nature is the most impressive artist, and to replicate its creations we needed some randomness and "organized chaos". Therefore, we used irregular "terrain brushes" to obtain natural-looking curves with randomized height and shapes of the "ground islets". Once the formation was done, we covered the area with a mixture of different textures and adjusted the water's color, so that it would suit the gloomy vibe of a smelly morass. Thus, after a few hours of creative efforts, we are finished with a new - hopefully interesting - location that is waiting for your tanks to come and take the challenge. Make sure that you pack a few shovels and equip the vehicles with a towing chain - the peat ground is dense and it most certainly won't give you an easy fight!
Level Blockout
We’ve recently changed our approach to level blockout - unlike previously, now we are using very basic-looking, geometric assets which’s the main purpose is to communicate terrain’s logical role. Our main concern is to place the obstacles, enemies, objectives, and events in such a way that it provides a player with the best gameplay experience possible. As you can see, our map currently looks more like a floor full of plastic toys, rather than a photorealistic eastern terrain, but this is the case - for now, we are going for simplicity and clarity. This reversed strategy will allow us to precisely determine which parts of the map are still under blockout processing and which have already been finished. Once the blockout stage is considered to be done, environment artists will take rule over the area and change it into more visually appealing - stay tuned, as we will most certainly share the results with you in the future!
Thank you and have a good one! DeGenerals
Development Status #35
Dear Tankers,
Welcome to our 35th Development Status. You can see on what we were working the last two weeks.
Tents
The Truppenzelt was used as a storage or quarters for German officers and soldiers.
The Große Stabszelt - Germans used a unique painted camouflage on these tents.
Zeltbahn - Soldiers needed at least 4 pieces to make a tent.
Level Design
During the last two weeks we worked hard on the maps' design - not only on the blockout but holistically revised our vision on the objectives, surroundings, and experience that we want to provide you with. In this task, our team was supported by a fresh member, Mikołaj, who from now on will work primarily as Level Designer for the Tank Squad project. As we want to deliver the best possible quality, in terms of both visual and gameplay design, we are currently working only on Prohorovka, to give it all the time and love it deserves.
That being said, we may assure you guys that now we have a clear overview of all primary and secondary objectives, which allows us to focus on building the surroundings, placing enemies, and testing the gameplay. So far, we have filled the left flank of Prohorovka with occupied villages, lines of deadly trenches, and a few Soviet outposts that will try to prohibit German forces from breaking their defenses and besieging the city.
In the nearest future, we will continue designing the western scenario, which will include some difficult terrain and a few easter eggs - be sure to look for them closely, once you’re deployed on the battlefield!
Animations
In our game, you’ll be able to order AI units to repair a tank. We’ve created a set of animations to visualize AI repairing it.
Panzer of the Lake
O Panzer of the Lake, what is your wisdom?
TikTok
We recently launched a company TikTok, where you can find additional footage from Tank Squad production and our other games. This is another platform where we will be able to publish our content and keep in touch with you. We also hope that this will attract more players to us.
Watch us and leave some kind of trace of yourself in the form of a like or a comment! :) https://www.tiktok.com/@degeneralsofficial
Thank you and have a good one! DeGenerals
Development Status #32
Dear Tankers,
Welcome to our 32nd Development Status. Check out our work from last three weeks
Anhanger maschinensats sd.ah.24
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.
Characters on the repair scene
We’ve created some idle animations for NPC characters in the repair station. It adds some life and makes the scene more interesting.
UI Markers
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.
UI Compass
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.
Water and mud VFX
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.
Thank you and have a good one! DeGenerals
Development Status #31
Dear Tankers,
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.
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
Dear Tankers,
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.
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
Dear Tankers,
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="b19Oaq5Ybc8;full"] The list of hand order animations: