Results 1 to 16 of 16

Thread: Groupformations: Warscape Battle Formations.

  1. #1
    The Hedge Knight's Avatar Fierce When Cornered
    Artifex

    Join Date
    Oct 2009
    Location
    England
    Posts
    5,875

    Default Groupformations: Warscape Battle Formations.

    Warscape Formations Guide
    THK
    You are free to use anything in this guide so long as the source is made clear



    This is my guide on what i have learned from initial fiddling with formations now i have had some results, as can be seen above with this prussian checkerboard formation (which as far as im aware is the first 100% custom formation made for wascape not based on one made by CA as Sinhuets are). This guide is by no means complete, there are surely tricks not included here which can be used to make more effective formations however i see no point in hoarding information (one of my pet hates) forcing others to start totally from scratch. It should also be noted that this guide covers ntw and etw, i have not tested SGII however as i understand it they are extremelly similar formats differing only in headers.

    The Converter

    The converter i have used in this tutorial is Taws Groupformations -> .txt converter. Though you can alse use [url=http://www.twcenter.net/forums/showthread.php?t=464784]Sinhuets EXE editor however this will not work with shogun groupformations. has incomplete tagging and is not used by myself (so dont ask me to help in its usage).

    A basic Tutorial for the use of Taws tools can be found HERE

    You can grab jruby Here make sure you the exe version.

    The general usage should then be.
    Jruby gf_unpack groupformations.bin groupformations.txt

    Hover i got bored of command prompt so made a pair of batch files to aid conversion, just put them in the folder with the group formations files and converter files double click them to run them. Get the batch files here. If the conversion fails then run the batch files through command prompt (shift plus right in the folder click -> open command prompt then type the batch name) and you will get Taws error handling.

    Error handling.
    The tools will output if there is an error giving the line. Here is an example.
    Spoiler Alert, click show to read: 

    Error handling in Taws tools

    This is caused by a missing square bracket on the line where it says 'pairs' directly above the (highlighted line)




    The File Format


    When you convert the groupformations file to text it will come up in somthing a little like xml.

    Here is a very basic example.

    Code:
    [{:name=>"THK  very simple formation",
    
    :priority=>1.0, :purpose=>"1 (attack)", :min_artillery=>0, :min_infantry=>0, :min_cavalry=>0, :factions=>[], :lines=> [{:type=>:absolute, :priority=>1.0, :shape=>"0 (line)", :spacing=>2.0, :crescent_yoffset=>0.0, :x=>0.0, :y=>0.0, :min_threshold=>0, :max_threshold=>-1, :pairs=>[{:priority=>1.0, :unit_class=>"46 (any)"}]}, {:type=>:relative, :priority=>1.0, :relative_to=>1, :shape=>"0 (line)", :spacing=>2.0, :crescent_yoffset=>0.0, :x=>0.0, :y=>-10.0, :min_threshold=>0, :max_threshold=>-1, :pairs=> [{:priority=>1.00, :unit_class=>"46 (any)"}]}]},


    This ingame would appear as two lines one directly behind the other) with random units in each, though right now it seems confusing.

    First thing to note is that text in round backets "(I will not be parsed, do not change me and expect things to happen)" is not parsed so dont bother change it, its FOR REFERENCE ONLY.

    What one must accept when looking at this is that it was designed to be two things, simple and Napoleonic. Its designed for rigid formations. The formation consists of a header (highlighted in blue) which is a set of conditions for its use and a number of block which tell the game where units (naval or land) are placed. The blocks are highlighted in red. Each one of the blocks is a line upon which units are placed either by the ai or when a game starts or when you choose a preset fromation. This line can be any length and have any number of units in it so long as a cap is not set upon this. The line can exist exist as a line, a column or an arc and is fairly rigid. Unit within the blocks have a small degree of independace from one another. Relative blocks have a moderate degree of independance from one another. Non relative blocks (you will understand this later) have a large degree of independace from one another.

    One of the most important things is to have the right blocks in the right places.

    Too few blocks will result in a rigid inflexible formation which the ai will have trouble with in randomised terrain. Too few blocks will result in formations with little coherence as each block does its own thing. The effect of this can however be reduced i believe using spanning blocks though this still needs researching.

    Having more blocks also allows for a closer control of the order of units.



    Line by line analysis

    Header Info

    Header
    name [{:name=>"Multiple Selection Drag Out Land",


    This can be anything you want it is simply an id tag however certain names have certain links to the ui. The ai will use any formation name.

    Special names include
    -Multiple Selection Drag Out Land: the shape that will be formed when you right click and drag several units.

    -Single Line Standard: The generic deployment pattern for the player.

    Single Line Cavalry Left Flank
    Single Line Cavalry Right Flank
    Double Line Standard
    Double Line Screened
    Triple Line Standard
    Triple Line Integrated Artillery: Amongst others these blocks link to ui and are formed when buttons are pressed by the player.

    Ambush Column : used when an army is ambushed

    priority :priority=>0.0,

    The chance of the formation will be used by the ai. Formations with low probabilities will occur far less ofter even if it is just .1, dont ask me how the logic behind this works.

    Perpose
    :purpose=>"1 (attack)",


    What the ai is to use the formation for

    1- attack
    2- defend
    3- attack/defend
    96- naval

    There may be more options, but as ca never uses them we cant tell what they are.

    unit conditions
    :min_artillery=>0,
    :min_infantry=>0,
    :min_cavalry=>0,


    By percentage the number of units requied for the formation to be used ( can be a minimum percentage of any of the three classes) , the correct format is

    :min_artillery=>0,
    :min_infantry=>50,
    :min_cavalry=>0,

    not

    :min_artillery=>0,
    :min_infantry=>0.5,
    :min_cavalry=>0,

    factions :factions=>[],

    The faction that can use the formation, blank means any in this case. It should be noted if a faction can use a formation it will even if other formations have a higher priority.

    To fill this use the faction name and commas like this.

    :factions=>["egy_bedouin", "egy_mamelukes", "egy_ottomans", "ottoman_rebels", "ottomans"],
    Header
    It should all be lower case.

    Block info
    Blocks

    There are three types of block, Absolute, Relative and Spanning.

    The absolute block if the key point of the formation which everything else is relative to, it doesnt matter where it is, but there must be one and it will be deployed at the center front of the deployment zone.

    The Relative Blocks which are the basic building blocks of the formation.

    The spanning blocks which are not totally necessary and seem to increase the rigidty of the formation and define larger groups for the ai.

    Each block also has a number which cant be seen, its simply a count of where it is. The starting (absolute block) is number 0 and each subsequent relative block increases this count by one.

    They all have different formats so here is an example of each.
    Code:
       [{:type=>:absolute,
         :priority=>2.0,
         :shape=>"0 (line)",
         :spacing=>2.0,
         :crescent_yoffset=>0.0,
         :x=>0.0,
         :y=>0.0,
         :min_threshold=>0,
         :max_threshold=>-1,
         :pairs=>[{:priority=>1.0, :unit_class=>"46 (any)"}]},
        {:type=>:relative,
         :priority=>1.0,
         :relative_to=>1,
         :shape=>"0 (line)",
         :spacing=>2.0,
         :crescent_yoffset=>0.0,
         :x=>-5.0,
         :y=>0.0,
         :min_threshold=>0,
         :max_threshold=>-1,
         :pairs=>
          [{:priority=>0.01, :unit_class=>"46 (any)"}]}]},
        {:type=>:spanning, :blocks=>[0, 1]},
    Priority :priority=>2.0,

    The priority of the block within the formation. As formations need to be flexible some blocks may not appear at certain times due to odd unit combinations so this must be used to define the less improtant blocks which should be cut first.

    shape :shape=>"0 (line)",

    The shape of the block. These are

    0-Line
    Spoiler Alert, click show to read: 


    1-Column
    Spoiler Alert, click show to read: 


    2-Crescent front
    Spoiler Alert, click show to read: 
    Spoiler Alert, click show to read: 


    3- Crescent back



    Spacing :spacing=>2.0,


    the gap between each unit

    How bigs each gap?

    Spoiler Alert, click show to read: 


    Line 1 (front) = 1
    line 2 = 2
    line 3 = 5
    line 4 = 10
    line 5 = 20
    line 6 (back) = 30

    crescent y offset :crescent_yoffset=>0.0,


    The depth of the crescent, to give you an idea of this, the first crescent above is offset 10, the second is offset 5.

    :relative_to :relative_to=>1,


    The block which the position of the relative block is based on. The absolute block is block 0, and each subsequent block has a number one higher.

    Block relativity is very important and formations would not work without it. It works better than simply choosing x and y coordinates from the central block for several reasons. Firstly block size is dynamic, this means that if the size of a block changes the position of any blocks relative to it will change ensuring holes do not open up in the formation. Once you have a good hold of relativity its incredibly easy to make formations. The snazzy checkerboard shown at the start took me less than 20 minutes to make.

    example of relativity


    Code:
    [{:name=>"Single_line_standard",
      :priority=>0.9,
      :purpose=>"3 (attack/defend)",
      :min_artillery=>0,
      :min_infantry=>0,
      :min_cavalry=>0,
      :factions=>[],
      :lines=>
       [{:type=>:absolute,
         :priority=>2.0,
         :shape=>"0 (line)",
         :spacing=>2.0,
         :crescent_yoffset=>0.0,
         :x=>0.0,
         :y=>0.0,
         :min_threshold=>0,
         :max_threshold=>-1,
         :pairs=>[{:priority=>1.0, :unit_class=>"46 (any)"}]},
        {:type=>:relative,
         :priority=>1.1,
         :relative_to=>0,
         :shape=>"0 (line)",
         :spacing=>2.0,
         :crescent_yoffset=>0.0,
         :x=>-5.0,
         :y=>-1.0,
         :min_threshold=>0,
         :max_threshold=>3,
         :pairs=>[{:priority=>1.0, :unit_class=>"18 (infantry_line)"}]},
        {:type=>:relative,
         :priority=>1.1,
         :relative_to=>0,
         :shape=>"0 (line)",
         :spacing=>2.0,
         :crescent_yoffset=>0.0,
         :x=>0.0,
         :y=>2.0,
         :min_threshold=>0,
         :max_threshold=>3,
         :pairs=>[{:priority=>1.0, :unit_class=>"18 (infantry_line)"}]}]},
    One to the left, one infront. Note that negative coordinates move blocks left.

    [Imgur](http://i.imgur.com/oVHNsCo.jpg)
    Code:
    [{:name=>"Single_line_standard",
      :priority=>0.9,
      :purpose=>"3 (attack/defend)",
      :min_artillery=>0,
      :min_infantry=>0,
      :min_cavalry=>0,
      :factions=>[],
      :lines=>
       [{:type=>:absolute,
         :priority=>2.0,
         :shape=>"0 (line)",
         :spacing=>2.0,
         :crescent_yoffset=>0.0,
         :x=>0.0,
         :y=>0.0,
         :min_threshold=>0,
         :max_threshold=>-1,
         :pairs=>[{:priority=>1.0, :unit_class=>"46 (any)"}]},
        {:type=>:relative,
         :priority=>1.1,
         :relative_to=>0,
         :shape=>"0 (line)",
         :spacing=>2.0,
         :crescent_yoffset=>0.0,
         :x=>-5.0,
         :y=>-1.0,
         :min_threshold=>0,
         :max_threshold=>3,
         :pairs=>[{:priority=>1.0, :unit_class=>"18 (infantry_line)"}]},
        {:type=>:relative,
         :priority=>1.1,
         :relative_to=>1,
         :shape=>"0 (line)",
         :spacing=>2.0,
         :crescent_yoffset=>0.0,
         :x=>0.0,
         :y=>2.0,
         :min_threshold=>0,
         :max_threshold=>3,
         :pairs=>[{:priority=>1.0, :unit_class=>"18 (infantry_line)"}]}]},
    This formation would appear to be the same however notice the relativity of block 2 has been changed to block 1 so it appears behind that rather than the main block.




    location :x=>0.0,
    :y=>0.0,


    The control the position of the block relative to another block. In an absolute block they do very little, it is advisable however to set y to a value of around -50 as this seems to help deployent for the ai. in a relative block they show why this was deigned for napoleonic units.

    A negative y value moves a block forwards and backwards along a line from the center of a relative block.

    A y value of -2 results in
    Spoiler Alert, click show to read: 


    X values move the block relative to the edge of the relative block. Confusing? Well i mean like this.

    This has x value 5, y -2
    Spoiler Alert, click show to read: 


    So the block appears next to the edge of the other block, but back slightly.

    Min and max thresholds
    :min_threshold=>0,
    :max_threshold=>3,


    the miniumum threshold is the minimum number of units needed in the block for it to appear. The max is the max number of units the block can hold.

    One must be careful as too many minimums can lead to over rigid formations which do not repond well to extreme armies.

    pairs :pairs=>[{:priority=>1.0, :unit_class=>"18 (infantry_line)"}]}]},


    This defines the unit types which can occur in a block. Low priority units will only appear if there is a shortage or an overabundance of a certain unit type. It is important to include low prioirty 'any' blocks in the army to avoid ctd's when an army contains a unit type not explicitelly used in the formation.

    here is a list of available unit types.

    Spoiler Alert, click show to read: 

    artillery_fixed = 0
    artillery_foot = 1
    artillery_horse = 2
    cavalry_camels = 3
    cavalry_heavy = 4
    cavalry_irregular = 5
    cavalry_lancers = 6
    cavalry_light = 7
    cavalry_missile = 8
    cavalry_standard = 9
    dragoons = 10
    elephants = 11
    general = 12
    infantry_berserker = 13
    infantry_elite = 14
    infantry_grenadiers = 15
    infrantry irregulars = 16
    infantry_light = 17
    infantry_line = 18
    infantry_melee = 19
    infantry_militia = 20
    infantry_mob = 21
    infantry_skirmishers = 22
    naval_admiral = 23
    naval_bomb_ketch = 24
    naval_brig = 25
    naval_dhow = 26
    naval_fifth_rate = 27
    naval_first_rate = 28
    naval_fourth_rate = 29
    naval_galleon = 30
    naval_heavy_galley = 31
    naval_indiaman = 32
    naval_light_galley = 33
    naval_lugger = 34
    naval_medium_galley = 35
    naval_over_first_rate = 36
    naval_razee = 37
    naval_rocket_ship = 38
    naval_second_rate = 39
    naval_sixth_rate = 40
    naval_sloop = 41
    naval_steam_ship =42
    naval_third_rate = 43
    naval_xebec = 44
    45 doesnt seem to exist
    any = 46


    Additional unit types can be added to the block with this format

    [{:priority=>1.0, :unit_class=>"4 (cavalry_heavy)"},
    {:priority=>1.0, :unit_class=>"9 (cavalry_standard)"},
    {:priority=>1.0, :unit_class=>"11 (elephants)"}]},

    spanning
    {:type=>:spanning, :blocks=>[0, 1]},


    This will add rigidity to a set of blocks and cause the ai to use them in a more unified manner. Ie it makes blocks within the spanning statement act in a more unified way. Good for lines, bad for skirmishers and cavalry (generally). Use it when you have lots of little blocks which tend to become disorgnised breaking the formation up.

    Note that a spanning block does not increase the number of blocks so dont acount for it when working out what block you need to make somthing relative to.



    Last edited by The Hedge Knight; April 07, 2015 at 10:10 PM.

  2. #2
    The Hedge Knight's Avatar Fierce When Cornered
    Artifex

    Join Date
    Oct 2009
    Location
    England
    Posts
    5,875

    Default Re: Warscape Battle Formations.

    Putting it all together: Basic Examples

    Basic two line formations
    Basic two line formations

    Code:
    Code:
    [{:name=>"Single_line_standard",
      :priority=>0.0,
      :purpose=>"1 (attack)",
      :min_artillery=>0,
      :min_infantry=>0,
      :min_cavalry=>0,
      :factions=>[],  :lines=>
       [{:type=>:absolute,
         :priority=>2.0,     :shape=>"0 (line)",
         :spacing=>0.0,
         :crescent_yoffset=>0.0,
         :x=>0.0,
         :y=>0.0,
         :min_threshold=>0,
         :max_threshold=>-1,
         :pairs=>[{:priority=>1.0, :unit_class=>"46 (any)"}]},
        {:type=>:relative,
         :priority=>1.1,
         :relative_to=>0,
         :shape=>"1 (line)"
         :spacing=>2.0,
         :crescent_yoffset=>0.0,
         :x=>0.0,
         :y=>-2.0,
         :min_threshold=>0,
         :max_threshold=>-1,
         :pairs=>[{:priority=>1.0, :unit_class=>"18 (infantry_line)"}]}]},
    This formation will have a line of line infantry behind a line of the rest of the units, its a pretty good start place for more complex formations.

    Spoiler Alert, click show to read: 


    two blocks in the same place

    Code:
    [{:name=>"Single_line_standard",
      :priority=>0.9,
      :purpose=>"3 (attack/defend)",
      :min_artillery=>0,
      :min_infantry=>0,
      :min_cavalry=>0,
      :factions=>[],
      :lines=>
       [{:type=>:absolute,
         :priority=>2.0,
         :shape=>"0 (line)",
         :spacing=>2.0,
         :crescent_yoffset=>0.0,
         :x=>0.0,
         :y=>0.0,
         :min_threshold=>0,
         :max_threshold=>-1,
         :pairs=>[{:priority=>1.0, :unit_class=>"46 (any)"}]},
        {:type=>:relative,
         :priority=>1.1,
         :relative_to=>0,
         :shape=>"0 (line)",
         :spacing=>2.0,
         :crescent_yoffset=>0.0,
         :x=>5.0,
         :y=>-2.0,
         :min_threshold=>0,
         :max_threshold=>3,
         :pairs=>[{:priority=>1.0, :unit_class=>"18 (infantry_line)"}]},
        {:type=>:relative,
         :priority=>0.1,
         :relative_to=>0,
         :shape=>"0 (line)",
         :spacing=>2.0,
         :crescent_yoffset=>0.0,
         :x=>5.0,
         :y=>-2.0,
         :min_threshold=>0,
         :max_threshold=>3,
         :pairs=>[{:priority=>1.0, :unit_class=>"18 (infantry_line)"}]}]},
    Having Two blocks in the same place reults in one getting shifted behind the other.

    Examples of priorities and and min/max restrictions
    Code:
    [{:name=>"Single_line_standard",
      :priority=>0.9,
      :purpose=>"3 (attack/defend)",
      :min_artillery=>0,
      :min_infantry=>0,
      :min_cavalry=>0,
      :factions=>[],
      :lines=>
       [{:type=>:absolute,
         :priority=>2.0,
         :shape=>"0 (line)",
         :spacing=>2.0,
         :crescent_yoffset=>0.0,
         :x=>0.0,
         :y=>0.0,
         :min_threshold=>0,
         :max_threshold=>-1,
         :pairs=>[{:priority=>1.0, :unit_class=>"46 (any)"}]},
        {:type=>:relative,
         :priority=>1.1,
         :relative_to=>0,
         :shape=>"0 (line)",
         :spacing=>2.0,
         :crescent_yoffset=>0.0,
         :x=>5.0,
         :y=>-2.0,
         :min_threshold=>0,
         :max_threshold=>-1,
         :pairs=>[{:priority=>1.0, :unit_class=>"18 (infantry_line)"}]},
        {:type=>:relative,
         :priority=>0.1,
         :relative_to=>0,
         :shape=>"0 (line)",
         :spacing=>2.0,
         :crescent_yoffset=>0.0,
         :x=>5.0,
         :y=>-4.0,
         :min_threshold=>0,
         :max_threshold=>3,
         :pairs=>[{:priority=>1.0, :unit_class=>"18 (infantry_line)"}]}]},
    I put a low priortiy on the three unit block, interestingly this caused only one unit to appear in the block. The rest of the line infantry appeared in the main (absolute) block and the higher priority limited block.


    Blocks in odd places
    Code:
    [{:name=>"Single_line_standard",
      :priority=>0.9,
      :purpose=>"3 (attack/defend)",
      :min_artillery=>0,
      :min_infantry=>0,
      :min_cavalry=>0,
      :factions=>[],
      :lines=>
       [{:type=>:absolute,
         :priority=>2.0,
         :shape=>"0 (line)",
         :spacing=>2.0,
         :crescent_yoffset=>0.0,
         :x=>0.0,
         :y=>0.0,
         :min_threshold=>0,
         :max_threshold=>-1,
         :pairs=>[{:priority=>1.0, :unit_class=>"46 (any)"}]},
        {:type=>:relative,
         :priority=>1.1,
         :relative_to=>0,
         :shape=>"0 (line)",
         :spacing=>2.0,
         :crescent_yoffset=>0.0,
         :x=>5.0,
         :y=>-4.0,
         :min_threshold=>0,
         :max_threshold=>3,
         :pairs=>[{:priority=>1.0, :unit_class=>"18 (infantry_line)"}]},
        {:type=>:relative,
         :priority=>1.1,
         :relative_to=>1,
         :shape=>"0 (line)",
         :spacing=>2.0,
         :crescent_yoffset=>0.0,
         :x=>-5.0,
         :y=>-2.0,
         :min_threshold=>0,
         :max_threshold=>3,
         :pairs=>[{:priority=>1.0, :unit_class=>"18 (infantry_line)"}]}]},
    Showing how to get a block to appear behind the main block at the edge (due to the odd system of horizontal/vertical positioning. Make its realitve to another nearby block.


    straight lines
    :priority=>0.9,
    :purpose=>"3 (attack/defend)",
    :min_artillery=>0,
    :min_infantry=>0,
    :min_cavalry=>0,
    :factions=>[],
    :lines=>
    [{:type=>:absolute,
    :priority=>2.0,
    :shape=>"0 (line)",
    :spacing=>2.0,
    :crescent_yoffset=>0.0,
    :x=>0.0,
    :y=>0.0,
    :min_threshold=>0,
    :max_threshold=>-1,
    :pairs=>[{:priority=>1.0, :unit_class=>"46 (any)"}]},
    {:type=>:relative,
    :priority=>1.1,
    :relative_to=>0,
    :shape=>"0 (line)",
    :spacing=>2.0,
    :crescent_yoffset=>0.0,
    :x=>5.0,
    :y=>-4.0,
    :min_threshold=>0,
    :max_threshold=>3,
    :pairs=>[{:priority=>1.0, :unit_class=>"18 (infantry_line)"}]},
    {:type=>:relative,
    :priority=>1.1,
    :relative_to=>1,
    :shape=>"0 (line)",
    :spacing=>2.0,
    :crescent_yoffset=>0.0,
    :x=>-5.0,
    :y=>0.0,
    :min_threshold=>0,
    :max_threshold=>3,
    :pairs=>[{:priority=>1.0, :unit_class=>"18 (infantry_line)"}]}]},
    [/code]
    Final example of relativity, making a line, using three blocks provides additional felxibility. The zig zag is due to a lack of deployment


    Making a more advanced formation




    This is a plan of the formation i will make. It is designed for tgw with the sacrificial units being placed to draw fire while the main line adavnces.


    The intitial blocks
    Code:
     {:name=>"Single Line Standard",
      :priority=>0.9,
      :purpose=>"3 (attack/defend)",
      :min_artillery=>0,
      :min_infantry=>0,
      :min_cavalry=>0,
      :factions=>[],
      :lines=>
       [{:type=>:absolute,
         :priority=>2.0,
         :shape=>"0 (line)",
         :spacing=>2.0,
         :crescent_yoffset=>0.0,
         :x=>0.0,
         :y=>0.0,
         :min_threshold=>3,
         :max_threshold=>-1,
         :pairs=>[{:priority=>0.05, :unit_class=>"46 (any)"},
         {:priority=>1.0, :unit_class=>"18 (Infantry_Line)"},
         {:priority=>1.0, :unit_class=>"18 (Infantry_Line)"},
         {:priority=>0.1, :unit_class=>"20 (Infantry_Militia)"},     
         {:priority=>0.1, :unit_class=>"21 (Infantry_Mob)"},     
         {:priority=>1.0, :unit_class=>"19 (Infantry_Melee)"},     
         {:priority=>0.2, :unit_class=>"16 (Infantry_Irregulars)"}]},
        {:type=>:relative,
         :priority=>1.0,
         :relative_to=>0,
         :shape=>"0 (line)",
         :spacing=>2.0,
         :crescent_yoffset=>0.0,
         :x=>-5.0,
         :y=>0.0,
         :min_threshold=>3,
         :max_threshold=>5,
         :pairs=>
         [{:priority=>0.05, :unit_class=>"46 (any)"},
         {:priority=>1.0, :unit_class=>"18 (Infantry_Line)"},     
         {:priority=>0.1, :unit_class=>"20 (Infantry_Militia)"}, 
         {:priority=>0.1, :unit_class=>"21 (Infantry_Mob)"},     
         {:priority=>1.0, :unit_class=>"19 (Infantry_Melee)"},     
         {:priority=>0.2, :unit_class=>"16 (Infantry_Irregulars)"}]},
        {:type=>:relative,
         :priority=>1.0,
         :relative_to=>0,
         :shape=>"0 (line)",
         :spacing=>2.0,
         :crescent_yoffset=>0.0,
         :x=>5.0,
         :y=>0.0,
         :min_threshold=>3,
         :max_threshold=>5,
         :pairs=>{:priority=>1.0, :unit_class=>"14 (infantry_elite)"},
         {:priority=>1.0, :unit_class=>"15 (infantry_grenadiers)"},
         {:priority=>0.5, :unit_class=>"13 (infantry__berserker)"},
         {:priority=>0.5, :unit_class=>"18 (infantry_line)"},
         {:priority=>0.05, :unit_class=>"20 (Infantry_Militia)"},     
         {:priority=>0.05, :unit_class=>"21 (Infantry_Mob)"},     
         {:priority=>0.1, :unit_class=>"19 (Infantry_Melee)"},     
         {:priority=>0.2, :unit_class=>"16 (Infantry_Irregulars)"}]},
        {:type=>:relative,
         :priority=>1.0,
         :relative_to=>0,
         :shape=>"0 (line)",
         :spacing=>2.0,
         :crescent_yoffset=>0.0,
         :x=>0.0,
         :y=>-15.0,
         :min_threshold=>0,
         :max_threshold=>-1,
         :pairs=>[{:priority=>2.00, :unit_class=>"46 (any)"}]}]},
    Three blocks, the elite infantry should appear to the right of the line (block three, note the posative coordinates) while line infantry appears to the center and left. The forth block positioned behind is an overflow block for units which have not been dealth with yet, keeping them out of the way. This block will be left at the end to place units which have nowhere else to go in and avoid errors.

    Notice the low priority on unimportant units in the main blocks to allow for armies with odd compositions. Also notice the max thresholds to ensure this lines does not become too large. The use of three blocks allows me to control the order and also gives the formation more felibility in terms of ai than a single line would. Its important to allow plent of flexibility in any formation.

    The main line is seperated into three blocks for several reasons. It allows me to place elite units on the right so they are compact and effective. It also increases the flexibility of the formation when navigating the map.

    The min and max thresholds ensure that the main line of this formation will have some bulk however will not become overlarge due to high priorities, hopefully allowing this formation to be as generic as possible.

    Result:


    Right so now i want to seperate the light inf onto the flanks. and place the cav behind them ready to support the artillery.

    Code:
     {:name=>"Single Line Standard",
      :priority=>0.9,
      :purpose=>"3 (attack/defend)",
      :min_artillery=>0,
      :min_infantry=>0,
      :min_cavalry=>0,
      :factions=>[],
      :lines=>
       [{:type=>:absolute,
         :priority=>2.0,
         :shape=>"0 (line)",
         :spacing=>2.0,
         :crescent_yoffset=>0.0,
         :x=>0.0,
         :y=>0.0,
         :min_threshold=>3,
         :max_threshold=>-1,
         :pairs=>[{:priority=>0.05, :unit_class=>"46 (any)"},
         {:priority=>1.0, :unit_class=>"18 (Infantry_Line)"},
         {:priority=>0.1, :unit_class=>"20 (Infantry_Militia)"},     
         {:priority=>0.1, :unit_class=>"21 (Infantry_Mob)"},     
         {:priority=>1.0, :unit_class=>"19 (Infantry_Melee)"},     
         {:priority=>0.2, :unit_class=>"16 (Infantry_Irregulars)"}]},
        {:type=>:relative,
         :priority=>1.0,
         :relative_to=>0,
         :shape=>"0 (line)",
         :spacing=>2.0,
         :crescent_yoffset=>0.0,
         :x=>-5.0,
         :y=>0.0,
         :min_threshold=>3,
         :max_threshold=>5,
         :pairs=>
         [{:priority=>0.05, :unit_class=>"46 (any)"},
         {:priority=>1.0, :unit_class=>"18 (Infantry_Line)"},     
         {:priority=>0.1, :unit_class=>"20 (Infantry_Militia)"}, 
         {:priority=>0.1, :unit_class=>"21 (Infantry_Mob)"},     
         {:priority=>1.0, :unit_class=>"19 (Infantry_Melee)"},     
         {:priority=>0.2, :unit_class=>"16 (Infantry_Irregulars)"}]},
        {:type=>:relative,
         :priority=>1.0,
         :relative_to=>0,
         :shape=>"0 (line)",
         :spacing=>2.0,
         :crescent_yoffset=>0.0,
         :x=>5.0,
         :y=>0.0,
         :min_threshold=>3,
         :max_threshold=>5,
         :pairs=>[{:priority=>1.0, :unit_class=>"14 (infantry_elite)"},
         {:priority=>1.0, :unit_class=>"15 (infantry_grenadiers)"},
         {:priority=>0.5, :unit_class=>"13 (infantry__berserker)"},
         {:priority=>0.5, :unit_class=>"18 (infantry_line)"},
         {:priority=>0.05, :unit_class=>"20 (Infantry_Militia)"},     
         {:priority=>0.05, :unit_class=>"21 (Infantry_Mob)"},     
         {:priority=>0.1, :unit_class=>"19 (Infantry_Melee)"},     
         {:priority=>0.2, :unit_class=>"16 (Infantry_Irregulars)"}]},
        {:type=>:relative,
         :priority=>1.0,
         :relative_to=>1,
         :shape=>"0 (line)",
         :spacing=>10.0,
         :crescent_yoffset=>0.0,
         :x=>-15.0,
         :y=>-15.0,
         :min_threshold=>2,
         :max_threshold=>-1,
         :pairs=>[{:priority=>1.0, :unit_class=>"17 (infantry_light)"},
         {:priority=>1.0, :unit_class=>"22 (infantry__skirmisher)"},
         {:priority=>0.5, :unit_class=>"20 (Infantry_Militia)"},     
         {:priority=>0.3, :unit_class=>"21 (Infantry_Mob)"},     
         {:priority=>0.8, :unit_class=>"19 (Infantry_Melee)"},     
         {:priority=>1.0, :unit_class=>"16 (Infantry_Irregulars)"}]},
        {:type=>:relative,
         :priority=>1.0,
         :relative_to=>2,
         :shape=>"0 (line)",
         :spacing=>10.0,
         :crescent_yoffset=>0.0,
         :x=>15.0,
         :y=>-15.0,
         :min_threshold=>2,
         :max_threshold=>-1,
         :pairs=>[{:priority=>1.0, :unit_class=>"17 (infantry_light)"},
         {:priority=>1.0, :unit_class=>"22 (infantry__skirmisher)"},
         {:priority=>0.5, :unit_class=>"20 (Infantry_Militia)"},     
         {:priority=>0.3, :unit_class=>"21 (Infantry_Mob)"},     
         {:priority=>0.8, :unit_class=>"19 (Infantry_Melee)"},     
         {:priority=>1.0, :unit_class=>"16 (Infantry_Irregulars)"}]},
        {:type=>:relative,
         :priority=>1.0,
         :relative_to=>0,
         :shape=>"0 (line)",
         :spacing=>2.0,
         :crescent_yoffset=>0.0,
         :x=>0.0,
         :y=>-15.0,
         :min_threshold=>0,
         :max_threshold=>-1,
         :pairs=>[{:priority=>2.00, :unit_class=>"46 (any)"}]}]},
    Notice the max unit thresholds on the new blocks, i dont want these wings too big and immobile as they are designed for sneaky flanking. Also notice their relativitie blocks, its easier to use the edge blocks than the center blocks as this makes the distance more dynamic depending on the size of the blocks in the gaps.

    Results in


    Thinking about it i actually probably want my lights and skirmishers infront of the main line.

    So.
    Added cavalry blocks (notice relativite blocks again, this time the light infantry blocks as i want them to be directly behind)
    I also Moved flanking units forward.
    Code:
     {:name=>"Single Line Standard",
      :priority=>0.9,
      :purpose=>"3 (attack/defend)",
      :min_artillery=>0,
      :min_infantry=>0,
      :min_cavalry=>0,
      :factions=>[],
      :lines=>
       [{:type=>:absolute,
         :priority=>2.0,
         :shape=>"0 (line)",
         :spacing=>2.0,
         :crescent_yoffset=>0.0,
         :x=>0.0,
         :y=>-50.0,
         :min_threshold=>3,
         :max_threshold=>-1,
         :pairs=>[{:priority=>0.05, :unit_class=>"46 (any)"},
         {:priority=>1.0, :unit_class=>"18 (Infantry_Line)"},
         {:priority=>0.1, :unit_class=>"20 (Infantry_Militia)"},     
         {:priority=>0.1, :unit_class=>"21 (Infantry_Mob)"},     
         {:priority=>1.0, :unit_class=>"19 (Infantry_Melee)"},     
         {:priority=>0.2, :unit_class=>"16 (Infantry_Irregulars)"}]},
        {:type=>:relative,
         :priority=>1.0,
         :relative_to=>0,
         :shape=>"0 (line)",
         :spacing=>2.0,
         :crescent_yoffset=>0.0,
         :x=>-5.0,
         :y=>0.0,
         :min_threshold=>3,
         :max_threshold=>5,
         :pairs=>
         [{:priority=>0.05, :unit_class=>"46 (any)"},
         {:priority=>1.0, :unit_class=>"18 (Infantry_Line)"},     
         {:priority=>0.1, :unit_class=>"20 (Infantry_Militia)"}, 
         {:priority=>0.1, :unit_class=>"21 (Infantry_Mob)"},     
         {:priority=>1.0, :unit_class=>"19 (Infantry_Melee)"},     
         {:priority=>0.2, :unit_class=>"16 (Infantry_Irregulars)"}]},
        {:type=>:relative,
         :priority=>1.0,
         :relative_to=>0,
         :shape=>"0 (line)",
         :spacing=>2.0,
         :crescent_yoffset=>0.0,
         :x=>5.0,
         :y=>0.0,
         :min_threshold=>3,
         :max_threshold=>5,
         :pairs=>[{:priority=>1.0, :unit_class=>"14 (infantry_elite)"},
         {:priority=>1.0, :unit_class=>"15 (infantry_grenadiers)"},
         {:priority=>0.5, :unit_class=>"13 (infantry__berserker)"},
         {:priority=>0.5, :unit_class=>"18 (infantry_line)"},
         {:priority=>0.05, :unit_class=>"20 (Infantry_Militia)"},     
         {:priority=>0.05, :unit_class=>"21 (Infantry_Mob)"},     
         {:priority=>0.1, :unit_class=>"19 (Infantry_Melee)"},     
         {:priority=>0.2, :unit_class=>"16 (Infantry_Irregulars)"}]},
        {:type=>:relative,
         :priority=>1.0,
         :relative_to=>1,
         :shape=>"0 (line)",
         :spacing=>10.0,
         :crescent_yoffset=>0.0,
         :x=>-15.0,
         :y=>10.0,
         :min_threshold=>2,
         :max_threshold=>-1,
         :pairs=>[{:priority=>1.0, :unit_class=>"17 (infantry_light)"},
         {:priority=>1.0, :unit_class=>"22 (infantry__skirmisher)"},
         {:priority=>0.5, :unit_class=>"20 (Infantry_Militia)"},     
         {:priority=>0.3, :unit_class=>"21 (Infantry_Mob)"},     
         {:priority=>0.8, :unit_class=>"19 (Infantry_Melee)"},     
         {:priority=>1.0, :unit_class=>"16 (Infantry_Irregulars)"}]},
        {:type=>:relative,
         :priority=>1.0,
         :relative_to=>2,
         :shape=>"0 (line)",
         :spacing=>10.0,
         :crescent_yoffset=>0.0,
         :x=>15.0,
         :y=>10.0,
         :min_threshold=>2,
         :max_threshold=>-1,
         :pairs=>[{:priority=>1.0, :unit_class=>"17 (infantry_light)"},
         {:priority=>1.0, :unit_class=>"22 (infantry__skirmisher)"},
         {:priority=>0.5, :unit_class=>"20 (Infantry_Militia)"},     
         {:priority=>0.3, :unit_class=>"21 (Infantry_Mob)"},     
         {:priority=>0.8, :unit_class=>"19 (Infantry_Melee)"},     
         {:priority=>1.0, :unit_class=>"16 (Infantry_Irregulars)"}]},
        {:type=>:relative,
         :priority=>1.0,
         :relative_to=>3,
         :shape=>"0 (line)",
         :spacing=>10.0,
         :crescent_yoffset=>0.0,
         :x=>0.0,
         :y=>-30.0,
         :min_threshold=>0,
         :max_threshold=>-1,
         :pairs=>[{:priority=>1.0, :unit_class=>"4 (cavalry_camels)"},
         {:priority=>0.9, :unit_class=>"5 (cavalry_heavy)"},
         {:priority=>0.9, :unit_class=>"6 (cavalry_irregular)"},     
         {:priority=>0.9, :unit_class=>"7 (cavalry_lancers)"},     
         {:priority=>0.9, :unit_class=>"8 (cavalry_light)"},
         {:priority=>0.9, :unit_class=>"9 (cavalry_missile)"},     
         {:priority=>0.9, :unit_class=>"10 (dragoons)"}]},
        {:type=>:relative,
         :priority=>1.0,
         :relative_to=>4,
         :shape=>"0 (line)",
         :spacing=>10.0,
         :crescent_yoffset=>0.0,
         :x=>0.0,
         :y=>-30.0,
         :min_threshold=>0,
         :max_threshold=>-1,
         :pairs=>[{:priority=>1.0, :unit_class=>"4 (cavalry_camels)"},
         {:priority=>0.9, :unit_class=>"5 (cavalry_heavy)"},
         {:priority=>0.9, :unit_class=>"6 (cavalry_irregular)"},     
         {:priority=>0.9, :unit_class=>"7 (cavalry_lancers)"},     
         {:priority=>0.9, :unit_class=>"8 (cavalry_light)"},
         {:priority=>0.9, :unit_class=>"9 (cavalry_missile)"},     
         {:priority=>0.9, :unit_class=>"10 (dragoons)"}]},
        {:type=>:relative,
         :priority=>1.0,
         :relative_to=>0,
         :shape=>"0 (line)",
         :spacing=>2.0,
         :crescent_yoffset=>0.0,
         :x=>0.0,
         :y=>-15.0,
         :min_threshold=>0,
         :max_threshold=>-1,
         :pairs=>[{:priority=>2.00, :unit_class=>"46 (any)"}]}]},


    Right that works well, but cavalry spacing could use an increase.

    Now for artillery and their cavalry guard units.

    Code:
     {:name=>"Single Line Standard",
      :priority=>0.9,
      :purpose=>"3 (attack/defend)",
      :min_artillery=>0,
      :min_infantry=>0,
      :min_cavalry=>0,
      :factions=>[],
      :lines=>
       [{:type=>:absolute,
         :priority=>2.0,
         :shape=>"0 (line)",
         :spacing=>2.0,
         :crescent_yoffset=>0.0,
         :x=>0.0,
         :y=>-50.0,
         :min_threshold=>3,
         :max_threshold=>-1,
         :pairs=>[{:priority=>0.05, :unit_class=>"46 (any)"},
         {:priority=>1.0, :unit_class=>"18 (Infantry_Line)"},
         {:priority=>0.1, :unit_class=>"20 (Infantry_Militia)"},     
         {:priority=>0.1, :unit_class=>"21 (Infantry_Mob)"},     
         {:priority=>1.0, :unit_class=>"19 (Infantry_Melee)"},     
         {:priority=>0.2, :unit_class=>"16 (Infantry_Irregulars)"}]},
        {:type=>:relative,
         :priority=>1.0,
         :relative_to=>0,
         :shape=>"0 (line)",
         :spacing=>2.0,
         :crescent_yoffset=>0.0,
         :x=>-5.0,
         :y=>0.0,
         :min_threshold=>3,
         :max_threshold=>5,
         :pairs=>
         [{:priority=>0.05, :unit_class=>"46 (any)"},
         {:priority=>1.0, :unit_class=>"18 (Infantry_Line)"},     
         {:priority=>0.1, :unit_class=>"20 (Infantry_Militia)"}, 
         {:priority=>0.1, :unit_class=>"21 (Infantry_Mob)"},     
         {:priority=>1.0, :unit_class=>"19 (Infantry_Melee)"},     
         {:priority=>0.2, :unit_class=>"16 (Infantry_Irregulars)"}]},
        {:type=>:relative,
         :priority=>1.0,
         :relative_to=>0,
         :shape=>"0 (line)",
         :spacing=>2.0,
         :crescent_yoffset=>0.0,
         :x=>5.0,
         :y=>0.0,
         :min_threshold=>3,
         :max_threshold=>5,
         :pairs=>[{:priority=>1.0, :unit_class=>"14 (infantry_elite)"},
         {:priority=>1.0, :unit_class=>"15 (infantry_grenadiers)"},
         {:priority=>0.5, :unit_class=>"13 (infantry__berserker)"},
         {:priority=>0.5, :unit_class=>"18 (infantry_line)"},
         {:priority=>0.05, :unit_class=>"20 (Infantry_Militia)"},     
         {:priority=>0.05, :unit_class=>"21 (Infantry_Mob)"},     
         {:priority=>0.1, :unit_class=>"19 (Infantry_Melee)"},     
         {:priority=>0.2, :unit_class=>"16 (Infantry_Irregulars)"}]},
        {:type=>:relative,
         :priority=>1.0,
         :relative_to=>1,
         :shape=>"0 (line)",
         :spacing=>10.0,
         :crescent_yoffset=>0.0,
         :x=>-15.0,
         :y=>10.0,
         :min_threshold=>2,
         :max_threshold=>-1,
         :pairs=>[{:priority=>1.0, :unit_class=>"17 (infantry_light)"},
         {:priority=>1.0, :unit_class=>"22 (infantry__skirmisher)"},
         {:priority=>0.5, :unit_class=>"20 (Infantry_Militia)"},     
         {:priority=>0.3, :unit_class=>"21 (Infantry_Mob)"},     
         {:priority=>0.8, :unit_class=>"19 (Infantry_Melee)"},     
         {:priority=>1.0, :unit_class=>"16 (Infantry_Irregulars)"}]},
        {:type=>:relative,
         :priority=>0.9,
         :relative_to=>2,
         :shape=>"0 (line)",
         :spacing=>10.0,
         :crescent_yoffset=>0.0,
         :x=>15.0,
         :y=>10.0,
         :min_threshold=>2,
         :max_threshold=>-1,
         :pairs=>[{:priority=>1.0, :unit_class=>"17 (infantry_light)"},
         {:priority=>1.0, :unit_class=>"22 (infantry__skirmisher)"},
         {:priority=>0.5, :unit_class=>"20 (Infantry_Militia)"},     
         {:priority=>0.3, :unit_class=>"21 (Infantry_Mob)"},     
         {:priority=>0.8, :unit_class=>"19 (Infantry_Melee)"},     
         {:priority=>1.0, :unit_class=>"16 (Infantry_Irregulars)"}]},
        {:type=>:relative,
         :priority=>0.9,
         :relative_to=>3,
         :shape=>"0 (line)",
         :spacing=>30.0,
         :crescent_yoffset=>0.0,
         :x=>0.0,
         :y=>-30.0,
         :min_threshold=>0,
         :max_threshold=>-1,
         :pairs=>[{:priority=>1.0, :unit_class=>"4 (cavalry_camels)"},
         {:priority=>0.9, :unit_class=>"5 (cavalry_heavy)"},
         {:priority=>0.9, :unit_class=>"6 (cavalry_irregular)"},     
         {:priority=>0.9, :unit_class=>"7 (cavalry_lancers)"},     
         {:priority=>0.9, :unit_class=>"8 (cavalry_light)"},
         {:priority=>0.9, :unit_class=>"9 (cavalry_missile)"},     
         {:priority=>0.9, :unit_class=>"10 (dragoons)"}]},
        {:type=>:relative,
         :priority=>1.0,
         :relative_to=>4,
         :shape=>"0 (line)",
         :spacing=>30.0,
         :crescent_yoffset=>0.0,
         :x=>0.0,
         :y=>-30.0,
         :min_threshold=>0,
         :max_threshold=>-1,
         :pairs=>[{:priority=>1.0, :unit_class=>"4 (cavalry_camels)"},
         {:priority=>0.9, :unit_class=>"5 (cavalry_heavy)"},
         {:priority=>0.9, :unit_class=>"6 (cavalry_irregular)"},     
         {:priority=>0.9, :unit_class=>"7 (cavalry_lancers)"},     
         {:priority=>0.9, :unit_class=>"8 (cavalry_light)"},
         {:priority=>0.9, :unit_class=>"9 (cavalry_missile)"},     
         {:priority=>0.9, :unit_class=>"10 (dragoons)"}]},
        {:type=>:relative,
         :priority=>1.0,
         :relative_to=>0,
         :shape=>"0 (line)",
         :spacing=>30.0,
         :crescent_yoffset=>0.0,
         :x=>0.0,
         :y=>-90.0,
         :min_threshold=>0,
         :max_threshold=>-1,
         :pairs=>[{:priority=>1.0, :unit_class=>"0 (artillery_foot)"},
         {:priority=>0.9, :unit_class=>"1 (artillery_fixed)"},     
         {:priority=>0.9, :unit_class=>"2 (artillery_horse)"}]},
        {:type=>:relative,
         :priority=>1.0,
         :relative_to=>7,
         :shape=>"0 (line)",
         :spacing=>30.0,
         :crescent_yoffset=>0.0,
         :x=>0.0,
         :y=>-90.0,
         :min_threshold=>0,
         :max_threshold=>-1,
         :pairs=>[{:priority=>1.0, :unit_class=>"0 (artillery_foot)"},
         {:priority=>0.9, :unit_class=>"1 (artillery_fixed)"},     
         {:priority=>0.9, :unit_class=>"2 (artillery_horse)"}]},
        {:type=>:relative,
         :priority=>0.1,
         :relative_to=>0,
         :shape=>"0 (line)",
         :spacing=>20.0,
         :crescent_yoffset=>0.0,
         :x=>0.0,
         :y=>-40.0,
         :min_threshold=>0,
         :max_threshold=>-1,
         :pairs=>[{:priority=>2.00, :unit_class=>"46 (any)"}]}]},
    Notice the artillery are a long way back, this is for tgw remember. They are also relative to block 0 as i want them to be central.

    The cavalry are behind the artillery (relative to the artillery block (7)) and have a higher priority than those on the flanks to ensure they appear, guarding the guns and general is more important than flanking.

    Results in


    Right so the arty isnt far enough back. i would also like to put the general inbetween the artillery and main line.

    Code:
         {:name=>"Single Line Standard",
      :priority=>0.9,
      :purpose=>"3 (attack/defend)",
      :min_artillery=>0,
      :min_infantry=>0,
      :min_cavalry=>0,
      :factions=>[],
      :lines=>
       [{:type=>:absolute,
         :priority=>2.0,
         :shape=>"0 (line)",
         :spacing=>2.0,
         :crescent_yoffset=>0.0,
         :x=>0.0,
         :y=>-50.0,
         :min_threshold=>3,
         :max_threshold=>-1,
         :pairs=>[{:priority=>0.05, :unit_class=>"46 (any)"},
         {:priority=>1.0, :unit_class=>"18 (Infantry_Line)"},
         {:priority=>0.1, :unit_class=>"20 (Infantry_Militia)"},     
         {:priority=>0.1, :unit_class=>"21 (Infantry_Mob)"},     
         {:priority=>1.0, :unit_class=>"19 (Infantry_Melee)"},     
         {:priority=>0.2, :unit_class=>"16 (Infantry_Irregulars)"}]},
        {:type=>:relative,
         :priority=>1.0,
         :relative_to=>0,
         :shape=>"0 (line)",
         :spacing=>2.0,
         :crescent_yoffset=>0.0,
         :x=>-5.0,
         :y=>0.0,
         :min_threshold=>3,
         :max_threshold=>5,
         :pairs=>
         [{:priority=>0.05, :unit_class=>"46 (any)"},
         {:priority=>1.0, :unit_class=>"18 (Infantry_Line)"},     
         {:priority=>0.1, :unit_class=>"20 (Infantry_Militia)"}, 
         {:priority=>0.1, :unit_class=>"21 (Infantry_Mob)"},     
         {:priority=>1.0, :unit_class=>"19 (Infantry_Melee)"},     
         {:priority=>0.2, :unit_class=>"16 (Infantry_Irregulars)"}]},
        {:type=>:relative,
         :priority=>1.0,
         :relative_to=>0,
         :shape=>"0 (line)",
         :spacing=>2.0,
         :crescent_yoffset=>0.0,
         :x=>5.0,
         :y=>0.0,
         :min_threshold=>3,
         :max_threshold=>5,
         :pairs=>[{:priority=>1.0, :unit_class=>"14 (infantry_elite)"},
         {:priority=>1.0, :unit_class=>"15 (infantry_grenadiers)"},
         {:priority=>0.5, :unit_class=>"13 (infantry__berserker)"},
         {:priority=>0.5, :unit_class=>"18 (infantry_line)"},
         {:priority=>0.05, :unit_class=>"20 (Infantry_Militia)"},     
         {:priority=>0.05, :unit_class=>"21 (Infantry_Mob)"},     
         {:priority=>0.1, :unit_class=>"19 (Infantry_Melee)"},     
         {:priority=>0.2, :unit_class=>"16 (Infantry_Irregulars)"}]},
        {:type=>:relative,
         :priority=>1.0,
         :relative_to=>1,
         :shape=>"0 (line)",
         :spacing=>10.0,
         :crescent_yoffset=>0.0,
         :x=>-15.0,
         :y=>10.0,
         :min_threshold=>2,
         :max_threshold=>-1,
         :pairs=>[{:priority=>1.0, :unit_class=>"17 (infantry_light)"},
         {:priority=>1.0, :unit_class=>"22 (infantry__skirmisher)"},
         {:priority=>0.5, :unit_class=>"20 (Infantry_Militia)"},     
         {:priority=>0.3, :unit_class=>"21 (Infantry_Mob)"},     
         {:priority=>0.8, :unit_class=>"19 (Infantry_Melee)"},     
         {:priority=>1.0, :unit_class=>"16 (Infantry_Irregulars)"}]},
        {:type=>:relative,
         :priority=>1.0,
         :relative_to=>2,
         :shape=>"0 (line)",
         :spacing=>10.0,
         :crescent_yoffset=>0.0,
         :x=>15.0,
         :y=>10.0,
         :min_threshold=>2,
         :max_threshold=>-1,
         :pairs=>[{:priority=>1.0, :unit_class=>"17 (infantry_light)"},
         {:priority=>1.0, :unit_class=>"22 (infantry__skirmisher)"},
         {:priority=>0.5, :unit_class=>"20 (Infantry_Militia)"},     
         {:priority=>0.3, :unit_class=>"21 (Infantry_Mob)"},     
         {:priority=>0.8, :unit_class=>"19 (Infantry_Melee)"},     
         {:priority=>1.0, :unit_class=>"16 (Infantry_Irregulars)"}]},
        {:type=>:relative,
         :priority=>1.0,
         :relative_to=>3,
         :shape=>"0 (line)",
         :spacing=>30.0,
         :crescent_yoffset=>0.0,
         :x=>0.0,
         :y=>-30.0,
         :min_threshold=>0,
         :max_threshold=>-1,
         :pairs=>[{:priority=>1.0, :unit_class=>"4 (cavalry_camels)"},
         {:priority=>0.9, :unit_class=>"5 (cavalry_heavy)"},
         {:priority=>0.9, :unit_class=>"6 (cavalry_irregular)"},     
         {:priority=>0.9, :unit_class=>"7 (cavalry_lancers)"},     
         {:priority=>0.9, :unit_class=>"8 (cavalry_light)"},
         {:priority=>0.9, :unit_class=>"9 (cavalry_missile)"},     
         {:priority=>0.9, :unit_class=>"10 (dragoons)"}]},
        {:type=>:relative,
         :priority=>1.0,
         :relative_to=>4,
         :shape=>"0 (line)",
         :spacing=>30.0,
         :crescent_yoffset=>0.0,
         :x=>0.0,
         :y=>-30.0,
         :min_threshold=>0,
         :max_threshold=>-1,
         :pairs=>[{:priority=>1.0, :unit_class=>"4 (cavalry_camels)"},
         {:priority=>0.9, :unit_class=>"5 (cavalry_heavy)"},
         {:priority=>0.9, :unit_class=>"6 (cavalry_irregular)"},     
         {:priority=>0.9, :unit_class=>"7 (cavalry_lancers)"},     
         {:priority=>0.9, :unit_class=>"8 (cavalry_light)"},
         {:priority=>0.9, :unit_class=>"9 (cavalry_missile)"},     
         {:priority=>0.9, :unit_class=>"10 (dragoons)"}]},
        {:type=>:relative,
         :priority=>1.0,
         :relative_to=>0,
         :shape=>"0 (line)",
         :spacing=>30.0,
         :crescent_yoffset=>0.0,
         :x=>0.0,
         :y=>-90.0,
         :min_threshold=>0,
         :max_threshold=>-1,
         :pairs=>[{:priority=>1.0, :unit_class=>"0 (artillery_foot)"},
         {:priority=>0.9, :unit_class=>"1 (artillery_fixed)"},     
         {:priority=>0.9, :unit_class=>"2 (artillery_horse)"}]},
        {:type=>:relative,
         :priority=>1.0,
         :relative_to=>7,
         :shape=>"0 (line)",
         :spacing=>60.0,
         :crescent_yoffset=>0.0,
         :x=>0.0,
         :y=>-15.0,
         :min_threshold=>0,
         :max_threshold=>2,
         :pairs=>[{:priority=>1.0, :unit_class=>"4 (cavalry_camels)"},
         {:priority=>1.0, :unit_class=>"5 (cavalry_heavy)"},
         {:priority=>1.0, :unit_class=>"6 (cavalry_irregular)"},     
         {:priority=>1.0, :unit_class=>"7 (cavalry_lancers)"},     
         {:priority=>1.0, :unit_class=>"8 (cavalry_light)"},
         {:priority=>1.0, :unit_class=>"9 (cavalry_missile)"},     
         {:priority=>1.0, :unit_class=>"10 (dragoons)"}]},
        {:type=>:relative,
         :priority=>1.0,
         :relative_to=>7,
         :shape=>"0 (line)",
         :spacing=>0.0,
         :crescent_yoffset=>0.0,
         :x=>0.0,
         :y=>45.0,
         :min_threshold=>0,
         :max_threshold=>-1,
         :pairs=>[{:priority=>1.0, :unit_class=>"12 (general)"}]},
        {:type=>:relative,
         :priority=>0.1,
         :relative_to=>0,
         :shape=>"0 (line)",
         :spacing=>20.0,
         :crescent_yoffset=>0.0,
         :x=>0.0,
         :y=>-40.0,
         :min_threshold=>0,
         :max_threshold=>-1,
         :pairs=>[{:priority=>2.00, :unit_class=>"46 (any)"}]}]},
    So the generalss go his own block (swish) the overflow block is still present however incase of any odities ingame requiring a spot (elephants that randomly appear or somthing), this should help avoid ctd's.

    Results in.


    Right we are almost there, all we need now is the sheilding units infront of the main line. I shall do these (hopefully) in three blocks to allow for manouverbility.
    Code:
     {:name=>"Single Line Standard",
      :priority=>0.9,
      :purpose=>"3 (attack/defend)",
      :min_artillery=>0,
      :min_infantry=>0,
      :min_cavalry=>0,
      :factions=>[],
      :lines=>
       [{:type=>:absolute,
         :priority=>2.0,
         :shape=>"0 (line)",
         :spacing=>2.0,
         :crescent_yoffset=>0.0,
         :x=>0.0,
         :y=>-50.0,
         :min_threshold=>3,
         :max_threshold=>-1,
         :pairs=>[{:priority=>0.05, :unit_class=>"46 (any)"},
         {:priority=>1.0, :unit_class=>"18 (Infantry_Line)"},
         {:priority=>0.1, :unit_class=>"20 (Infantry_Militia)"},     
         {:priority=>0.1, :unit_class=>"21 (Infantry_Mob)"},     
         {:priority=>1.0, :unit_class=>"19 (Infantry_Melee)"},     
         {:priority=>0.2, :unit_class=>"16 (Infantry_Irregulars)"}]},
        {:type=>:relative,
         :priority=>1.0,
         :relative_to=>0,
         :shape=>"0 (line)",
         :spacing=>2.0,
         :crescent_yoffset=>0.0,
         :x=>-5.0,
         :y=>0.0,
         :min_threshold=>3,
         :max_threshold=>5,
         :pairs=>
         [{:priority=>0.05, :unit_class=>"46 (any)"},
         {:priority=>1.0, :unit_class=>"18 (Infantry_Line)"},     
         {:priority=>0.1, :unit_class=>"20 (Infantry_Militia)"}, 
         {:priority=>0.1, :unit_class=>"21 (Infantry_Mob)"},     
         {:priority=>1.0, :unit_class=>"19 (Infantry_Melee)"},     
         {:priority=>0.2, :unit_class=>"16 (Infantry_Irregulars)"}]},
        {:type=>:relative,
         :priority=>1.0,
         :relative_to=>0,
         :shape=>"0 (line)",
         :spacing=>2.0,
         :crescent_yoffset=>0.0,
         :x=>5.0,
         :y=>0.0,
         :min_threshold=>3,
         :max_threshold=>5,
         :pairs=>[{:priority=>1.0, :unit_class=>"14 (infantry_elite)"},
         {:priority=>1.0, :unit_class=>"15 (infantry_grenadiers)"},
         {:priority=>0.5, :unit_class=>"13 (infantry__berserker)"},
         {:priority=>0.5, :unit_class=>"18 (infantry_line)"},
         {:priority=>0.05, :unit_class=>"20 (Infantry_Militia)"},     
         {:priority=>0.05, :unit_class=>"21 (Infantry_Mob)"},     
         {:priority=>0.1, :unit_class=>"19 (Infantry_Melee)"},     
         {:priority=>0.05, :unit_class=>"46 (any)"},
         {:priority=>0.2, :unit_class=>"16 (Infantry_Irregulars)"}]},
        {:type=>:relative,
         :priority=>1.0,
         :relative_to=>1,
         :shape=>"0 (line)",
         :spacing=>10.0,
         :crescent_yoffset=>0.0,
         :x=>-15.0,
         :y=>10.0,
         :min_threshold=>2,
         :max_threshold=>-1,
         :pairs=>[{:priority=>1.0, :unit_class=>"17 (infantry_light)"},
         {:priority=>1.0, :unit_class=>"22 (infantry__skirmisher)"},
         {:priority=>0.5, :unit_class=>"20 (Infantry_Militia)"},     
         {:priority=>0.3, :unit_class=>"21 (Infantry_Mob)"},     
         {:priority=>0.8, :unit_class=>"19 (Infantry_Melee)"},     
         {:priority=>0.05, :unit_class=>"46 (any)"},
         {:priority=>1.0, :unit_class=>"16 (Infantry_Irregulars)"}]},
        {:type=>:relative,
         :priority=>1.0,
         :relative_to=>2,
         :shape=>"0 (line)",
         :spacing=>10.0,
         :crescent_yoffset=>0.0,
         :x=>15.0,
         :y=>10.0,
         :min_threshold=>2,
         :max_threshold=>-1,
         :pairs=>[{:priority=>1.0, :unit_class=>"17 (infantry_light)"},
         {:priority=>1.0, :unit_class=>"22 (infantry__skirmisher)"},
         {:priority=>0.5, :unit_class=>"20 (Infantry_Militia)"},     
         {:priority=>0.3, :unit_class=>"21 (Infantry_Mob)"},     
         {:priority=>0.8, :unit_class=>"19 (Infantry_Melee)"},    
         {:priority=>0.05, :unit_class=>"46 (any)"},     
         {:priority=>1.0, :unit_class=>"16 (Infantry_Irregulars)"}]},
        {:type=>:relative,
         :priority=>1.0,
         :relative_to=>3,
         :shape=>"0 (line)",
         :spacing=>30.0,
         :crescent_yoffset=>0.0,
         :x=>0.0,
         :y=>-30.0,
         :min_threshold=>0,
         :max_threshold=>-1,
         :pairs=>[{:priority=>1.0, :unit_class=>"4 (cavalry_camels)"},
         {:priority=>0.9, :unit_class=>"5 (cavalry_heavy)"},
         {:priority=>0.9, :unit_class=>"6 (cavalry_irregular)"},     
         {:priority=>0.9, :unit_class=>"7 (cavalry_lancers)"},     
         {:priority=>0.9, :unit_class=>"8 (cavalry_light)"},
         {:priority=>0.9, :unit_class=>"9 (cavalry_missile)"},     
         {:priority=>0.9, :unit_class=>"10 (dragoons)"}]},
        {:type=>:relative,
         :priority=>1.0,
         :relative_to=>4,
         :shape=>"0 (line)",
         :spacing=>30.0,
         :crescent_yoffset=>0.0,
         :x=>0.0,
         :y=>-30.0,
         :min_threshold=>0,
         :max_threshold=>-1,
         :pairs=>[{:priority=>1.0, :unit_class=>"4 (cavalry_camels)"},
         {:priority=>0.9, :unit_class=>"5 (cavalry_heavy)"},
         {:priority=>0.9, :unit_class=>"6 (cavalry_irregular)"},     
         {:priority=>0.9, :unit_class=>"7 (cavalry_lancers)"},     
         {:priority=>0.9, :unit_class=>"8 (cavalry_light)"},
         {:priority=>0.9, :unit_class=>"9 (cavalry_missile)"},     
         {:priority=>0.9, :unit_class=>"10 (dragoons)"}]},
        {:type=>:relative,
         :priority=>1.0,
         :relative_to=>0,
         :shape=>"0 (line)",
         :spacing=>30.0,
         :crescent_yoffset=>0.0,
         :x=>0.0,
         :y=>-90.0,
         :min_threshold=>0,
         :max_threshold=>-1,
         :pairs=>[{:priority=>1.0, :unit_class=>"0 (artillery_foot)"},
         {:priority=>0.9, :unit_class=>"1 (artillery_fixed)"},     
         {:priority=>0.9, :unit_class=>"2 (artillery_horse)"}]},
        {:type=>:relative,
         :priority=>1.0,
         :relative_to=>7,
         :shape=>"0 (line)",
         :spacing=>60.0,
         :crescent_yoffset=>0.0,
         :x=>0.0,
         :y=>-15.0,
         :min_threshold=>0,
         :max_threshold=>2,
         :pairs=>[{:priority=>1.0, :unit_class=>"4 (cavalry_camels)"},
         {:priority=>1.0, :unit_class=>"5 (cavalry_heavy)"},
         {:priority=>1.0, :unit_class=>"6 (cavalry_irregular)"},     
         {:priority=>1.0, :unit_class=>"7 (cavalry_lancers)"},     
         {:priority=>1.0, :unit_class=>"8 (cavalry_light)"},
         {:priority=>1.0, :unit_class=>"9 (cavalry_missile)"},     
         {:priority=>1.0, :unit_class=>"10 (dragoons)"}]},
        {:type=>:relative,
         :priority=>1.0,
         :relative_to=>7,
         :shape=>"0 (line)",
         :spacing=>0.0,
         :crescent_yoffset=>0.0,
         :x=>0.0,
         :y=>45.0,
         :min_threshold=>0,
         :max_threshold=>-1,
         :pairs=>[{:priority=>1.0, :unit_class=>"12 (general)"}]},
        {:type=>:relative,
         :priority=>1.0,
         :relative_to=>0,
         :shape=>"0 (line)",
         :spacing=>40.0,
         :crescent_yoffset=>0.0,
         :x=>0.0,
         :y=>30.0,
         :min_threshold=>0,
         :max_threshold=>2,
         :pairs=>[{:priority=>0.9, :unit_class=>"17 (infantry_light)"},
         {:priority=>0.3, :unit_class=>"22 (infantry__skirmisher)"},
         {:priority=>1.0, :unit_class=>"20 (Infantry_Militia)"},     
         {:priority=>1.0, :unit_class=>"21 (Infantry_Mob)"},     
         {:priority=>1.0, :unit_class=>"19 (Infantry_Melee)"},     
         {:priority=>1.0, :unit_class=>"16 (Infantry_Irregulars)"}]},
        {:type=>:relative,
         :priority=>1.0,
         :relative_to=>1,
         :shape=>"0 (line)",
         :spacing=>10.0,
         :crescent_yoffset=>0.0,
         :x=>0.0,
         :y=>30.0,
         :min_threshold=>0,
         :max_threshold=>1,
         :pairs=>[{:priority=>0.9, :unit_class=>"17 (infantry_light)"},
         {:priority=>0.3, :unit_class=>"22 (infantry__skirmisher)"},
         {:priority=>1.0, :unit_class=>"20 (Infantry_Militia)"},     
         {:priority=>1.0, :unit_class=>"21 (Infantry_Mob)"},     
         {:priority=>1.0, :unit_class=>"19 (Infantry_Melee)"},     
         {:priority=>1.0, :unit_class=>"16 (Infantry_Irregulars)"}]},
        {:type=>:relative,
         :priority=>1.0,
         :relative_to=>2,
         :shape=>"0 (line)",
         :spacing=>10.0,
         :crescent_yoffset=>0.0,
         :x=>0.0,
         :y=>30.0,
         :min_threshold=>0,
         :max_threshold=>1,
         :pairs=>[{:priority=>0.9, :unit_class=>"17 (infantry_light)"},
         {:priority=>0.3, :unit_class=>"22 (infantry__skirmisher)"},
         {:priority=>1.0, :unit_class=>"20 (Infantry_Militia)"},     
         {:priority=>1.0, :unit_class=>"21 (Infantry_Mob)"},     
         {:priority=>1.0, :unit_class=>"19 (Infantry_Melee)"},     
         {:priority=>1.0, :unit_class=>"16 (Infantry_Irregulars)"}]},
        {:type=>:relative,
         :priority=>0.1,
         :relative_to=>0,
         :shape=>"0 (line)",
         :spacing=>20.0,
         :crescent_yoffset=>0.0,
         :x=>0.0,
         :y=>-40.0,
         :min_threshold=>0,
         :max_threshold=>-1,
         :pairs=>[{:priority=>2.00, :unit_class=>"46 (any)"}]}]},
    So three blocks, one relative to each of the main blocks, 40 units forward of each. Notice the center block has a max threshold of two while the side blocks have a max threshold of 1, ie max four units are sacrificed (so utalititarian). Also note i have added a low value "any" to any blocks with a minimum threshold to avoid ctds if these blocks cannot be filled.

    Results in:


    Seems some miltia prioities are wrong, they prefer to appear on the flanks, this is easily fixed by reducing overzelous minimum unit requirements (as noted earlier in this tutorial).

    Code:
     {:name=>"Single Line Standard",
      :priority=>0.9,
      :purpose=>"3 (attack/defend)",
      :min_artillery=>0,
      :min_infantry=>0,
      :min_cavalry=>0,
      :factions=>[],
      :lines=>
       [{:type=>:absolute,
         :priority=>2.0,
         :shape=>"0 (line)",
         :spacing=>2.0,
         :crescent_yoffset=>0.0,
         :x=>0.0,
         :y=>-50.0,
         :min_threshold=>3,
         :max_threshold=>-1,
         :pairs=>[{:priority=>0.05, :unit_class=>"46 (any)"},
         {:priority=>1.0, :unit_class=>"18 (Infantry_Line)"},
         {:priority=>0.1, :unit_class=>"20 (Infantry_Militia)"},     
         {:priority=>0.1, :unit_class=>"21 (Infantry_Mob)"},     
         {:priority=>1.0, :unit_class=>"19 (Infantry_Melee)"},     
         {:priority=>0.2, :unit_class=>"16 (Infantry_Irregulars)"}]},
        {:type=>:relative,
         :priority=>1.0,
         :relative_to=>0,
         :shape=>"0 (line)",
         :spacing=>2.0,
         :crescent_yoffset=>0.0,
         :x=>-5.0,
         :y=>0.0,
         :min_threshold=>2,
         :max_threshold=>5,
         :pairs=>
         [{:priority=>0.05, :unit_class=>"46 (any)"},
         {:priority=>1.0, :unit_class=>"18 (Infantry_Line)"},     
         {:priority=>0.1, :unit_class=>"20 (Infantry_Militia)"}, 
         {:priority=>0.1, :unit_class=>"21 (Infantry_Mob)"},     
         {:priority=>1.0, :unit_class=>"19 (Infantry_Melee)"},     
         {:priority=>0.2, :unit_class=>"16 (Infantry_Irregulars)"}]},
        {:type=>:relative,
         :priority=>1.0,
         :relative_to=>0,
         :shape=>"0 (line)",
         :spacing=>2.0,
         :crescent_yoffset=>0.0,
         :x=>5.0,
         :y=>0.0,
         :min_threshold=>2,
         :max_threshold=>5,
         :pairs=>[{:priority=>1.0, :unit_class=>"14 (infantry_elite)"},
         {:priority=>1.0, :unit_class=>"15 (infantry_grenadiers)"},
         {:priority=>0.5, :unit_class=>"13 (infantry__berserker)"},
         {:priority=>0.5, :unit_class=>"18 (infantry_line)"},
         {:priority=>0.05, :unit_class=>"20 (Infantry_Militia)"},     
         {:priority=>0.05, :unit_class=>"21 (Infantry_Mob)"},     
         {:priority=>0.1, :unit_class=>"19 (Infantry_Melee)"},     
         {:priority=>0.05, :unit_class=>"46 (any)"},
         {:priority=>0.2, :unit_class=>"16 (Infantry_Irregulars)"}]},
        {:type=>:relative,
         :priority=>1.0,
         :relative_to=>1,
         :shape=>"0 (line)",
         :spacing=>10.0,
         :crescent_yoffset=>0.0,
         :x=>-15.0,
         :y=>10.0,
         :min_threshold=>1,
         :max_threshold=>-1,
         :pairs=>[{:priority=>1.0, :unit_class=>"17 (infantry_light)"},
         {:priority=>1.0, :unit_class=>"22 (infantry__skirmisher)"},
         {:priority=>0.5, :unit_class=>"20 (Infantry_Militia)"},     
         {:priority=>0.3, :unit_class=>"21 (Infantry_Mob)"},     
         {:priority=>0.8, :unit_class=>"19 (Infantry_Melee)"},     
         {:priority=>0.05, :unit_class=>"46 (any)"},
         {:priority=>1.0, :unit_class=>"16 (Infantry_Irregulars)"}]},
        {:type=>:relative,
         :priority=>1.0,
         :relative_to=>2,
         :shape=>"0 (line)",
         :spacing=>10.0,
         :crescent_yoffset=>0.0,
         :x=>15.0,
         :y=>10.0,
         :min_threshold=>1,
         :max_threshold=>-1,
         :pairs=>[{:priority=>1.0, :unit_class=>"17 (infantry_light)"},
         {:priority=>1.0, :unit_class=>"22 (infantry__skirmisher)"},
         {:priority=>0.5, :unit_class=>"20 (Infantry_Militia)"},     
         {:priority=>0.3, :unit_class=>"21 (Infantry_Mob)"},     
         {:priority=>0.8, :unit_class=>"19 (Infantry_Melee)"},    
         {:priority=>0.05, :unit_class=>"46 (any)"},     
         {:priority=>1.0, :unit_class=>"16 (Infantry_Irregulars)"}]},
        {:type=>:relative,
         :priority=>1.0,
         :relative_to=>3,
         :shape=>"0 (line)",
         :spacing=>30.0,
         :crescent_yoffset=>0.0,
         :x=>0.0,
         :y=>-30.0,
         :min_threshold=>0,
         :max_threshold=>-1,
         :pairs=>[{:priority=>1.0, :unit_class=>"4 (cavalry_camels)"},
         {:priority=>0.9, :unit_class=>"5 (cavalry_heavy)"},
         {:priority=>0.9, :unit_class=>"6 (cavalry_irregular)"},     
         {:priority=>0.9, :unit_class=>"7 (cavalry_lancers)"},     
         {:priority=>0.9, :unit_class=>"8 (cavalry_light)"},
         {:priority=>0.9, :unit_class=>"9 (cavalry_missile)"},     
         {:priority=>0.9, :unit_class=>"10 (dragoons)"}]},
        {:type=>:relative,
         :priority=>1.0,
         :relative_to=>4,
         :shape=>"0 (line)",
         :spacing=>30.0,
         :crescent_yoffset=>0.0,
         :x=>0.0,
         :y=>-30.0,
         :min_threshold=>0,
         :max_threshold=>-1,
         :pairs=>[{:priority=>1.0, :unit_class=>"4 (cavalry_camels)"},
         {:priority=>0.9, :unit_class=>"5 (cavalry_heavy)"},
         {:priority=>0.9, :unit_class=>"6 (cavalry_irregular)"},     
         {:priority=>0.9, :unit_class=>"7 (cavalry_lancers)"},     
         {:priority=>0.9, :unit_class=>"8 (cavalry_light)"},
         {:priority=>0.9, :unit_class=>"9 (cavalry_missile)"},     
         {:priority=>0.9, :unit_class=>"10 (dragoons)"}]},
        {:type=>:relative,
         :priority=>1.0,
         :relative_to=>0,
         :shape=>"0 (line)",
         :spacing=>30.0,
         :crescent_yoffset=>0.0,
         :x=>0.0,
         :y=>-90.0,
         :min_threshold=>0,
         :max_threshold=>-1,
         :pairs=>[{:priority=>1.0, :unit_class=>"0 (artillery_foot)"},
         {:priority=>0.9, :unit_class=>"1 (artillery_fixed)"},     
         {:priority=>0.9, :unit_class=>"2 (artillery_horse)"}]},
        {:type=>:relative,
         :priority=>1.0,
         :relative_to=>7,
         :shape=>"0 (line)",
         :spacing=>60.0,
         :crescent_yoffset=>0.0,
         :x=>0.0,
         :y=>-15.0,
         :min_threshold=>0,
         :max_threshold=>2,
         :pairs=>[{:priority=>1.0, :unit_class=>"4 (cavalry_camels)"},
         {:priority=>1.0, :unit_class=>"5 (cavalry_heavy)"},
         {:priority=>1.0, :unit_class=>"6 (cavalry_irregular)"},     
         {:priority=>1.0, :unit_class=>"7 (cavalry_lancers)"},     
         {:priority=>1.0, :unit_class=>"8 (cavalry_light)"},
         {:priority=>1.0, :unit_class=>"9 (cavalry_missile)"},     
         {:priority=>1.0, :unit_class=>"10 (dragoons)"}]},
        {:type=>:relative,
         :priority=>1.0,
         :relative_to=>7,
         :shape=>"0 (line)",
         :spacing=>0.0,
         :crescent_yoffset=>0.0,
         :x=>0.0,
         :y=>45.0,
         :min_threshold=>0,
         :max_threshold=>-1,
         :pairs=>[{:priority=>1.0, :unit_class=>"12 (general)"}]},
        {:type=>:relative,
         :priority=>1.0,
         :relative_to=>0,
         :shape=>"0 (line)",
         :spacing=>40.0,
         :crescent_yoffset=>0.0,
         :x=>0.0,
         :y=>30.0,
         :min_threshold=>0,
         :max_threshold=>2,
         :pairs=>[{:priority=>0.9, :unit_class=>"17 (infantry_light)"},
         {:priority=>0.3, :unit_class=>"22 (infantry__skirmisher)"},
         {:priority=>1.0, :unit_class=>"20 (Infantry_Militia)"},     
         {:priority=>1.0, :unit_class=>"21 (Infantry_Mob)"},     
         {:priority=>1.0, :unit_class=>"19 (Infantry_Melee)"},     
         {:priority=>1.0, :unit_class=>"16 (Infantry_Irregulars)"}]},
        {:type=>:relative,
         :priority=>1.0,
         :relative_to=>1,
         :shape=>"0 (line)",
         :spacing=>10.0,
         :crescent_yoffset=>0.0,
         :x=>0.0,
         :y=>30.0,
         :min_threshold=>0,
         :max_threshold=>1,
         :pairs=>[{:priority=>0.9, :unit_class=>"17 (infantry_light)"},
         {:priority=>0.3, :unit_class=>"22 (infantry__skirmisher)"},
         {:priority=>1.0, :unit_class=>"20 (Infantry_Militia)"},     
         {:priority=>1.0, :unit_class=>"21 (Infantry_Mob)"},     
         {:priority=>1.0, :unit_class=>"19 (Infantry_Melee)"},     
         {:priority=>1.0, :unit_class=>"16 (Infantry_Irregulars)"}]},
        {:type=>:relative,
         :priority=>1.0,
         :relative_to=>2,
         :shape=>"0 (line)",
         :spacing=>10.0,
         :crescent_yoffset=>0.0,
         :x=>0.0,
         :y=>30.0,
         :min_threshold=>0,
         :max_threshold=>1,
         :pairs=>[{:priority=>0.9, :unit_class=>"17 (infantry_light)"},
         {:priority=>0.3, :unit_class=>"22 (infantry__skirmisher)"},
         {:priority=>1.0, :unit_class=>"20 (Infantry_Militia)"},     
         {:priority=>1.0, :unit_class=>"21 (Infantry_Mob)"},     
         {:priority=>1.0, :unit_class=>"19 (Infantry_Melee)"},     
         {:priority=>1.0, :unit_class=>"16 (Infantry_Irregulars)"}]},
        {:type=>:relative,
         :priority=>0.1,
         :relative_to=>0,
         :shape=>"0 (line)",
         :spacing=>20.0,
         :crescent_yoffset=>0.0,
         :x=>0.0,
         :y=>-40.0,
         :min_threshold=>0,
         :max_threshold=>-1,
         :pairs=>[{:priority=>2.00, :unit_class=>"46 (any)"}]}]},
    TADA



    That snazzy chequerboard

    Not going to do a step by step on this as i did it in one step. Its actually a bad formation for the ai however as it tends to loose order due to the large number of blocks.

    Code:
      {:name=>"Single Line Standard",
      :priority=>0.9,
      :purpose=>"3 (attack/defend)",
      :min_artillery=>0,
      :min_infantry=>0,
      :min_cavalry=>0,
      :factions=>[],
      :lines=>
       [{:type=>:absolute,
         :priority=>2.0,
         :shape=>"0 (line)",
         :spacing=>2.0,
         :crescent_yoffset=>0.0,
         :x=>0.0,
         :y=>0.0,
         :min_threshold=>3,
         :max_threshold=>5,
         :pairs=>[{:priority=>0.05, :unit_class=>"46 (any)"},
         {:priority=>1.0, :unit_class=>"17 (Infantry_Light)"},     
         {:priority=>0.1, :unit_class=>"21 (Infantry_Mob)"},     
         {:priority=>1.0, :unit_class=>"19 (Infantry_Melee)"},
         {:priority=>1.0, :unit_class=>"22 (Infantry_Skirmisher)"},         
         {:priority=>1.0, :unit_class=>"16 (Infantry_Irregulars)"}]},
        {:type=>:relative,
         :priority=>1.0,
         :relative_to=>0,
         :shape=>"0 (line)",
         :spacing=>2.0,
         :crescent_yoffset=>0.0,
         :x=>0.0,
         :y=>-20.0,
         :min_threshold=>1,
         :max_threshold=>1,
         :pairs=>[{:priority=>1.0, :unit_class=>"14 (infantry_elite)"},
         {:priority=>1.0, :unit_class=>"15 (infantry_grenadiers)"},
         {:priority=>0.7, :unit_class=>"18 (infantry_line)"},
         {:priority=>0.6, :unit_class=>"20 (Infantry_Militia)"},     
         {:priority=>0.05, :unit_class=>"21 (Infantry_Mob)"},     
         {:priority=>0.1, :unit_class=>"19 (Infantry_Melee)"},     
         {:priority=>0.05, :unit_class=>"46 (any)"},
         {:priority=>0.2, :unit_class=>"16 (Infantry_Irregulars)"}]},
        {:type=>:relative,
         :priority=>1.0,
         :relative_to=>1,
         :shape=>"0 (line)",
         :spacing=>2.0,
         :crescent_yoffset=>0.0,
         :x=>5.0,
         :y=>-20.0,
         :min_threshold=>1,
         :max_threshold=>1,
         :pairs=>[{:priority=>0.5, :unit_class=>"14 (infantry_elite)"},
         {:priority=>0.5, :unit_class=>"15 (infantry_grenadiers)"},
         {:priority=>1.0, :unit_class=>"18 (infantry_line)"},
         {:priority=>1.00, :unit_class=>"20 (Infantry_Militia)"},     
         {:priority=>0.05, :unit_class=>"21 (Infantry_Mob)"},     
         {:priority=>0.1, :unit_class=>"19 (Infantry_Melee)"},     
         {:priority=>0.05, :unit_class=>"46 (any)"},
         {:priority=>0.2, :unit_class=>"16 (Infantry_Irregulars)"}]},
        {:type=>:relative,
         :priority=>1.0,
         :relative_to=>2,
         :shape=>"0 (line)",
         :spacing=>2.0,
         :crescent_yoffset=>0.0,
         :x=>5.0,
         :y=>20.0,
         :min_threshold=>1,
         :max_threshold=>1,
         :pairs=>[{:priority=>1.0, :unit_class=>"14 (infantry_elite)"},
         {:priority=>1.0, :unit_class=>"15 (infantry_grenadiers)"},
         {:priority=>0.7, :unit_class=>"18 (infantry_line)"},
         {:priority=>0.6, :unit_class=>"20 (Infantry_Militia)"},     
         {:priority=>0.05, :unit_class=>"21 (Infantry_Mob)"},     
         {:priority=>0.1, :unit_class=>"19 (Infantry_Melee)"},     
         {:priority=>0.05, :unit_class=>"46 (any)"},
         {:priority=>0.2, :unit_class=>"16 (Infantry_Irregulars)"}]},
        {:type=>:relative,
         :priority=>1.0,
         :relative_to=>3,
         :shape=>"0 (line)",
         :spacing=>2.0,
         :crescent_yoffset=>0.0,
         :x=>5.0,
         :y=>-20.0,
         :min_threshold=>1,
         :max_threshold=>1,
         :pairs=>[{:priority=>0.5, :unit_class=>"14 (infantry_elite)"},
         {:priority=>0.5, :unit_class=>"15 (infantry_grenadiers)"},
         {:priority=>1.0, :unit_class=>"18 (infantry_line)"},
         {:priority=>1.00, :unit_class=>"20 (Infantry_Militia)"},     
         {:priority=>0.05, :unit_class=>"21 (Infantry_Mob)"},     
         {:priority=>0.1, :unit_class=>"19 (Infantry_Melee)"},     
         {:priority=>0.05, :unit_class=>"46 (any)"},
         {:priority=>0.2, :unit_class=>"16 (Infantry_Irregulars)"}]},
        {:type=>:relative,
         :priority=>1.0,
         :relative_to=>4,
         :shape=>"0 (line)",
         :spacing=>2.0,
         :crescent_yoffset=>0.0,
         :x=>5.0,
         :y=>20.0,
         :min_threshold=>1,
         :max_threshold=>1,
         :pairs=>[{:priority=>1.0, :unit_class=>"14 (infantry_elite)"},
         {:priority=>1.0, :unit_class=>"15 (infantry_grenadiers)"},
         {:priority=>0.7, :unit_class=>"18 (infantry_line)"},
         {:priority=>0.6, :unit_class=>"20 (Infantry_Militia)"},     
         {:priority=>0.05, :unit_class=>"21 (Infantry_Mob)"},     
         {:priority=>0.1, :unit_class=>"19 (Infantry_Melee)"},     
         {:priority=>0.05, :unit_class=>"46 (any)"},
         {:priority=>0.2, :unit_class=>"16 (Infantry_Irregulars)"}]},
        {:type=>:relative,
         :priority=>1.0,
         :relative_to=>1,
         :shape=>"0 (line)",
         :spacing=>2.0,
         :crescent_yoffset=>0.0,
         :x=>-5.0,
         :y=>-20.0,
         :min_threshold=>1,
         :max_threshold=>1,
         :pairs=>[{:priority=>0.5, :unit_class=>"14 (infantry_elite)"},
         {:priority=>0.5, :unit_class=>"15 (infantry_grenadiers)"},
         {:priority=>1.0, :unit_class=>"18 (infantry_line)"},
         {:priority=>1.00, :unit_class=>"20 (Infantry_Militia)"},     
         {:priority=>0.05, :unit_class=>"21 (Infantry_Mob)"},     
         {:priority=>0.1, :unit_class=>"19 (Infantry_Melee)"},     
         {:priority=>0.05, :unit_class=>"46 (any)"},
         {:priority=>0.2, :unit_class=>"16 (Infantry_Irregulars)"}]},
        {:type=>:relative,
         :priority=>1.0,
         :relative_to=>6,
         :shape=>"0 (line)",
         :spacing=>2.0,
         :crescent_yoffset=>0.0,
         :x=>-5.0,
         :y=>20.0,
         :min_threshold=>1,
         :max_threshold=>1,
         :pairs=>[{:priority=>1.0, :unit_class=>"14 (infantry_elite)"},
         {:priority=>1.0, :unit_class=>"15 (infantry_grenadiers)"},
         {:priority=>0.7, :unit_class=>"18 (infantry_line)"},
         {:priority=>0.6, :unit_class=>"20 (Infantry_Militia)"},     
         {:priority=>0.05, :unit_class=>"21 (Infantry_Mob)"},     
         {:priority=>0.1, :unit_class=>"19 (Infantry_Melee)"},     
         {:priority=>0.05, :unit_class=>"46 (any)"},
         {:priority=>0.2, :unit_class=>"16 (Infantry_Irregulars)"}]},
        {:type=>:relative,
         :priority=>1.0,
         :relative_to=>7,
         :shape=>"0 (line)",
         :spacing=>2.0,
         :crescent_yoffset=>0.0,
         :x=>-5.0,
         :y=>-20.0,
         :min_threshold=>1,
         :max_threshold=>1,
         :pairs=>[{:priority=>0.5, :unit_class=>"14 (infantry_elite)"},
         {:priority=>0.5, :unit_class=>"15 (infantry_grenadiers)"},
         {:priority=>1.0, :unit_class=>"18 (infantry_line)"},
         {:priority=>1.00, :unit_class=>"20 (Infantry_Militia)"},     
         {:priority=>0.05, :unit_class=>"21 (Infantry_Mob)"},     
         {:priority=>0.1, :unit_class=>"19 (Infantry_Melee)"},     
         {:priority=>0.05, :unit_class=>"46 (any)"},
         {:priority=>0.2, :unit_class=>"16 (Infantry_Irregulars)"}]},
        {:type=>:relative,
         :priority=>1.0,
         :relative_to=>8,
         :shape=>"0 (line)",
         :spacing=>2.0,
         :crescent_yoffset=>0.0,
         :x=>-5.0,
         :y=>20.0,
         :min_threshold=>1,
         :max_threshold=>1,
         :pairs=>[{:priority=>1.0, :unit_class=>"14 (infantry_elite)"},
         {:priority=>1.0, :unit_class=>"15 (infantry_grenadiers)"},
         {:priority=>0.7, :unit_class=>"18 (infantry_line)"},
         {:priority=>0.6, :unit_class=>"20 (Infantry_Militia)"},     
         {:priority=>0.05, :unit_class=>"21 (Infantry_Mob)"},     
         {:priority=>0.1, :unit_class=>"19 (Infantry_Melee)"},     
         {:priority=>0.05, :unit_class=>"46 (any)"},
         {:priority=>0.2, :unit_class=>"16 (Infantry_Irregulars)"}]},
        {:type=>:spanning, :blocks=>[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]},
        {:type=>:relative,
         :priority=>1.0,
         :relative_to=>0,
         :shape=>"0 (line)",
         :spacing=>30.0,
         :crescent_yoffset=>0.0,
         :x=>0.0,
         :y=>-80.0,
         :min_threshold=>0,
         :max_threshold=>-1,
         :pairs=>[{:priority=>1.0, :unit_class=>"0 (artillery_foot)"},
         {:priority=>0.9, :unit_class=>"1 (artillery_fixed)"},     
         {:priority=>0.9, :unit_class=>"2 (artillery_horse)"}]},
        {:type=>:relative,
         :priority=>1.0,
         :relative_to=>10,
         :shape=>"0 (line)",
         :spacing=>0.0,
         :crescent_yoffset=>0.0,
         :x=>0.0,
         :y=>-10.0,
         :min_threshold=>0,
         :max_threshold=>-1,
         :pairs=>[{:priority=>1.0, :unit_class=>"12 (general)"}]},
        {:type=>:relative,
         :priority=>1.0,
         :relative_to=>9,
         :shape=>"0 (line)",
         :spacing=>30.0,
         :crescent_yoffset=>0.0,
         :x=>-30.0,
         :y=>-30.0,
         :min_threshold=>0,
         :max_threshold=>2,
         :pairs=>[{:priority=>1.0, :unit_class=>"4 (cavalry_camels)"},
         {:priority=>0.9, :unit_class=>"5 (cavalry_heavy)"},
         {:priority=>0.9, :unit_class=>"6 (cavalry_irregular)"},     
         {:priority=>0.9, :unit_class=>"7 (cavalry_lancers)"},     
         {:priority=>0.9, :unit_class=>"8 (cavalry_light)"},
         {:priority=>0.9, :unit_class=>"9 (cavalry_missile)"},     
         {:priority=>0.9, :unit_class=>"10 (dragoons)"}]},
        {:type=>:relative,
         :priority=>1.0,
         :relative_to=>5,
         :shape=>"0 (line)",
         :spacing=>30.0,
         :crescent_yoffset=>0.0,
         :x=>30.0,
         :y=>-30.0,
         :min_threshold=>0,
         :max_threshold=>2,
         :pairs=>[{:priority=>1.0, :unit_class=>"4 (cavalry_camels)"},
         {:priority=>0.9, :unit_class=>"5 (cavalry_heavy)"},
         {:priority=>0.9, :unit_class=>"6 (cavalry_irregular)"},     
         {:priority=>0.9, :unit_class=>"7 (cavalry_lancers)"},     
         {:priority=>0.9, :unit_class=>"8 (cavalry_light)"},
         {:priority=>0.9, :unit_class=>"9 (cavalry_missile)"},     
         {:priority=>0.9, :unit_class=>"10 (dragoons)"}]},
        {:type=>:relative,
         :priority=>1.0,
         :relative_to=>10,
         :shape=>"0 (line)",
         :spacing=>30.0,
         :crescent_yoffset=>0.0,
         :x=>0.0,
         :y=>-20.0,
         :min_threshold=>1,
         :max_threshold=>-1,
         :pairs=>[{:priority=>1.0, :unit_class=>"4 (cavalry_camels)"},
         {:priority=>0.9, :unit_class=>"5 (cavalry_heavy)"},
         {:priority=>0.9, :unit_class=>"6 (cavalry_irregular)"},     
         {:priority=>0.9, :unit_class=>"7 (cavalry_lancers)"},     
         {:priority=>0.9, :unit_class=>"8 (cavalry_light)"},
         {:priority=>0.9, :unit_class=>"9 (cavalry_missile)"},     
         {:priority=>0.9, :unit_class=>"10 (dragoons)"}]},
        {:type=>:relative,
         :priority=>0.1,
         :relative_to=>0,
         :shape=>"0 (line)",
         :spacing=>20.0,
         :crescent_yoffset=>0.0,
         :x=>0.0,
         :y=>-120.0,
         :min_threshold=>0,
         :max_threshold=>-1,
         :pairs=>[{:priority=>2.00, :unit_class=>"46 (any)"}]}]},
    Last edited by The Hedge Knight; August 23, 2011 at 07:57 PM.

  3. #3
    The Hedge Knight's Avatar Fierce When Cornered
    Artifex

    Join Date
    Oct 2009
    Location
    England
    Posts
    5,875

    Default Re: Warscape Battle Formations.

    Handy blocks list.

    I use a lot of preset blocks as its easier than typing each one out and many have a set perpose anyway. You are free to use these but be sure to use them correctly (change x and y, relativities).

    Also please submit handy blocks if you have any .

    cavalry block
    {:type=>:relative,
    :priority=>1.0,
    :relative_to=>0,
    :shape=>"0 (line)",
    :spacing=>2.0,
    :crescent_yoffset=>0.0,
    :x=>0.0,
    :y=>0.0,
    :min_threshold=>0,
    :max_threshold=>-1,
    :pairs=>[{:priority=>1.0, :unit_class=>"4 (cavalry_camels)"},
    {:priority=>0.9, :unit_class=>"5 (cavalry_heavy)"},
    {:priority=>0.9, :unit_class=>"6 (cavalry_irregular)"},
    {:priority=>0.9, :unit_class=>"7 (cavalry_lancers)"},
    {:priority=>0.9, :unit_class=>"8 (cavalry_light)"},
    {:priority=>0.9, :unit_class=>"9 (cavalry_missile)"},
    {:priority=>0.9, :unit_class=>"10 (dragoons)"}]},

    Main line block
    {:type=>:relative,
    :priority=>1.0,
    :relative_to=>0,
    :shape=>"0 (line)",
    :spacing=>2.0,
    :crescent_yoffset=>0.0,
    :x=>0.0,
    :y=>0.0,
    :min_threshold=>0,
    :max_threshold=>-1,
    :pairs=>[{:priority=>0.5, :unit_class=>"14 (infantry_elite)"},
    {:priority=>0.5, :unit_class=>"15 (infantry_grenadiers)"},
    {:priority=>1.0, :unit_class=>"18 (infantry_line)"},
    {:priority=>1.00, :unit_class=>"20 (Infantry_Militia)"},
    {:priority=>0.05, :unit_class=>"21 (Infantry_Mob)"},
    {:priority=>0.1, :unit_class=>"19 (Infantry_Melee)"},
    {:priority=>0.05, :unit_class=>"46 (any)"},
    {:priority=>0.2, :unit_class=>"16 (Infantry_Irregulars)"}]},

    Elite line block
    {:type=>:relative,
    :priority=>1.0,
    :relative_to=>0,
    :shape=>"0 (line)",
    :spacing=>2.0,
    :crescent_yoffset=>0.0,
    :x=>0.0,
    :y=>0.0,
    :min_threshold=>0,
    :max_threshold=>-1,
    :pairs=>[{:priority=>1.0, :unit_class=>"14 (infantry_elite)"},
    {:priority=>1.0, :unit_class=>"15 (infantry_grenadiers)"},
    {:priority=>0.7, :unit_class=>"18 (infantry_line)"},
    {:priority=>0.6, :unit_class=>"20 (Infantry_Militia)"},
    {:priority=>0.05, :unit_class=>"21 (Infantry_Mob)"},
    {:priority=>0.1, :unit_class=>"19 (Infantry_Melee)"},
    {:priority=>0.05, :unit_class=>"46 (any)"},
    {:priority=>0.2, :unit_class=>"16 (Infantry_Irregulars)"}]},

    Artillery Block
    {:type=>:relative,
    :priority=>1.0,
    :relative_to=>0,
    :shape=>"0 (line)",
    :spacing=>30.0,
    :crescent_yoffset=>0.0,
    :x=>0.0,
    :y=>0.0,
    :min_threshold=>0,
    :max_threshold=>-1,
    :pairs=>[{:priority=>1.0, :unit_class=>"0 (artillery_foot)"},
    {:priority=>0.9, :unit_class=>"1 (artillery_fixed)"},
    {:priority=>0.9, :unit_class=>"2 (artillery_horse)"}]},

    Overflow block
    {:type=>:relative,
    :priority=>0.1,
    :relative_to=>0,
    :shape=>"0 (line)",
    :spacing=>20.0,
    :crescent_yoffset=>0.0,
    :x=>0.0,
    :y=>-120.0,
    :min_threshold=>0,
    :max_threshold=>-1,
    :pairs=>[{:priority=>2.00, :unit_class=>"46 (any)"}]}]},

    skirmisher/flanking block (frontline)
    {:type=>:relative,
    :priority=>1.0,
    :relative_to=>0,
    :shape=>"0 (line)",
    :spacing=>2.0,
    :crescent_yoffset=>0.0,
    :x=>0.0,
    :y=>0.0,
    :min_threshold=>0,
    :max_threshold=>-1,
    :pairs=>[{:priority=>0.05, :unit_class=>"46 (any)"},
    {:priority=>1.0, :unit_class=>"17 (Infantry_Light)"},
    {:priority=>0.1, :unit_class=>"21 (Infantry_Mob)"},
    {:priority=>1.0, :unit_class=>"19 (Infantry_Melee)"},
    {:priority=>1.0, :unit_class=>"22 (Infantry_Skirmisher)"},
    {:priority=>1.0, :unit_class=>"16 (Infantry_Irregulars)"}]},

    Skirmisher block (flanking)
    {:type=>:relative,
    :priority=>1.0,
    :relative_to=>0,
    :shape=>"0 (line)",
    :spacing=>10.0,
    :crescent_yoffset=>0.0,
    :x=>0.0,
    :y=>0.0,
    :min_threshold=>0,
    :max_threshold=>-1,
    :pairs=>[{:priority=>1.0, :unit_class=>"17 (infantry_light)"},
    {:priority=>1.0, :unit_class=>"22 (infantry__skirmisher)"},
    {:priority=>0.5, :unit_class=>"20 (Infantry_Militia)"},
    {:priority=>0.3, :unit_class=>"21 (Infantry_Mob)"},
    {:priority=>0.8, :unit_class=>"19 (Infantry_Melee)"},
    {:priority=>0.05, :unit_class=>"46 (any)"},
    {:priority=>1.0, :unit_class=>"16 (Infantry_Irregulars)"}]},
    Last edited by The Hedge Knight; August 22, 2011 at 06:37 PM.

  4. #4
    B-DizL's Avatar TGW Lead Modeller
    Patrician

    Join Date
    May 2009
    Location
    America
    Posts
    5,900

    Default Re: Groupformations: Warscape Battle Formations.

    Holy this is awesome! +rep

    You have done us all an incredible service
    Last edited by B-DizL; August 22, 2011 at 08:01 PM.

  5. #5
    Dee Jay's Avatar I'm gone....
    Join Date
    May 2010
    Location
    Australia
    Posts
    892

    Default Re: Groupformations: Warscape Battle Formations.

    SWEET! Thanks for this Hedge Knight, +rep

    EDIT: Question for you Hedge Knight; Will you be making an update to your Ultimate UI mod using groupformations?
    Last edited by Dee Jay; August 23, 2011 at 02:15 AM.

  6. #6
    RO Citizen's Avatar Protector Domesticus
    Join Date
    Oct 2009
    Location
    Where do you think?
    Posts
    4,566

    Default Re: Groupformations: Warscape Battle Formations.

    Another breakthrough of Warscape modding. Excellent, +rep, Hedge Knight
    [Col] RO Citizen

  7. #7
    Sixt's Avatar Civis
    Join Date
    Jun 2011
    Location
    Helsingør, Denmark
    Posts
    185

    Default Re: Groupformations: Warscape Battle Formations.

    this is so cool, have been looking for something like this...

  8. #8
    Primergy's Avatar Protector of the Union
    Join Date
    Mar 2009
    Location
    Augsburg
    Posts
    2,491

    Default Re: Groupformations: Warscape Battle Formations.

    + rep by me :

  9. #9

    Default Re: Groupformations: Warscape Battle Formations.

    +even more rep, good job.

  10. #10
    mattebubben's Avatar Senator
    Join Date
    Aug 2010
    Location
    Sweden
    Posts
    1,043

    Default Re: Groupformations: Warscape Battle Formations.

    would love to see some Group Formation mods.
    I have tried myself but i cant get it to work.

  11. #11
    The Hedge Knight's Avatar Fierce When Cornered
    Artifex

    Join Date
    Oct 2009
    Location
    England
    Posts
    5,875

    Default Re: Groupformations: Warscape Battle Formations.

    Uploaded improved batch files.

  12. #12

    Default Re: Groupformations: Warscape Battle Formations.

    Is anybody here still editing these?
    Because I just added an editor to the TWS2 PFM; it would require some effort to make it compatible with NTW and it wouldn't be worth it if no one would use it.
    Tools: PFM 4.1 - EditSF 1.2.0
    (Download PFM - Download EditSF)
    Warscape Modding Guide
    Join the PFM User Group on Steam to receive PackFileManager update notifications.

    Respecto Patronum

  13. #13
    The Hedge Knight's Avatar Fierce When Cornered
    Artifex

    Join Date
    Oct 2009
    Location
    England
    Posts
    5,875

    Default Re: Groupformations: Warscape Battle Formations.

    Darth, I think Yarkis does does, I would if I had reason too but being able to copy and paste premade blocks is by far the simplest way of editing these IMO and copy and pasting isn't something I remember pfm being particularly good enough (Only used it up to 1.5.9 though).

  14. #14

    Default Re: Groupformations: Warscape Battle Formations.

    Quote Originally Posted by The Hedge Knight View Post
    copy and paste premade blocks is by far the simplest way of editing these IMO
    Yeah I was thinking of adding a "library" feature, should be useful for the most common "line"s.
    But since it's more or less art pour l'art, I'll probably lose interest before I get around to doing it
    I thought the formation preview might be pretty handy, but since I never edited any myself...
    Tools: PFM 4.1 - EditSF 1.2.0
    (Download PFM - Download EditSF)
    Warscape Modding Guide
    Join the PFM User Group on Steam to receive PackFileManager update notifications.

    Respecto Patronum

  15. #15
    The Hedge Knight's Avatar Fierce When Cornered
    Artifex

    Join Date
    Oct 2009
    Location
    England
    Posts
    5,875

    Default Re: Groupformations: Warscape Battle Formations.

    I can't speak for everyone but I can just visualise pretty easily...

  16. #16
    Live2sculpt's Avatar Senator
    Join Date
    Sep 2009
    Location
    MI, U.S.A.
    Posts
    1,153

    Default Re: Groupformations: Warscape Battle Formations.

    This could come in handy for larger battles when wanting to mobilize seperate columns.

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •