Its long time overdue but here is a start of an walkthrough/tutorial of how vehicles configs work in Steel Fury.
First i want to say that a few things are quite quirky and weird when playing around with the settings.
And also that when translated from cyrillic to russian and then to english there are lots of errors. So its not really grammatical
errors by me, I blame google translator
And this is gonna be an ongoing project with updates when i got time.
Discussion here:
http://graviteam.com/forum/index.php?topic=11600.0Later on when i got an almost complete walkthrough of the configs i will try to make a step by step tutorial with a simple tracked vehicle.
So start model now ppl
Help is coming to get your creations in the game!
Feel free to ask lots of questions and point me to errors i made!
Let me start with the Panther G config. Here is the first entrys:
pantherg()
{
//object/vehicle type
type = %OT_TANK%;
//mesh (*.go) filename
mesh = pantherg;
//number of LODs, 3 Lods is the most wanted. Works with fewer but more lods is better!
mesh_lods= 1;
//weight in kilograms
mass = 44800;
//height. depends on where the center of the vehicle is located. Usually, 2m.
drop_h = 2.0;
//points (of mass * distance from center of gravity) To calculate check this
post:
what does a "center mass"? jx = 50000;
jy = 50000;
jz = 30000;
//Battle efficiency. How many soldiers cost the unit. In our case Panther corresponds to 17 soldiers.
effect = 17;
//name (for localization files) This is for the name that shows up in the editor and in the game. Found here: Steel Fury - Kharkov 1942\data\k42\loc_rus\text
name = txt_tn_pantherg;
//engine torque in kg*m
engine_m = 1000.0;
//engine power in HP
engine_pow = 700;
//define the inertia of the engine
eng_tau = 0.5;
//engine friction coefficient ?
eng_friction = 2000;
//engine RPM
min_w = 600.0;
max_w = 3200.0;
//gear ratios
gear_k = -2.6, 0, 3.45, 2.0, 1.8, 1.5, 1.0, 0.7, 0.46;
//Efficiency of gear in %
//gear_kpd = 1.0, 1.0, 1.0, 0.8, 0.6, 0.5, 0.4, 0.3, 0.2;
gear_kpd = 1.0, 1.0, 0.6, 0.5, 0.4, 0.3, 0.2, 0.1, 0.08;
//sound list (for voice commands)
snd_list = levels\levels\common\snd_list_ger.engcfg;
//fuel consumption for 100km
fuel_rash = 300;
//fuel tank capacity in litres
fuel_tank = 730;
//battery capacity in Ampere/h
acc_capacity = 300;
//battery consumption for engine start, in Amperes
eng_start_cur = 600;
//onboard systems consumption in Amperes
suo_cur = 20;
//engine electric consumption, in Amperes (0 for diesel engines)
eng_cur = 10;
//Electric current generated by the engine, KW
gen_power = 3;
//list of crew members defined in common_units and places.cfg
wp_decode = wp_driver, wp_gunner, wp_commander, wp_loader, wp_mgunner;
//tank tracks sound
snd_pillars = track_panther;
//engine sound
snd_engine = diesel_5;
//gearbox sound
snd_gear = gear;
snd_starter = starter_panther;
//sound frequency, Hz
sndp_base_freq = 22000;
//change the frequency of the current sound
sndp_base_freq_k = 0.5;
//base frequency of the engine sound, Hz
snde_base_freq = 22000;
//scaling coefficient for engine sound frequency
snde_base_freq_k = 3.0;
//defines the width of a ford that can be crossed and enable to avoid bumping with other units. Higher value is better for bumping, but bad for the ford crossing.
If value "10" then it has 100% probability it will drown in the river. Mostly it's length of the vehicle
bb_round = 5.0;
//configuration of the interface
interf_cfg = interf\interf.engcfg;
//deformation
deform = true;
//armor thickness, mm
armor_thick = 100;
//áðîíÿ äëÿ ÈÈ
arm_fwd = 80;
arm_side = 60;
arm_back = 40;
arm_up = 17;
//Visibility (high/low profile)
vis_factor = 2.5;
//armor map
armor_map = armor_maps\pantherg_armor.tga;
//armor quality
armor_qual = 1.0;
//armor fragility
armor_frail = 0.3;
//armor strength! empiric coefficient to define the hardness of the armor. Usually it has value "2000". In case of hardened surface armor (i.e. BT-5), then coefficient should
be 2100. Let's say each "100" will add ~30mm additional armor.
armor_str = 2100;
//rotate by hands. For AA guns, i.e. Flak 36 or mortar
manual_rot = false;
//stationary unit. For AA guns, i.e. Flak 36 or pillboxes
immobile = true;
//exhaust smoke fragment name
smk_gen = s_smoke_01, s_smoke_02;
//cockpit config file, interior model file is explained in this file
cocpit = cocpits\coc_pantherg.engcfg;
//air inlet. height fragment (for water crossing)
water_line = s_waterline;
//trailer dummy, hookpoint or hitch. not implemented. this parameter is unuseful.
pricep =;
//moved by hands. for guns
move_hands =;
//no shadows, used for example on the planes
no_shadows = true;
And now the entrys like wheels and sights:
Most entries are taken from the panther but there are others as well!
How these lists work.
First is the name of which entry in your tech.cfg file it is. The tech files are located here: Steel Fury - Kharkov 1942\data\k42\loc_rus\levels\LEVELS\tech_cfg, in this example we partly are using pantherg.engcfg as an example
Second is a number on which parameter it is on that entry and an explanation on what that entry does.
Third, an example of an entry with the numbers above.
In your tech.cfg
1. cpillars()
2. 1 Name of the track in your common_res
2 Weight
3 Left lever, braking when turning left
4 Right lever, braking when turning right
5 Drive type
6 Friction
7 Maximum adherence when clutching gear, clutch slip, higher number stronger clutch
8 Traction weight
9 Step for splitting geometry. Lower number more steps on the tracks, 0.1 is good enough and recomended.
10 Coefficient modifier
11 Traction sideways, higher number more traction. Good setting for making bigger tanks turning slower and feel more "heavy"
12 Number of wheels, count the wheels on your model and in your tech.cfg file
13 List of wheels, check your tech.cfg
14 The path of where the tracks are attached on/by the wheels
3. 1 2 3 4 5 6 7 8 9 10 11 12 13 14
jtiger_r, 1, 1, 0, 1, 0.002, 1000, 1.0, 0.1, 1.0, 1.3, 11, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 9, 8, 7, 6, 5, 4, 3, 2;
jtiger_l, 1, 0, 1, 1, 0.002, 1000, 1.0, 0.1, 1.0, 1.3, 11, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 9, 8, 7, 6, 5, 4, 3, 2;
And now the entries:
wheels()
1 Name of the wheel in your mesh/go file
2 Lower damping
3 Upper damping
4 spring rate
5 Mass/weight
6 Powered wheel for cars/trucks, For tanks it is the drive sprockets
7 Steering wheel, ruler wheel
8 ?
9 Suspension travel Y Axis, left/right \
10 Suspension travel z Axis, up/down } should be 0 (zero) for drivesprockets and idler wheels
11 Suspension travel x Axis, forward/backward /
12 Maximum upper displacement
13 Maximum lower displacement
14 Steering ratio
15 Moment on intertia on wheels, on tracked wheels no difference.
16 Braking power, must use on wheels that have contact with ground
17 Friction when staying still
18 Radius modifier (track placement against the wheel, higher number closer to the wheel, used on for example the drive sprockets)
19 Adhesion, stuck on ground, clutch steering
20 Resistance to turn
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
d_wheel_01, kv1dn_d, kv1up_d, kv1spr_t, 40, 0, false, true, 0, -1, 0, 0.0, 0.0, 0.0, 30.0, 90.0, 0.001, 0.05, 1.0, 1.0;
d_wheel_02, kv1dn_d, kv1up_d, kv1spr_t, 40, 0, false, true, 0, -1, 0, 0.3, 0.1, 0.2, 30.0, 90.0, 0.001, 0.0, 1.0, 1.0;
d_wheel_03, kv1dn_d, kv1up_d, kv1spr_t, 40, 0, false, true, 0, -1, 0, 0.2, 0.1, 0.2, 30.0, 90.0, 0.001, 0.0, 1.0, 1.0;
d_wheel_04, kv1dn_d, kv1up_d, kv1spr_t, 40, 0, false, true, 0, -1, 0, 0.2, 0.1, 0.2, 30.0, 90.0, 0.001, 0.0, 1.0, 1.0;
d_wheel_05, kv1dn_d, kv1up_d, kv1spr_t, 40, 0, false, true, 0, -1, 0, 0.1, 0.0, 0.0, 30.0, 90.0, 0.001, 0.0, 1.0, 1.0;
cpillars()
1 Name of the track in your common_res
2 Weight
3 Left lever, braking when turning left
4 Right lever, braking when turning right
5 Drive type
6 Friction
7 Maximum adherence when clutching gear, clutch slip, higher number stronger clutch
8 Traction weight
9 Step for splitting geometry. Lower number more steps on the tracks, 0.1 is good enough and recomended.
10 Coefficient modifier
11 Traction sideways, higher number more traction. Good setting for making bigger tanks turning slower and feel more "heavy"
12 Number of wheels, count the wheels on your model and in your tech.cfg file
13 List of wheels, check your tech.cfg
14 The path of where the tracks are attached on/by the wheels
1 2 3 4 5 6 7 8 9 10 11 12 13 14
jtiger_r, 1, 1, 0, 1, 0.002, 1000, 1.0, 0.1, 1.0, 1.3, 11, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 9, 8, 7, 6, 5, 4, 3, 2;
jtiger_l, 1, 0, 1, 1, 0.002, 1000, 1.0, 0.1, 1.0, 1.3, 11, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 9, 8, 7, 6, 5, 4, 3, 2;
carets()
1. name of fragment on your model
2. name of wheel connected infront of suspension arm
3. name of wheel connected behind of suspension arm
1 2 3
//left
d_caret_00, d_wheel_01 , ;
d_caret_01, d_wheel_02 , ;
//right
d_caret_02, ,d_wheel_03;
d_caret_03, ,d_wheel_03;
A few notes about carets, or suspension. game engine makes a difference between left and right side, so depending on which side
the arms is gonna be you need to change if suspensions attachment to the hull is infront or behind the wheel!
heads()
1. Turret name for weapons() entry and your workplaces.cfg
2. Traverse fragment, the turret for example
3. Elevation fragment, a gunmantle for example
4. Traverse - left in degrees
5. Traverse - right in degrees
6. Elevation up in degrees, for the gunmantle
7. Elevation down in degrees, for the gunmantle
8. Traverse speed deg/sec
9. Elevation speed deg/sec
10. Electrical traverse speed deg/sec
11. Electrical elevation speed deg/sec
1 2 3 4 5 6 7 8 9 10 11
head1, db_head, d_gunmask, 180, 180, 18, 8, 20, 10, 30, 0;
head2, d_mgun_02, d_mgball, 14, 14, 7, 7, 30, 10, 0, 0;
weapons()
1. Name of weapon, must be same as the weapon entry in common_res
2. Dummy from where the shot is fired
3. Recoil fragment
4. Turret on which the gun is mounted
5. Loaders workplace. The crew member that is loading this weapon. Use workplaces tech file
6. Dummy for gun breech, used for interiors, so not necessary if no interior exist!
7. distance of the gun breech
8. the position of the shell/case
9. ?
10. ?
1 2 3 4 5 6 7 8 9 10
KWK42, s_gun, db_gun, head1, wp_loader, s_klin, 0.1, 0, 1, 0;
MG34, s_mgun_01, , head1, wp_loader;
MG34, s_mgun_02, , head2, wp_mgunner;
shells()
1. Name of ammunition, must be same as in common_res
2. Amount/quantity of ammo
3. ?
4. the number on the keyboard when changing ammo. 0 corresponds key 1
1 2 3 4
PZGR39_42, 37 , 0, 0;
PZGR40_42, 5 , 0, 0;
SPRGR_42, 40 , 0, 1;
BUL_792, 4800;
sights()
1. Sight name for the vehicle
2. Camera dummy, same name as the camera on your 3d model
3. This is the reticle name, taken from your common_res file
4. Gunsight shaking
5. Group of sights, what crewmember is using it
6. modelled part of rotating sights, for example the drivers sight on the panther g
1 2 3 4 5
sig_gunner, s_camera_gunner, tzf5fn, 0.0, sig_gunner, ;
sig_driver, s_camera_driver, pz4_sight, 0.0, sig_driver, ;
sig_mgunner, s_camera_mgunner, pz4mgun, 0.0, sig_mgunner, ;
sig_mgunner, s_camera_mgunner2, pz4_sight_hole, 0.0, sig_mgunner, ;
sig_commander, s_camera_commander_01, pz4_sight, 0.0, sig_commander, ;
hatchs()
1. What crewmember is using the hatch
2. Name of the hatch on your 3d model
3. How many degrees its opening
4. How many snaps of the hatch untill fully opened
5. Opening "snap" when starting the game
1 2 3 4 5 6
commander, d_hatch_01, 115, 1, 0, 1;
random()
1. Fragment name, part on your 3d model
2. Number in percents chance. How randomly the fragment is gonna be used when loading game. 0 is never, 1 is always
1 2
d_schurzen_01, 0.0;
d_schurzen_02, 0.0;
Now its time for crew places config. This file you find here: Steel Fury - Kharkov 1942\data\k42\loc_rus\levels\LEVELS\tech_cfg\misc
And the entries:
1 Name of the crewmember, use: list of crewmembers in the tech.cfg and also work_places() in the tech.cfg
2 Flags, see the list below! This is mostly ai behavior, what can it do and what cant it do.
3 Importance of the place, which will be occupied in first turn, if crew-member dead
4 What is the crewmembers controls, guns etc, other words what work does he have!
5 Add turrets name ie: head1, head2 etc, find these in your tech.cfg file.
6 User interface for the crewmember
7 What sights and optics is it using, check sights() in the tech.cfg Group of sights, should be in your tech.cfg
8 What crewmember is responsible for that hatch. This crewmember opens that hatch mentioned in your tech.cfg
9 Dummy name in your mesh/go file for that crewmember. Dummy of the working place inside tank. Where gunner will take place
s_gunner, where commander will take place
s_commander etc
10 Dummy name in your mesh/go file for that crewmember when unbuttoned
11 Mesh hitbox for that crewmember
12 Mesh hitbox for that crewmember when unbuttoned
13 Dummy name in your mesh/go file for that crewmember when bailing out
14 Name of the crewmembers mesh/go file, it is also for the animations. Check anims.engcfg
15 Name of animations, check \levels\levels\common and file anims.engcfg
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
wp_driver, 0x38, 0.10, driver, head1 , driver, sig_driver, driver, s_driver, s_driver_out, p_driver, p_driver_out, s_driver_exit, pz4_driver, %ROLE_DRIVER%;
flags:
//WPF_VISIBLE = 0x00000001, //crewmember can see
//WPF_COLL = 0x00000002, //crewmember may collision/bump into
//WPF_LIVE = 0x00000004, //crewmember walks himself
//WPF_SETSIDE = 0x00000008, //the player takes over position
//WPF_USER = 0x00000010,16 //player controlled
//WPF_INOUTCTRLS = 0x00000020,32 //disables the controls when unbuttoned
//WPF_AIGUNBLOCK = 0x00000040,64 //turns off the AI controls, AI cant use gun
//0x18/24=16+8 - //player controlled, the player takes over position
//0x19/25=16+8+1 - //player controlled, the player takes over position, the crewmember can see
//0x38/56=32+16+8 - //disables controls when unbuttoned, player controlled, the player takes over
//0x49/73=64+8+1 - //turns off the AI controls, AI cant use gun, the player takes over, crewmember can see
//0х58/88=64+16+8 - //turns off the AI controls, AI cant use gun, player controlled, the player takes over
//0x1b/27=16+8+2+1 - //player controlled, the player takes over, crewmember confligt of?, crewmember can see
//0x9b/
//0x99/ - //hand weapons invisible
A few notes on the configs:
Its not necessary to delete something you change or if you make a new line for experiment. Just comment it out with a double forward slash like this: //
It makes the game not to read that line, also good to add comments if you need.
Also, each entry starts with { and ends with } Its easy to forget them and/or accidently remove them!
An example of the two new notes:
hatchs()
{
//group, fragment name, angle of opening, quantity of positions, current position
commander, d_hatch_01, 115, 1, 0, 1;
// commander, d_hatch_02, 100, 1, 0, 1;
driver, d_hatch_03, -90, 1, 0, 1;
}