Jump to content
coconut

Announcing CreateTankColumn, a tool to create tank columns

Recommended Posts

You may ask "Why, can't we already make groups of vehicles in the FME?". The problem is that these groups are useless in combat when facing anti-tank canons or other tanks: When the leader is destroyed, the next unit in line moves to the leader's position, where it typically gets destroyed by the same unit that destroyed the leader (duh!).

 

To work around this problem, I build my columns from smaller platoons, and try to get a front of multiple platoons attacking enemy defenses simultaneously.

 

I'll just the rest of the details to the the readme file. Let me know if there's anything unclear.

 

 

 

 

This is a command-line tool to create tank columns for the game IL-2 Sturmovik: Battle of Stalingrad.

Tank Column Specification
-------------------------

Create a group file with the mission editor containing a vehicle and a number of waypoints. The vehicle and the waypoints will be replaced by multiple groups of vehicles.
Each group is called a platoon, and is composed of a number of tanks (currently 2, although that might change in the future) and escort vehicles (a single AA truck).
A unit is composed of a number of platoons (2 by default).
A column is composed of a number of platoons (6 by default, which corresponds to 3 full units).

The name of a waypoint is used to control the behaviour of the column:
- CombatZone: Leave the road and prepare to spread out
- Spread: The generated waypoint is moved laterally by a random amount (currently hard-coded to 400m)
- Tighten: The generated waypoint is moved laterally by a random amount (currently hard-coded to 80m)
- Destination: Last waypoint. When reached, the column is considered to be successful.
- OnRoad: To be used after a CombatZone to get back on the road (not fully implemented, tanks from multiple platoons tend to collide)

The orientation and location of the vehicle define the location and orientation of the vehicles when they are spawned.

The country of the vehicle decides the type and country of the generated vehicles.

Generated group
---------------

The tool generates a group file ready to be imported in the mission editor.
The tank groups in a column and their logic are all located on top of each other.
As an exception, the following nodes make the interface of the column and are moved a bit away from the rest of the mess (north-east of the spawn point):
- Init: A timer which spawns a platoon.
All platoons in a column a linked in such a way that platoons are spawned on a regular basis (fixed time interval).
The Init node of the first platoon must be dragged away and connected (as target) to logic that activates the platoon (e.g. a MissionBegin MCU)
- ShutdownAll: Deactivate all vehicles and their logic.
- SomeSuccess: At least one vehicle reached the destination.
- AllFailure: All platoons were destroyed. 99% reliable (you'll probably want to use a timeout for those 1% when complete destruction was not detected).

Behaviour of the column
-----------------------

Beside what has been described in the tank column specification regarding waypoints, logic is also generated to implement a number of interesting behaviours.

When a platoon is approached by an enemy plane, a green flare is fired by the platoon to request air cover, and the platoon performs an emergency stop.

When a platoon reaches the destination, it fires a yellow flare.

When a platoon approaches another platoon on the road, it stops until the other platoon moves ahead or is destroyed.

When a platoon in a unit reaches the first spread point after the combat zone entry, it waits for the other platoons in the unit before proceeding.

 

 

 

 

There is an example of specification group in TankSpec.Group. The utility is to be called from a cmd window. If you type "CreateTankColumn /?" you'll get a description of all parameters.

>CreateTankColumn.exe /h
Usage:
CreateTankColumn [-u <unit size>] [-n <number of platoons>]
                 -f <path to specification group> -o <output file name>
    <unit size> must be larger than 0 (default : 2)
    <number of platoons> must be larger than 0 (default : 6)
    <path to specification group> is the path to a .Group file that specifies
                                  the country of the platoons and their
                                  waypoints
    <output file name> is the name of the .Group file to be generated.
 

Sources are available at https://bitbucket.org/johdex/sturmovikmission

Edited by coconut
  • Upvote 5

Share this post


Link to post
Share on other sites

Very interesting! Thanks for sharing.

 

I have not explored land units in depth but it looks like a great tool to create proper land AI behavior.

Edited by Jade_Monkey

Share this post


Link to post
Share on other sites

And here comes version 0.2, with a bug fix (Russian columns would panic stop when approached by an allied plane).

 

  • Upvote 1

Share this post


Link to post
Share on other sites

Version 0.3 (download):

- Removed logic that deleted wrecks. It was intended to avoid accidental pile ups of vehicles against wrecks, but it introduced more problems that it solved (wrong vehicle deleted, corruption of the allKilled counter).
- Reduced enemy plane proximity trigger radius for panic stop to 750m.
  • Upvote 1

Share this post


Link to post
Share on other sites

I used to put the leader behind his team, just to avoid as far as possible the behaviour you mentioned.  But, your tool seems to be really powerfull.

 

Thank you very much, Professor :salute:

Edited by -IRRE-golgoth21

Share this post


Link to post
Share on other sites

Don't you get troubles when travelling on roads, or in column, with the leader back?

 

Anyway, I just found out using low priority on the waypoints in combat zones solves quite a few problems. You can have pretty large groups that work decently well that way. Another benefit is that it seems the game is much better at handling one large group than multiple small groups when it comes to FPS. No idea why.

 

In the end, I think this tool might not be needed at all. Oh well...

Share this post


Link to post
Share on other sites

 

 

Another benefit is that it seems the game is much better at handling one large group than multiple small groups when it comes to FPS
 

 

Coconut do you mean FPS. 

Does the larger group apply to AI aircraft as well I have been using smaller groups of 2 or 4 aircraft.

Share this post


Link to post
Share on other sites

Yes, I meant FPS, but now that I'm thinking about it, I was testing on the Lapino map, that could just as well have been the reason.

Share this post


Link to post
Share on other sites
Think I may be doing something wrong here...or maybe the .exe is referencing a folder on your system that isn't on mine? A little guidance would be appreciated :) Thanks!

 

E:\Downloads\CreateTankColumn-0.3>CreateTankColumn.exe -u 10 -n 3 -f E:\Download

s\CreateTankColumn-0.3\ColumnCoconut.Group -o E:\Downloads\CreateTankColumn-0.3\

Coconut.group

Failed to create columns because 'Could not find a part of the path 'C:\Users\jo

hann\Documents\Visual Studio 2013\Projects\sturmovikmission\data\TankPlatoon.Gro

up'.'

Share this post


Link to post
Share on other sites

@@AbortedMan That was a bug in my tool. Should now be fixed (download). Thanks a lot for testing it and reporting that bug!

 

By the way, there is an example specification with the tool in TankSpec.Group, and a Readme file where I tried to explain things.

 

Also, I would not pick 10 for the unit size and 3 for the number of platoons. That would give you an incomplete unit composed of 3 platoons, where 10 where expected. The other way around, unit size = 3 and number or platoons = 10 would produce more interesting results (3 units and one third of a unit). If the unit size is too big you risk collisions on the battlefield, as the way I distribute platoons on the moving front isn't very smart (it's simply random, with no checks for overlaps).

Edited by coconut

Share this post


Link to post
Share on other sites

@@AbortedMan That was a bug in my tool. Should now be fixed (download). Thanks a lot for testing it and reporting that bug!

 

By the way, there is an example specification with the tool in TankSpec.Group, and a Readme file where I tried to explain things.

 

Also, I would not pick 10 for the unit size and 3 for the number of platoons. That would give you an incomplete unit composed of 3 platoons, where 10 where expected. The other way around, unit size = 3 and number or platoons = 10 would produce more interesting results (3 units and one third of a unit). If the unit size is too big you risk collisions on the battlefield, as the way I distribute platoons on the moving front isn't very smart (it's simply random, with no checks for overlaps).

Awesome. Thanks for the update and the info!

Oh and I forgot to ask, but I haven't tested this yet...am I able to change which vehicles are in the convoy? I imagine this will be possible once they're in the mission through the editor, but will that change/ruin any functions if their object names change? For example if I want all trucks with one or two AA units mixed in (and no tanks).

Edited by AbortedMan

Share this post


Link to post
Share on other sites

Any ideas?...

 

CreateTankError.jpg

 

Running Windows 10 Home. Not sure if certain libraries or specific programs are required...I've got none of that coding stuff.

Edited by AbortedMan

Share this post


Link to post
Share on other sites

It took some careful examination of your screenshot to see what happened. In the top left window, you typed "CreateTankColumns-0.3.1>CreateTankColumn.exe", which redirected the output of your (failed) command to a file named "CreateTankColumn.exe", erasing the original content of the file. Then you tried executing that file, giving you that error message.

 

Extract the ZIP again and try again, you should get better results.

 

Edit: Also, don't run this as admin, it's not needed. I'm shivering at the thought of what might have happened if the word "format" had appeared in the text you redirected to the file.

 

Oh and I forgot to ask, but I haven't tested this yet...am I able to change which vehicles are in the convoy? I imagine this will be possible once they're in the mission through the editor, but will that change/ruin any functions if their object names change? For example if I want all trucks with one or two AA units mixed in (and no tanks).

 

This is not possible at the moment, but I don't think it should be a problem. I'll look into that right now. 

Edited by coconut

Share this post


Link to post
Share on other sites

 

 

This is not possible at the moment, but I don't think it should be a problem. I'll look into that right now.

 

Fresh version 0.4 (donwload) now makes this possible.

 

All vehicles are expected to be German, and the conversion to Russian vehicles is done following these rules:

let tryGetRussianBaseEquivalent =
    function
    | "horch830" -> Some ("gaz", "gaz-m")
    | "opel-blitz" -> Some ("zis", "zis5")
    | "pziii-l" -> Some ("t34-76stz", "t34-76stz")
    | "pziv-g" -> Some ("t70", "t70")
    | "sdkfz10-flak38" -> Some ("gaz", "gaz-aa-m4-aa")
    | "sdkfz251-1c" -> Some ("ba64", "ba64")
    | "sdkfz251-szf" -> Some ("zis", "bm13")
    | "stug37l24" -> Some ("kv1-42", "kv1-42")
    | "stug40l43" -> Some ("kv1-42", "kv1-42")
    | _ -> None

Sadly, no German counter-part for the bt7m, and it's therefore missing from the list. I think one of the trucks might also be missing.

 

To take advantage of this feature, modify (or make a copy of) TankPlatoon.Group in the mission editor to suit your needs, save, then use option -t followed by the name of the group file you just saved.

  • Upvote 1

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...