Name: Jack Lin
Student number: 500870630
- 1. Why are we creating this?
- 2. Why is this so important for gameplay reasons?
- 3. Armor on vehicles and evolvement to tanks
- 4. History of mainly WW2 tanks battles and gulf war battles
- 5. Fury the movie analysis
- 6. Bullet behaviour
- 7. Evolvement in types of bullets fired by tanks
- 8. Created strategies
- 9. The steps we took
- 10. Further development
- 11. Conclusion
- 12. Links and articles
1. Why are we creating this?
In the realm of video gaming, especially in genres involving armored warfare, the pursuit of realism is not just a matter of preference but a cornerstone of immersive gameplay. Games that simulate tank combat, such as World of Tanks and War Thunder, have elevated the standards for accuracy, requiring players to engage in strategic planning and precise execution rather than relying on a spray-and-pray approach. The emphasis on realistic armor penetration mechanics is a response to a growing demand among players for an authentic simulation experience. In reality, a pistol or machine gun would hardly make a dent in tank armor due to its thickness and resilience, mirroring the in-game mechanics where such weapons are ineffectual against armored behemoths.
2. Why is this so important for gameplay reasons?
This level of detail is crucial for gameplay for several reasons. In tank simulation games, the player’s success hinges on their ability to understand and exploit the strengths and weaknesses of their vehicle and those of their opponents. Unlike traditional shooters where volume of fire can compensate for lack of precision, tank games like World of Tanks and War Thunder require each shot to count. War Thunder, known for its unforgiving realism, eschews the concept of hit points entirely, making one well-placed shot potentially lethal. This insistence on accuracy and knowledge of tank vulnerabilities adds a layer of depth and strategy to the gameplay, compelling players to think tactically about positioning, shot placement, and the types of ammunition they employ.
3. Armor on vehicles and evolvement to tanks
The introduction of armor on vehicles and the subsequent evolution of tanks were directly influenced by the challenges of trench warfare, particularly during World War I. Early attempts at armored warfare involved armored cars, but these were limited in their ability to navigate the treacherous, mud-filled landscapes and barbed wire entanglements characteristic of the front lines. The deadlock of trench warfare, with its vast networks of defensive fortifications, demanded a new type of vehicle that could provide breakthrough capabilities while offering protection against machine gun and artillery fire (Terrel, 2016). This need led to the development of the tank, a mobile armored vehicle capable of crossing difficult terrain and breaking through enemy defenses. Initially, tanks were slow and mechanically unreliable, but they represented a significant innovation in military technology, offering a glimmer of mobility and offense in the static battles of the time. As warfare evolved into World War II, the role of tanks expanded significantly, leading to advancements in speed, armor, and firepower. Tanks became central to combined arms tactics, transforming the landscape of ground warfare. The evolution from simple armored vehicles to sophisticated tanks reflects a continuous adaptation to the demands of modern warfare, rooted in the lessons of trench warfare that dominated the early 20th century.
4. History of mainly WW2 tanks battles and gulf war battles
The historical evolution of tank warfare, particularly during pivotal conflicts such as World War II and the Gulf War, further underscores the importance of realistic tank simulation. The introduction of tanks on the battlefields of Europe during World War II, for example, revolutionized warfare. The United States, during the D-Day invasion, deployed a significant number of tanks to counter the German forces, which heavily relied on armored platoons in combination with ground troops and air support, a strategy epitomized by the Blitzkrieg tactic that led to the rapid conquest of Poland (Blitzkrieg: Definition, London & World War II – HISTORY, 2022). Despite the numerical advantage, American tanks were often outclassed by their German counterparts, which boasted superior firepower and armor. This historical context enriches the gameplay experience, offering players a window into the strategic and technological challenges faced by commanders on the ground.
5. Fury the movie analysis
The movie “Fury,” lauded by tank experts for its realistic portrayal of tank combat, serves as a prime example of the intricacies of armored warfare. In one notable scene, a U.S. Sherman tank faces off against a German Tiger tank, highlighting the Sherman’s inability to penetrate the Tiger’s front and side armor. The Sherman’s tactical maneuver to the rear of the Tiger, exploiting its relatively weaker armor, mirrors the strategic gameplay decisions players must make in tank simulation games. This scenario emphasizes the importance of understanding armor vulnerabilities and reinforces the need for tactics such as flanking in both historical and virtual armored engagements.
6. Bullet behaviour
We can say for sure that the greater the distance the lower the velocity of an object and the more amount of “penetration drop off” we experience. So our drop off is accurate to real life and isn’t just some random numbers slapped together.
In the above 2 gifs we see why bullets bounce off and what we mean by the normal of the hitsurface
7. Evolvement in types of bullets fired by tanks
The evolution of tank ammunition has led to the development of various shell types, each designed to overcome specific battlefield challenges and exploit vulnerabilities in enemy armor. Among these, Armor-Piercing (AP) and Armor-Piercing Composite Rigid (APCR) shells are the most commonly used, but the nuances of tank shell technology extend further into aspects like shell normalization, ricochet mechanics, and the effectiveness against different armor types (Tank Ammunition – War Thunder Wiki, z.d.).
Normalization refers to the process by which a shell, upon impact, attempts to “normalize” or align more perpendicular to the armor surface. This is achieved through the shell’s design and the physical forces exerted upon impact, effectively reducing the effective armor thickness that the shell must penetrate. Normalization helps in increasing the likelihood of penetration by adjusting the angle of impact to be more favorable see fig 4. Most AP and APCR shells exhibit some degree of normalization, assisting in their penetration capabilities (Trajectory Normalizing Factor, z.d.).
Ricochets occur when a shell strikes armor at a steep angle and bounces off instead of penetrating see fig 5. This phenomenon is influenced by the angle of impact and the relative size of the shell to the armor’s thickness. For AP and APCR shells, a key rule is that if the shell caliber is more than three times the nominal thickness of the armor, a ricochet is unlikely to occur at any impact angle, enhancing their effectiveness. Conversely, High-Explosive Anti-Tank (HEAT) shells are more prone to ricocheting at angles greater than 85 degrees, irrespective of caliber (“Mathematical Model For Bullet Ricochet On JSTOR”, z.d.).
HEAT shells operate differently, employing a shaped charge to project a jet of molten metal through armor. However, their effectiveness is significantly reduced against spaced armor—a type of armor designed with gaps or layers to dissipate the energy of incoming shells. The “air gap” in spaced armor causes the molten jet from HEAT rounds to lose its coherence and energy before reaching the main armor layer, making HEAT less effective in these scenarios (Wargaming.NET, 2022).
High Explosive shells are designed not primarily for penetration but for delivering a high-explosive charge against or near the target to cause damage through blast and fragmentation. While HE shells have limited penetration capability, they can be devastating if they do penetrate, as the explosion occurs within the confines of the armor, causing significant damage. Even without penetration, the blast can damage external equipment, injure crew members through spalling (where the interior armor surface emits shrapnel), or simply shock and disorient the crew.
8. Created strategies
Our project adds in quite a few different strategies that will compliment gameplay here are a few notable ones mentioned below. What is interesting to see is that this penetration system works both ways so the player defending himself from getting shot but also the player trying to penetrate someone else his armor and also having a form of risk and rewards play.
Side scraping

