Custom skins
![]() | Relevance under question. The content of this article is most likely outdated and is not reflecting the current state of affairs. The article needs to be updated. |
The default sighting reticle for ground vehicles in War Thunder can be replaced with a custom one, for example if you want to recreate a historical representation of the sight.
Custom sights will be created by changing settings in the reticle file rather than in any graphic editor.
| Note! The custom sight does not guarantee the accuracy or correct aiming if it has been created by an author without taking into account all the recommendations in this article. |
The ability to create user-made sight grid designs for ground vehicles was added in update 1.73 "Vive la France".
game settings → Main parameters → Common battle settings and for the parameter “Use alternative sight grid” select “Add grid sight”.The number of different sight reticles per vehicle is not limited. So you can create any number of different reticles in one folder and be able to switch between them.
The sighting reticle is a block of settings of elements: scales, lines, moving parts and text. The settings are set as one .blk file that can be edited using any text editor.
game settings → Main parameters → Common battle settings and for the parameter “Use alternative sight grid” select “Add grid sight”.Complete the first 3 steps described in the instruction "Creating a reticle template for a single vehicle". Then copy the sight_1 file to the folder “all_tanks”. Now you just need to specify which vehicles have the available sight.
Open the .blk file of the sighting reticle using any text editor and add the following block to it:
matchExpClass {
}
You can specify the classes of vehicles for which the sight will be allowed for use or the specific list of vehicles inside this block.
Vehicle classes:
Inside the block you can specify several vehicle classes and even combine them with specific vehicles. For example:
matchExpClass {
exp_heavy_tank:b = yes
ussr_object_120:b = yes
}
This sight will be available for all heavy tanks and the Object 120.
The ID of the particular tank can be found by clicking "Edit source" in its article in the Wiki. The ID can be found inside the block {{Specs-Card|code=ussr_pr_206}}.
The ID will also be specified in the name of the catalogue which is created when creating the custom sight.
| In order to maintain full functionality for the universal sight for vehicle classes, it is not recommended limiting it to specific cannons and ammunition. Their ballistic reticle will simply not be displayed if the vehicle doesn't have the shells which are specified in the “ballistics” block.
When creating historical sights it is always better to use the ID of the specific vehicle for which it is suitable. |
The content of the reticle file is as follows:
block_name {
param_name: type = value
block_name {
param_name: type = value
}
}
If an invalid variable type is specified, for example, instead of an integer textAlign: i = 1, you specify textAlign: i = 1,5 the game will not be able to read such a file and you will not see the changes you specified.
To edit such files it is more convenient to use different programs for editors, for example, free Visual Studio Code for which there are already extensions that are familiar with the syntax of blk files (Blk and BlkTool they can be found in the extensions panel of the program by searching for blk).
The choice for the type of the thousandth for the whole sight:
thousandth:t = “ussr”;
Possible values for ussr (1/6000), nato (1/6400), real (1/6283)
Note: The "range finder" is actually by default the green bar that takes a few seconds to fill and will output an approximate distance, affected by crew training
line function.The above two paramaters are basically the default crosshair. The horizontal line is in line with the default ballistics range indicator.
crosshair_distances{}Parameters for controlling the radial moving of lines, texts, circles:
A simple example of the thickness of notches and font size of an IT-1 sight after editing lineSizeMult:r=2.0 and fontSizeMult:r=2.0. Apart from these settings, the standard sight contains the block crosshair_distances, which determines how regularly the range correction notches will be placed.
crosshair_distances{
distance:p3=200, 0, 0
distance:p3=400, 4, 0
distance:p3=600, 0, 0
distance:p3=800, 8, 0
distance:p3=1000, 0, 0
distance:p3=1200, 12, 0
distance:p3=1400, 0, 0
distance:p3=1600, 16, 0
distance:p3=1800, 0, 0
distance:p3=2000, 20, 0
distance:p3=2200, 0, 0
distance:p3=2400, 24, 0
distance:p3=2600, 0, 0
distance:p3=2800, 28, 0
}
crosshair_distances can be set in three ways (important as: the methods cannot be mixed):
#distance:p2=2800, 28, where 2800 is the distance to the target at which the notch will be drawn; 28 is which text will be placed by the notch (0 means display nothing).
#distance:p3=2800, 28, 0.01, where 0.01 is how much to increase the length of the notch from the left (-0.01 means extend it from the right).
#distance { textPos:p2 = 0.042, 0; distance:p3 = 1000, 10, 0.01; }, where textPos is an additional offset of the notch text (textPos:p2 = 0, 0 by default).
distance:p3=200, 0, 0, where the first number is the range correction value for which the notch will be drawn, and the second number indicates the symbol that will display this notch (for the value 0, only a notch without a number is drawn) and the third number is the centering of the notch and its size. A notch can be made of varying length and moved toward or away from the centre of the sight. It works the same with the directional correction line.
crosshair_hor_ranges{
range:p2=-32, 32
range:p2=-28, 0
range:p2=-24, 24
range:p2=-20, 0
range:p2=-16, 16
range:p2=-12, 0
range:p2=-8, 8
range:p2=-4, 0
range:p2=4, 0
range:p2=8, 8
range:p2=12, 0
range:p2=16, 16
range:p2=20, 0
range:p2=24, 24
range:p2=28, 0
range:p2=32, 32
}
These are the parameters of the standard sight. Apart from these elements, the sight can also contain a few more blocks that provide new options.
The standard sight automatically draws a target reticule on the basis of the ballistic data of the selected shell type. However, with the help of this block, you can create a sight that will permanently display several lines for various types of shells, and their ballistics will correspond to the in-game values. To display these lines, you must add the ballistics block, including the required number of bullet blocks, each of which has its own settings that are responsible for drawing and placing lines. Shell ballistic data, which the game automatically recalculates into the distance between the line notches, are provided by the parameters: bulletType:t = "apcbc_tank" – ID of the ammunition type for which a line needs to be created (see the table of correspondence of shell types in the game localization). speed:r = 624.0 – initial shell speed, which can be seen in the shell’s card along with the name of the shell type.
Important! The lines are linked with ammunition loading. If the tank’s ammunition complement doesn’t have a specific shell type, then the line for that shell type will not be displayed.
Example ballistics block for the T-55A tank and three shell types, APFSD ZBM25, KS-ZBK17 and composite armor-piercing BR-412D:
ballistics {
bullet {
bulletType:t = "apds_fs_tungsten_small_core_tank"
speed:r = 1430.0
drawAdditionalLines:b = no
drawDistanceCorrection:b = yes
distanceCorrectionPos:p2 = -0.15, -0.15
drawUpward:b = yes // option to draw the displayed line upwards, as in the Soviet sights, for example TSh2B-41.
distancePos:p2 = 0.03, 0.0 // line offset relative to center.
textAlign:i = 1
textPos:p2 = -0.012, 0.0
textShift:r = 0.0
crosshairDistHorSizeMain:p2 = 0.0075, 0.0075
crosshairDistHorSizeAdditional:p2 = 0.005, 0.003
crosshair_distances {
distance:p3 = 200, 0, 0 // + and - notches
distance:p3 = 400, 0, 0
distance:p3 = 600, 0, 0
distance:p3 = 800, 0, 0
distance:p3 = 1000, 10, 0.01
distance:p3 = 1200, 0, 0
distance:p3 = 1400, 0, 0
distance:p3 = 1600, 0, 0
distance:p3 = 1800, 0, 0
distance:p3 = 2000, 20, 0.01
}
}
bullet {
bulletType:t = "heat_fs_tank"
speed:r = 1085.0
drawAdditionalLines:b = no // draw notches on the central line
drawDistanceCorrection:b = no
distanceCorrectionPos:p2 = -0.09, -0.05
distancePos:p2 = -0.02, 0.0 //line offset
textPos:p2 = 0.02, 0.0
textShift:r = 0.0 //text offset
textAlign:i = 2 //text position relative to notches
crosshairDistHorSizeMain:p2 = 0.0075, 0.0075
crosshairDistHorSizeAdditional:p2 = 0.005, 0.003
crosshair_distances {
distance:p3 = 200, 0, 0
distance:p3 = 300, 0, 0
distance:p3 = 400, 0, 0
distance:p3 = 500, 5, -0.01
distance:p3 = 600, 0, 0
distance:p3 = 700, 0, 0
distance:p3 = 800, 0, 0
distance:p3 = 900, 0, 0
distance:p3 = 1000, 10, -0.01
distance:p3 = 1100, 0, 0
distance:p3 = 1200, 0, 0
distance:p3 = 1300, 0, 0
distance:p3 = 1400, 0, 0
distance:p3 = 1500, 15, -0.01
distance:p3 = 1600, 0, 0
distance:p3 = 1700, 0, 0
distance:p3 = 1800, 0, 0
distance:p3 = 1900, 0, 0
distance:p3 = 2000, 20, 0
}
}
bullet {
bulletType:t = "apcbc_tank"
speed:r = 887.0
drawAdditionalLines:b = no // draw notches on the central line
drawDistanceCorrection:b = no
distanceCorrectionPos:p2 = -0.09, -0.05
distancePos:p2 = -0.07, 0.0 //line offset
textPos:p2 = 0.02, 0.0
textShift:r = 0.0 //text offset
textAlign:i = 2 //text position relative to notches
crosshairDistHorSizeMain:p2 = 0.0075, 0.0075
crosshairDistHorSizeAdditional:p2 = 0.005, 0.003
crosshair_distances {
distance:p3 = 200, 0, 0
distance:p3 = 300, 0, 0
distance:p3 = 400, 0, 0
distance:p3 = 500, 5, -0.01
distance:p3 = 600, 0, 0
distance:p3 = 700, 0, 0
distance:p3 = 800, 0, 0
distance:p3 = 900, 0, 0
distance:p3 = 1000, 10, -0.01
distance:p3 = 1100, 0, 0
distance:p3 = 1200, 0, 0
distance:p3 = 1300, 0, 0
distance:p3 = 1400, 0, 0
distance:p3 = 1500, 15, -0.01
distance:p3 = 1600, 0, 0
distance:p3 = 1700, 0, 0
distance:p3 = 1800, 0, 0
distance:p3 = 1900, 0, 0
distance:p3 = 2000, 20, 0
}
}
}
Parameters within bullet block:
A twin machine gun line can also be set in a bullet block. To do this, enter the following parameters:
distance:p3 = 200, 0, 0 // range – number – notch size distance:p3 = 400, 0, 0 distance:p3 = 600, 0, 0 distance:p3 = 800, 0, 0 distance:p3 = 1000, 10, 0.01 distance:p3 = 1200, 0, 0 distance:p3 = 1400, 0, 0 distance:p3 = 1600, 0, 0 distance:p3 = 1800, 0, 0 distance:p3 = 2000, 20, 0.01 }
Cannons
| "apcr_tank" | "Armor-piercing composite rigid shell" |
| "apds_tank" | "Armor-piercing discarding sabot shell" |
| "apds_fs_long_tank" | "Armor-piercing fin-stabilized discarding-sabot shell" |
| "apds_fs_full_body_steel_tank" | "Armor-piercing fin-stabilized discarding-sabot shell" |
| "apds_fs_tungsten_small_core_tank" | "Armor-piercing fin-stabilized discarding-sabot shell (steel))" |
| "apds_fs_tungsten_l10_l15_tank" | "Armor-piercing fin-stabilized discarding-sabot shell" |
| "apbc_tank" | "Armor-piercing blunt-nosed shell" |
| "ap_large_caliber_tank" | "Armor-piercing blunt-nosed shell" (Used on the AP shell of the T34/M103) |
| "apc_tank" | "Armor-piercing sharp-nosed shell (with armor-piercing tip))" |
| "aphe_tank" | "Armor-piercing sharp-nosed high-explosive shell" |
| "aphebc_tank" | "Armor-piercing blunt-nosed high-explosive shell" |
| "apcbc_tank" | "Armor-piercing shell with armor-piercing tip and ballistic cap" |
| "ap_tank" | "Armor-piercing sharp-nosed solid shell" |
| "heat_tank" | "High-explosive hollow charge shell" |
| "heat_grenade_tank" | "Anti-tank grenade" |
| "heat_fs_tank" | "High-explosive non-rotating shell" |
| "hesh_tank" | "Armor-piercing incendiary shell" |
| "he_grenade_tank" | "High-explosive grenade" |
| "he_frag_tank" | "High-explosive shell" |
| "he_frag_fs_tank" | "High-explosive shell" |
| "shrapnel_tank" | "Shrapnel" |
| "atgm_tank" | "Anti-tank guided rocket" |
| "rocket_tank" | "Unguided rocket" |
| "smoke_tank" | "Smoke shell" |
Machine guns
| Machine gun | Velocity | Bullet type |
|---|---|---|
| "7_7mm_Type_97_user_machinegun" | 730 | ap_ball |
| "7_7mm_Vikkers_user_machinegun" | 920 | i_t_ball |
| "7_62mm_DT_user_machinegun" | 815 | ap_i_ball |
| "7_62mm_M37_user_machinegun" | 853 | ap_ball |
| 7_62mm_M73_user_machinegun | 853 | ap_ball |
| 7_62mm_M1919A4_user_machinegun | 853 | ap_ball |
| 7_62mm_PKT_user_machinegun | 815 | ap_i_ball |
| 7_62mm_SGMT_user_machinegun | 815 | ap_i_ball |
| 7_62mm_Type74_user_machinegun | 853 | ap_ball |
| 7_92mm_BESA_user_machinegun | 880 | ap_i_ball |
| 7_92mm_MG3_user_machinegun | 853 | ap_ball |
| 7_92mm_MG34_user_machinegun | 880 | ap_i_ball |
| 7_92mm_MG42_user_machinegun | 880 | ap_i_ball |
| 8mm_Breda_Mod38_user_machinegun | 790 | ap_i_t_ball |
| 12_7mm_M2_HB_user_machinegun | 887 | ap_i_t_ball_M20 |
| 14_5mm_KPVT_user_machinegun | 1000 | ap_i_t_ball |
Radial scales and elements (block ballistics/bullet):
In case with the radial scale the parameter crosshairDistHorSizeMain has the following meaning:
In case with the radial scale the parameter crosshair_distances/distance.z means the radius of a circle.
drawUpward - changes the scale displaying to a mirror one.
For maximum sight customization, you can use the drawLines and drawTexts blocks, with the help of which you can draw elements from the cutoffs and text, indicating their coordinates:
drawLines {
line { line:p4 = 0, -1.0, 0, -0.018; move:b = false; }
line { line:p4 = -50, 30, -50, 40; thousandth:b = true; }
}
To draw one line, you have to enter 4 coordinates – the offset in fractions of the screen of its start and end. line { line:p4 = 0.25, -0.25, 0, -0.0; move:b = false; } – this block draws one line which begins in the upper right quarter of the screen and ends in the center of the screen. It is static and does not move when a range is entered.
For convenience when creating historical reticules, thousandth can be set to true to represent editing units in mils by indicating the coordinate offset for the start and end of the line in thousands too. When thousandth is set to false, one mil is approximately to 0.04 units
For example, line { line:p4 = -32, -32, 0, 0; thousandth:b = true; } will show a diagonal line extending 32 mils to the left:
Drawing Text:
drawTexts {
text {
text:t = "X" // desired symbol
align:i = 0 // offset relative to its indicated position
pos:p2 = 32, 0 // coordinates of the X and Y symbol positions in fractions of the screen
move:b = no // whether the text will move when a range is entered
thousandth:b = yes // or in thousands
size:r = 1.7 // text size
}
}
Drawing Circles:
drawCircles {
circle {
segment:p2 = 0.0, 360.0; // Sector of a circle
pos:p2 = 0.0, 90.0; // Position
diameter:r = 3.0; // Diameter. If thousandth=yes, then in thousandths
size:r = 2.0; // Line Thickness
move:b = no;
thousandth:b = yes;
}
}
Drawing painted figures on the basis of a quadrangle. With its help you can draw different types of figures that have 4 vertices and figures of arbitrary shape with 3 (triangle) or 2 (line) vertices.
drawQuads {
quad { // Simple fixed quadrangle
tl:p2 = -10, -10; // Top left top
tr:p2 = 10, -10; // Top right top
br:p2 = 10, 10; // Top right bottom
bl:p2 = -10, 10; // Top left bottom
thousandth:b = true;
}
quad { // Object that can be moved along the radius
tl:p2 = -10, -140;
tr:p2 = 10, -140;
br:p2 = 0, -96;
bl:p2 = 0, -96;
center:p2 = 0, -90; // The center of the figure is needed for correct rotation. By default the geometric center of a shape.
radialCenter:p2 = 0.0, 0.0;
radialAngle:r = 0;
radialMoveSpeed:r = 6.04;
moveRadial:b = yes;
thousandth:b = true;
}
}
Using the entire spectrum of possibilities for creating user-made sight reticules, one can create sight reticules that will be as close as possible to the historical versions.
As an example, here is the sight skin of the Italian P40 tank:
And the settings block that can be used to create this sight:
it_san_giorgio_x4 {
crosshairHorVertSize:p2 = 0, 0
rangefinderProgressBarColor1:c = 0, 255, 0, 64
rangefinderProgressBarColor2:c = 255, 255, 255, 64
rangefinderTextScale:r = 0.7
rangefinderVerticalOffset:r = 15
rangefinderHorizontalOffset:r = 5
fontSizeMult:r = 1.25
lineSizeMult:r = 1.5
drawCentralLineVert:b = no
drawCentralLineHorz:b = no
crosshairDistHorSizeMain:p2 = 0.03, 0.02
crosshairDistHorSizeAdditional:p2 = 0.005, 0.003
distanceCorrectionPos:p2 = -0.2, -0.05
drawDistanceCorrection:b = yes
ballistics {
bullet {
bulletType:t = "apcbc_tank"
speed:r = 624.0
drawAdditionalLines:b = no
drawDistanceCorrection:b = yes
distanceCorrectionPos:p2 = -0.15, -0.15
distancePos:p2 = 0.03, 0.0 // line offset relative to center.
textAlign:i = 1
textPos:p2 = -0.012, 0.0
textShift:r = 0.0
crosshairDistHorSizeMain:p2 = 0.0075, 0.0075
crosshairDistHorSizeAdditional:p2 = 0.005, 0.003
crosshair_distances {
distance:p3 = 200, 0, 0 // + and - notches
distance:p3 = 400, 0, 0
distance:p3 = 600, 0, 0
distance:p3 = 800, 0, 0
distance:p3 = 1000, 10, 0.01
distance:p3 = 1200, 0, 0
distance:p3 = 1400, 0, 0
distance:p3 = 1600, 0, 0
distance:p3 = 1800, 0, 0
distance:p3 = 2000, 20, 0.01
}
t_san_giorgio_x4 {
crosshairHorVertSize:p2 = 0, 0
rangefinderProgressBarColor1:c = 0, 255, 0, 64
rangefinderProgressBarColor2:c = 255, 255, 255, 64
rangefinderTextScale:r = 0.7
rangefinderVerticalOffset:r = 15
rangefinderHorizontalOffset:r = 5
fontSizeMult:r = 1.25
lineSizeMult:r = 1.5
drawCentralLineVert:b = no
drawCentralLineHorz:b = no
crosshairDistHorSizeMain:p2 = 0.03, 0.02
crosshairDistHorSizeAdditional:p2 = 0.005, 0.003
distanceCorrectionPos:p2 = -0.2, -0.05
drawDistanceCorrection:b = yes
ballistics {
bullet {
bulletType:t = "apcbc_tank"
speed:r = 624.0
drawAdditionalLines:b = no
drawDistanceCorrection:b = yes
distanceCorrectionPos:p2 = -0.15, -0.15
distancePos:p2 = 0.03, 0.0 // line offset relative to center.
textAlign:i = 1
textPos:p2 = -0.012, 0.0
textShift:r = 0.0
crosshairDistHorSizeMain:p2 = 0.0075, 0.0075
crosshairDistHorSizeAdditional:p2 = 0.005, 0.003
crosshair_distances {
distance:p3 = 200, 0, 0 // + and - notches
distance:p3 = 400, 0, 0
distance:p3 = 600, 0, 0
distance:p3 = 800, 0, 0
distance:p3 = 1000, 10, 0.01
distance:p3 = 1200, 0, 0
distance:p3 = 1400, 0, 0
distance:p3 = 1600, 0, 0
distance:p3 = 1800, 0, 0
distance:p3 = 2000, 20, 0.01
}
}
bullet {
bulletType:t = "he_frag_tank"
speed:r = 552.0
drawAdditionalLines:b = no // draw notches on the central line
drawDistanceCorrection:b = no
distanceCorrectionPos:p2 = -0.09, -0.05
distancePos:p2 = -0.02, 0.0 //line offset
textPos:p2 = 0.02, 0.0
textShift:r = 0.0 //text offset
textAlign:i = 2 //text position relative to notches
crosshairDistHorSizeMain:p2 = 0.0075, 0.0075
crosshairDistHorSizeAdditional:p2 = 0.005, 0.003
crosshair_distances {
distance:p3 = 200, 0, 0
distance:p3 = 300, 0, 0
distance:p3 = 400, 0, 0
distance:p3 = 500, 5, -0.01
distance:p3 = 600, 0, 0
distance:p3 = 700, 0, 0
distance:p3 = 800, 0, 0
distance:p3 = 900, 0, 0
distance:p3 = 1000, 10, -0.01
distance:p3 = 1100, 0, 0
distance:p3 = 1200, 0, 0
distance:p3 = 1300, 0, 0
distance:p3 = 1400, 0, 0
distance:p3 = 1500, 15, -0.01
distance:p3 = 1600, 0, 0
distance:p3 = 1700, 0, 0
distance:p3 = 1800, 0, 0
distance:p3 = 1900, 0, 0
distance:p3 = 2000, 20, 0
}
}
}
crosshair_hor_ranges {
range:p2 = -60, 60
range:p2 = -50, 0
range:p2 = -40, 40
range:p2 = -30, 0
range:p2 = -20, 20
range:p2 = 20, 20
range:p2 = 30, 0
range:p2 = 40, 40
range:p2 = 50, 0
range:p2 = 60, 60
}
drawLines {
// Vertical lines
line { line:p4 = 0, -1.0, 0, -0.018; move:b = false; }
line { line:p4 = 0, 0.018, 0, 1.0; move:b = false; }
// Horizontal lines
line { line:p4 = -1.0, 0, -0.02, 0; }
line { line:p4 = 0.02, 0, 1.0, 0; }
//
line { line:p4 = -0.002, 0, -0.01, 0.00; move:b = false; }
line { line:p4 = 0.002, 0, 0.01, 0.00; move:b = false; }
line { line:p4 = 0.0, 0.002, 0.0, 0.01; move:b = false; }
line { line:p4 = 0.0, -0.002, 0.0, -0.01; move:b = false; }
line { line:p4 = -30, 30, -30, 40; thousandth:b = true; }
line { line:p4 = -40, 30, -40, 40; thousandth:b = true; }
line { line:p4 = -50, 30, -50, 40; thousandth:b = true; }
line { line:p4 = 30, 30, 30, 40; thousandth:b = true; }
line { line:p4 = 40, 30, 40, 40; thousandth:b = true; }
line { line:p4 = 50, 30, 50, 40; thousandth:b = true; }
line { line:p4 = -30, 0, -30, 10; thousandth:b = true; }
line { line:p4 = -40, 0, -40, 10; thousandth:b = true; }
line { line:p4 = -50, 0, -50, 10; thousandth:b = true; }
line { line:p4 = 30, 0, 30, 10; thousandth:b = true; }
line { line:p4 = 40, 0, 40, 10; thousandth:b = true; }
line { line:p4 = 50, 0, 50, 10; thousandth:b = true; }
line { line:p4 = 20, 0, 20, 3,5; thousandth:b = true; }
line { line:p4 = -20, 0, -20, 3,5; thousandth:b = true; }
line { line:p4 = 60, 0, 60, 5; thousandth:b = true; }
line { line:p4 = -60, 0, -60, 5; thousandth:b = true; }
line { line:p4 = 70, 0, 70, 5; thousandth:b = true; }
line { line:p4 = -70, 0, -70, 5; thousandth:b = true; }
}
}