Skip to content

Ryandcoke/kursk_simulator

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

66 Commits
 
 
 
 
 
 
 
 

Repository files navigation

Kursk Simulator: 1943

main_menu

Table of Contents

  1. Introduction
  2. A Brief History
  3. Weapon Performance
  4. Armor Model
  5. Armor Overmatch Mechanics
  6. Data and References

Introduction

Kursk Simulator: 1943 is a 2D tank gunnery simulator built in Python. The simulator's armor overmatch mechanics (how armor penetration is modeled) are based on a stylized model that was calibrated to closely match historical shell penetration data. Tanks are reduced to simple polygons. The line segments in the polygon chain capture the thickness and angle of the glacis plates, mantlet and other hull surfaces.

A Brief History

The Battle of Kursk was the largest tank battle in history (perhaps the Battle of Brody/Dudno was larger).

Weapon Performance

Historical Data

Shell penetration data was obtained from Rexford Bird and Livingston's book, World War II Ballistics: Armor and Gunnery. This source provides normalized penetration tables for different shells against RHA, at a perpendicular strike angle, with a 50% success rate. The data tables give millimeters of penetration at different ranges.

Penetration Functions

In order to map the discrete penetration data onto a continuous function, we estimate each shell's penetration function. The penetration function for shell i takes the following quadratic form:

Pi  = αi + β1i x + β2i x2

P is penetration
x is distance, from the gun to target
α is a constant
β1 and β2 are coefficients

These penetration functions are estimated with a simple multiple regression. Using STATA, we regress penetration on distance and distance squared to estimate α, β1 and β2.

Armor Models

Tank 'hitboxes' are a polygon chain which represents the tank in 2D space. Each line segment in the polygon has an associated thickness. These simplified models simulate the thickness and angle of a tank's glacis plates, gun mantlet, and other surfaces. Smaller details such as hatches and ports are not currently modeled.

Armor Overmatch Mechanics

If a shell hits armor, it will penetrate if its penetration value is greater than the armor's armor value.

Shell's penetration value = f(shell_type, range_to_target)

Armor's armor value = g(thickness, angle_of_incidence)

Penetration ⟺ f > g

Data and References

This spreadsheet contains the collected data that was used to model the attributes of the tanks and their guns in-game.

Weapon penetration data was collected from the book World War II Ballistics: Armor and Gunnery, which is available from scribd and MediaFire.

Rexford Bird, L., & Livingston, R. D. (2001). World War II Ballistics: Armor and Gunnery. Overmatch Press.

Historical information comes from articles written on German and Soviet tanks at Kursk by the staff of The Tank Museum.

About

🎮 A tank gunnery simulator calibrated to historical data.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published