Side scraping is a maneuver that every person that plays a tank game should know. By having our frontal hull hidden behind a solid object and only showing our side armor at a very steep angle we create a lot of effective surface that the enemy needs to penetrate through. As you can see the tank in the picture above is as red as a tomato and cannot be penetrated through. Let’s calculate its effectiveness to give a better idea of simply making an angle changes how much more material the shell has to penetrate through.
Hull down
Hull down is part of the strategy where a player hides his hull behind a solid obstacle and mostly only shows a turret. The reason this is very effective is first a very shell hitsurface for the enemy to hit and the second is the nature of the turret. A turret is way more rounded in comparison to the hull. This creates awkward angles for the enemy to get a good shot off. Most of the time it’s not possible for the enemy to hit a 90 degree shot on a rounded turret. The player can even add in more variables like rotating the turret around and moving the tank back and forth. Making it almost impossible to hit a good tank that is hull down.
Face hugging
This strategy is fairly straightforward and it does exactly as the name suggest. As the player you want to sit right in front of the other tank and keep on hugging him. The reason being is that you will only expose your upper frontal hull that is angled and your frontal turret. The two strongest parts of your armor. Not only does this take into affect a tanks armor rating but interestinly enough we could also incorperate gun depression values (the gun being able to elevate down in degrees)

Shell management
Risk and reward by using a lower penetration value that does more damage, you incentivise the player to risk a safer option for more damage output. For example AP shells are the baseline so we have the average amount of damage paired with normal penetration values. Our APCR rounds have higher penetration values. But to avoid people spamming this round we could for example incorperate a smaller amount of damage value (not in our game yet)
9. The steps we took
Setting up project
We first started working on getting our Unity all setup, this also means setting up a GIT so we have easy version control. We used GitHub for our case and used Unity version 2022.3.20f1. We decided to go for the Universal render pipeline instead of the standard render pipeline. Since visual fidelity is much better with the Universal render pipeline and we have a lot more visuals to work with. Also having multiple light sources in the game has better performance on the URP. We didn’t want to choose HDRP since that isn’t compatible with the mobile platform.
Scene overview
One of the most important things to do is having a clean hierarchy. We separated all of our different needs in folders and started working on importing some models and getting them ready for work. In our instance we decided to go for a German Leopard tank. We need to assign all the correct materials. After that we gave our ground a simple texture and added in a plane as the target surface. We make sure that this surface is on a separate layer to keep things clean and organized.
Straight flying bullet
The first thing we did was having a simple bullet fly at a straight angle with no bullet drop incorporated. We previously discussed this with a few teachers already and the idea of a physics based bullet was proposed. The alternative was doing this on RayCast bases. The reason we wanted to try with physics is because of the amount of force that sits behind these flying projectiles they “could” realistically simulate the force of a real bullet. But after experimenting with it myself I wasn’t able to get all the required data that I needed. For example with RayCast I can easily tell the impact angle in comparison to the hitsurface. A raycast also gives me immediate results that I can use in my code. Physics based was being too unreliable. I also wasn’t able to tell what the impact angle was.
So we would simply find the forward rotation of our bullet and then add some velocity to it based on time to send the bullet straightforward. We make sure to Instantiate the bullet within the barrel so it looks like the tank is firing a round. We then make sure this only happens on a keypress I binded mine on spacebar.

Target surface
With our bullet flying as if it was being fired off we start working on our target surface. For our target surface we have to divide it up into 2 parts so the first thing was having our target details that can be obtained by the bullet. Since the gun is the one who is shooting out the bullet but our gun is not the one checking if we hit a surface and what information is on that surface. So our bullet is the game object that will retrieve all that information. In our case we tied our Z scale to the armor thickness in millimeters. The reason being is that we are going to base our penetration force on the X and Y rotation which we will discuss later.
So the second part is being able to change our armor thickness and rotation easily to simulate all the different surfaces our bullet can hit. As previously mentioned we tied our Z scale already and capped it in between 2 values so the user can use a slider to have a value in between them. The second is being able to change our X and Y rotation during run time.

RayCast
With having a surface that we can hit it was time to move on to retrieve the information of our hit. The most simple part was retrieving the armor thickness and doing a direct check to our penetration value. This works but it is only true if we were to hit it straight on. So we need to have a few things here that would be our armor thickness and an impact angle. We first started working on retrieving our impact angle.
Our impact angle is something that can be retrieved because we are using a build in feature from Unity. By using a RayCast we can esily tell what the angle of our hit is in comparison of the normal of the surface.
In our instance we only have 2 values to work with but that should be enough. The first being armor thickness in millimeters and the second being the impact angle. Having these 2 values we can convert our impact angle degree to radians first (Unity required) and we divide our armor to the COS radians. We now have a bullet that takes into effect a given angle.
Our bullets actually only travel in a forward direction. If we decide that our bullet penetrates it will keep on traveling through if it gets blocked it will get destroyed the same goes over an explosion, the bullet will also get destroyed upon impact. The only way the bullet can travel in another direction is by having the bullet ricochet upon impact. Basically this is only possible on a very steep angle. Because we haven’t made the specific bullet types we will tie this value to 45 degrees so if it is lower than half of the normal’s impact angle we will let it bounce. We will change this in the future after all bullet types are in place.
Bullet types
There are 2 other important things that can change the penetration value of our bullet but before implementing that we need to have all our different types of bullets defined. Since each type of bullet can change the characteristics of these it would be a smart idea to have a system in mind. These bullets don’t change and are always the same so that’s why a scriptable object is perfect.
As previously mentioned the 2 important things that could change our penetration values are bullet penetration loss over distance and shell normalization. We first start working on our normalization. By this time you should already understand the concept of shell normalization, so our first step is giving each one of our bullets a value that will negate the impact angle. So it would bring itself closer to the normal (90 degree) hit on the surface. We basically deduct this value from the original impact value and pass it to our impact angle function mentioned earlier.
Bullet penetration loss over distance. Bullet penetration loss is currently being set as a multiplier that grows exponantial.
The last thing that only applies to High Explosive shells are indeed explosives. Explosive shells detonate upon impact. For now we only spawn in a explosion since we don’t directly apply damage to our target yet.

Bullet impact decision
The current bullet logic takes all of these factors into mind whenever doing calculations on what action to perform

– Base penetration
Our base penetration is actually really simple. This is one of the first things we start with so let’s say for example we have a value of 200 penetration power that compares to a 100 rated slab of armor. Then we would expect our bullet to penetrate rather straightforward. But this is only the case when the angle is perpendicular as the normal angle. We would do a lot more calculations further ahead.
– X and Y rotation
So we can’t expect our players to always shoot at a perpendicular angle. and that wouldn’t make much sense since a tank is angled in many different ways. So we take into effect the angle of impact. We discussed earlier that this will calculate in the effective armor instead of the nominal armor.
– Normalised angle
Sometimes there are some very steep angles that are created, but certain bullet types negate a certain amount of degree of angled armor so that it is easier for the player to hit an enemy. For both gameplay and realism we have some normalization going into effect.
– Penetration drop off
We have penetration drop off that grows exponantial it really starts to kick in after the first 100 units traveled. Each of our bulllets has a multiplier that decides how much more penetration drop off we experience per type of bullet.
– Type of bullet
We can choose a variety of bullets that have different attributes that will change some of the things we mentioned previously. For example AP and APCR shells have some amount of normalization. But HE and HEAT rounds don’t since they explode upon impact.

Polishing
With all of our main logic done we decided to implement some more polishing parts. Some important ones are barrel smoke, explosion from impact and engine smoke. These are all made using the Unity particle system and some of them are available for free already in the Unity asset store.
We added in some more recoil to our tank so it looks like our tank is really firing a heavy round instead of only a bullet flying out. This part is segmented into 2 parts. So first the easy one we pull back our gun and send it back forwards within a few fractions of a second. We do this by calling this script whenever we press a key to fire. The more interesting one is the shake of the whole tank. My initial idea that actually made more sense was to anchor the tracks down so they don’t move upon force. and clamp the hull to the tracks using hard springs. And then applying some force to the hull. But that implementation took too much time. So I decided to go for something more simple which was just applying force to our whole tank and then putting a wall behind the tank. We also freeze certain rotations and positions.
10. Further development
Currently we have a lot of information being displayed in our console but we want to add in special effects for the player/user. So he/she can easily tell what action is being performed.
An idea to visualize things further, but that hasn’t been implemented yet. Is by projecting a simple color on the surface. Green being that the shell will penetrate through and red being that the shell will be blocked.

11. Conclusion
In conclusion, the development of a sophisticated bullet penetration system represents a significant stride towards enhancing realism in tank simulation games. Our project has not only simulated various aspects of real-life tank warfare, including bullet behavior, armor penetration, and the tactical deployment of different ammunition types but also introduced strategic gameplay mechanics that demand a deeper understanding and thoughtful engagement from players. This system elevates the gameplay experience by challenging players to consider the physics of bullet travel, the impact of armor angles, and the effectiveness of their chosen ammunition, thereby mirroring the complexities of actual armored combat.
However, our endeavor has also illuminated areas where further development and refinement are needed. While the technical underpinnings of our penetration system successfully replicate the intricate dance of attack and defense inherent in tank warfare, the current implementation could benefit from more intuitive visual and textual feedback to the player. Future enhancements could include more distinct visual cues and on-screen indicators to convey the outcomes of shots and penetrations more clearly, enabling players to more readily understand and react to the dynamics of battle.
Additionally, as we continue to refine this system, integrating more detailed historical and physical data could further the realism and educational value of the game. Exploring the nuanced effects of different terrains, weather conditions, and armor types could offer players not only a game but a simulation that serves as a portal to understanding the complexities of armored warfare throughout history.
Our journey into the development of a bullet penetration system underscores the delicate balance between realism and playability in video game design. It highlights the importance of ongoing research, player feedback, and technological innovation in creating experiences that are both engaging and educational. As we look to the future, we are excited about the potential to further bridge the gap between historical authenticity and interactive entertainment, offering players not just games, but gateways to the past, equipped with the depth of realism that challenges, educates, and fascinates.
12. Links and articles
Terrell, E. (2016, 30 september). World War I: The Tech of the Tank | Inside Adams. The Library Of Congress. https://blogs.loc.gov/inside_adams/2016/09/world-war-i-the-tech-of-the-tank/
Blitzkrieg: Definition, London & World War II – HISTORY. (2022, 12 december). Blitzkrieg: Definition, London & World War II – HISTORY. HISTORY. https://www.history.com/topics/world-war-ii/blitzkrieg
Tank ammunition – War Thunder Wiki. (z.d.). https://wiki.warthunder.com/Tank_ammunition
Trajectory normalizing factor. (z.d.). https://patriotvalleyarms.com/trajectory-normalizing-factor/
Mathematical Model for Bullet Ricochet on JSTOR. (z.d.). www.jstor.org. https://www.jstor.org/stable/1141977
Wargaming.NET. (2022, 2 augustus). What makes spaced armor so effective? World Of Tanks. https://worldoftanks.eu/en/news/history/spaced-armor-effectiveness/
