Forest of Assassins - Battle of Rung Sat - 9/21/55 - AAR (AI vs. AI)

Please post your after action reports on your battles and campaigns here.

Moderator: Campaign Series Matrix Edition Development Group

User avatar
berto
Posts: 21461
Joined: Wed Mar 13, 2002 1:15 am
Location: metro Chicago, Illinois, USA
Contact:

Re: Forest of Assassins - Battle of Rung Sat - 9/21/55 - AAR (AI vs. AI)

Post by berto »

For the remainder of the scenario, the 1st/22nd & 3rd/22nd continue to assault OBJECTIVES[11] without success. Should we call in airstrikes?

CSVN_AAR_AI_AI_RungSat193.jpg
CSVN_AAR_AI_AI_RungSat193.jpg (552.16 KiB) Viewed 872 times

Notice the BX Army Supply Depot (yellow circle) at hex 50,52. Yes, the VNA are charged with capturing objectives. But their mission is to destroy BX Army supplies too (for which the VNA earn EPs). Why aren't the VNA moving to assault and capture or destroy that supply depot?

CSVN_AAR_AI_AI_RungSat194.jpg
CSVN_AAR_AI_AI_RungSat194.jpg (2.03 MiB) Viewed 872 times

The labyrinthine waterways are the major reason why. In order for the 1st/22nd & 3rd/22nd to reach the supply depot, it would require a way point move/attack. When scripting the VNA SAI for this scenario, putting ourselves in the place of the VNA leadership, with limited intel, how are we to know in advance where the supply dumps are? In any circumstance, how are we to know beforehand where our units are, and what precise way point moves will get us from here to there? There are dozens and even hundreds of such possibilities we might script all around the playing map. Who has time for that? We must be practical. Practically considered, there is no way (without cheating, without unreasonable foreknowledge) we can expect to SAI this situation. What then?

Fortunately, there is a user.lua uber function:


Code: Select all

-- attack_supply() -- if enemy supply units are sighted, move to attack them

function attack_supply (trackids, extent)

    [see user.lua for details]

end


where we might get the 1st/22nd & 3rd/22nd at least to direct fire at the Supply Depot, if not move to assault it. Fortunately, there is a LOS to that Supply Depot:

CSVN_AAR_AI_AI_RungSat195.jpg
CSVN_AAR_AI_AI_RungSat195.jpg (1.92 MiB) Viewed 872 times

(In the screenshot, the Visible highlights are toggled ON.)

Together with the VNA mortars off to the west (turquoise circle) -- they were in fact observed to be indirect firing at the Supply Depot -- maybe a mix of direct and indirect fire will score a lucky strike.

But assault that Supply Depot? No, no way! Not for any reasonable SAI. (No stopping a human player from doing that, of course.)

See the latest VN_550921_Rung_Sat.lua, init.lua & user.lua attached.

$ unzip -l VN_550921_Rung_Sat_20221124.zip
Archive: VN_550921_Rung_Sat_20221124.zip
Length Date Time Name
--------- ---------- ----- ----
115412 11-20-2022 12:17 VN_550921_Rung_Sat.lua
459473 11-20-2022 11:12 init.lua
112900 11-20-2022 07:40 user.lua
--------- -------
687785 3 files

VN_550921_Rung_Sat_20221124.zip
(72.71 KiB) Downloaded 11 times
Campaign Series Legion https://cslegion.com/
Campaign Series Lead Coder https://www.matrixgames.com/forums/view ... hp?f=10167
Panzer Campaigns, Panzer Battles Lead Coder https://wargameds.com
User avatar
berto
Posts: 21461
Joined: Wed Mar 13, 2002 1:15 am
Location: metro Chicago, Illinois, USA
Contact:

Re: Forest of Assassins - Battle of Rung Sat - 9/21/55 - AAR (AI vs. AI)

Post by berto »

For the 1st/22nd & 3rd/22nd, I made their attack on OBJECTIVES[11] (or maybe OBJECTIVES[5]) conditional on an attack_supply() outcome:


Code: Select all

    -- _1ST_22ND_INF_COY_55_B_272 -- 1st/22nd Infantry Company 55 - B
    -- _3RD_22ND_INF_COY_55_B_284 -- 3rd/22nd Infantry Company 55 - B
    do local units = join({_1ST_22ND_INF_COY_55_B_272, _3RD_22ND_INF_COY_55_B_284})
        garrison(_MMG_48_288, "32,49") -- keep behind _3RD_22ND_INF_COY_55_B_284 _MMG_48_288 to garrison MP at hex 32,49
        units = difference(units, _GARRISONS)
        _1ST_22ND_3RD_22ND_OBJECTIVE = OBJECTIVES[11]  -- _1ST_22ND_3RD_22ND_OBJECTIVE or random_pick({OBJECTIVES[11], OBJECTIVES[11], OBJECTIVES[5]})
        if objective_owner(OBJECTIVES[3]) == BX_SIDE then
            move_way_point(units, {"32,53", "36,54", "39,57"})
        elseif not attack_supply(units, 2) then
            if _1ST_22ND_3RD_22ND_OBJECTIVE == OBJECTIVES[11] then
                attack_way_point(units, {OBJECTIVES[3], "45,51", "46,51", "46,52", "48,53", "51,54", OBJECTIVES[11]}, NODIR, 0, 100, ATTACK_STRONG)
            elseif _1ST_22ND_3RD_22ND_OBJECTIVE == OBJECTIVES[5] then
                attack_way_point(units, {OBJECTIVES[3], "43,49", OBJECTIVES[5]}, NODIR, 0, 100, ATTACK_STRONG)
            end
        end
        accompany(_22ND_154TH_464, units)
    end


The attack_supply() uber function (in user.lua) returns true if a supply unit is attacked, false if not:


Code: Select all

-- attack_supply() -- if enemy supply units are sighted, move to attack them

function attack_supply (trackids, extent)

    ...

    local attack = false

    ...

                attack = true  [a supply unit has been targeted for attack]

    ...

    return attack

end


In the code


Code: Select all

        ...
        elseif not attack_supply(units, 2) then
            if _1ST_22ND_3RD_22ND_OBJECTIVE == OBJECTIVES[11] then
                attack_way_point(units, {OBJECTIVES[3], "45,51", "46,51", "46,52", "48,53", "51,54", OBJECTIVES[11]}, NODIR, 0, 100, ATTACK_STRONG)
            elseif _1ST_22ND_3RD_22ND_OBJECTIVE == OBJECTIVES[5] then
                attack_way_point(units, {OBJECTIVES[3], "43,49", OBJECTIVES[5]}, NODIR, 0, 100, ATTACK_STRONG)
            end
        end


we are saying only give the order (overriding the attack_supply() order) to attack one (or the other) of the OBJECTIVES[] if attack_supply() returns false, hence 'not attack_supply(units, 2)' is true (not false is true). Verstehen?

(Remember: Many of the order functions have return values indicating whether or not the order was successfully applied. We can sometimes make good use of this return value, as in this case.)

Does it work? In subsequent auto-tests, I saw one instance where indeed the 1st/22nd & 3rd/22nd direct fired on, and destroyed, the enemy Supply Depot at hex 50,52. So yes, the revised code works.

In another auto-test, the Supply Depot was randomly placed northeast of OBJECTIVES[11]. Do you begin to see why writing code to micromanage an assault on a Supply Depot at the specific location hex 50,52 is foolish? What if the enemy SAI has randomly placed that Supply Depot at a different location? What if that is the only Supply Depot on the map? Or there are only five of them? Or as many as a hundred? Are we supposed to SAI an attack at every possible location, from every possible angle, of that Supply Depot (and others)? No! Best to write our SAI code in a general way, then hope for the best.
Campaign Series Legion https://cslegion.com/
Campaign Series Lead Coder https://www.matrixgames.com/forums/view ... hp?f=10167
Panzer Campaigns, Panzer Battles Lead Coder https://wargameds.com
User avatar
berto
Posts: 21461
Joined: Wed Mar 13, 2002 1:15 am
Location: metro Chicago, Illinois, USA
Contact:

Re: Forest of Assassins - Battle of Rung Sat - 9/21/55 - AAR (AI vs. AI)

Post by berto »

Earlier, I had written

For the remainder of the scenario, the 1st/22nd & 3rd/22nd continue to assault OBJECTIVES[11] without success. Should we call in airstrikes?

Before now, we had no scripting for airstrikes. The new Enhanced Air Support system was implemented well after this Rung Sat scenario was scripted two or more years ago. It is high time we begin scripting airstrikes!

In my user.lua, I have defined a new function, order_airstrike(), copied below. You don't need to understand how the following code works; you just use it. But for the record:


Code: Select all

-- order_airstrike() -- at actprob chance, from the given aircraft pool, possibly order a randomly selected aircraft to airstrike a randomly selected target hex from the given target list; for non objectives hexes, if verified_only is true, the potential target hex must be spotted

function order_airstrike (trackids, hcs, actprob, verified_only)

    ...

    actprob = actprob or 100
    verified_only = verified_only or false

    local side = counter_side(trackids[1])
    local other = other_side(side)

    if chance(actprob) then

        local aircraft = UNKNOWN
        for i=1, #trackids do  -- arbitrary cap on # iterations
            local ac = random_pick(trackids)
            if not has_flag(counter_more_flags(ac), DROPPEDPAYLOAD) then
                aircraft = ac
                break
            end
        end
        if (aircraft == UNKNOWN) then return false end

        local thc = HEXUNKNOWN
        for i=1, #hcs do  -- arbitrary cap on # iterations
            local hc = random_pick(hcs)
            -- enemy-held objectives always okay
            if objective_owner(hc) == other then
                thc = hc
                break
            -- if require verification (if verified_only is true), enemy occupied target hex only okay if spotted
            elseif verified_only then
                if occupied(hc, other) and
                   has_spotted(hc) then
                    thc = hc
                    break
                end
            -- if don't require verification (if verified_only is false, the default), any target hex okay
            elseif not verified_only then
                thc = hc
                break
            end
        end
        if (thc == HEXUNKNOWN) then return false end

        airstrike(aircraft, thc)
        return true

    end

    return false

end


How might we use it?

In VN_550921_Rung_Sat.lua, I have consolidated the many individual aircraft stanzas (created by csmklua.pl)


Code: Select all

    -- _DOUGLAS_B26_INVADER_BOMBS_509 -- Douglas B-26 Invader {Bombs}
    do local units = _DOUGLAS_B26_INVADER_BOMBS_509

    end

    -- _DOUGLAS_B26_INVADER_BOMBS_510 -- Douglas B-26 Invader {Bombs}
    do local units = _DOUGLAS_B26_INVADER_BOMBS_510

    end

    ...


into one, all-encompassing units list


Code: Select all

    local airstrikes = 0

    do local units = join({_DOUGLAS_B26_INVADER_BOMBS_509, _DOUGLAS_B26_INVADER_BOMBS_510, _DOUGLAS_B26_INVADER_BOMBS_511, _DOUGLAS_B26_INVADER_BOMBS_512, _DOUGLAS_B26_INVADER_BOMBS_513, _DOUGLAS_B26_INVADER_BOMBS_514, _DOUGLAS_B26_INVADER_BOMBS_515, _DOUGLAS_B26_INVADER_BOMBS_516, _GRUMMAN_F8F_BEARCAT_ROCKETS_503, _GRUMMAN_F8F_BEARCAT_ROCKETS_504, _GRUMMAN_F8F_BEARCAT_ROCKETS_505, _GRUMMAN_F8F_B\
EARCAT_ROCKETS_506, _GRUMMAN_F8F_BEARCAT_ROCKETS_507, _GRUMMAN_F8F_BEARCAT_ROCKETS_508})
        if air_support(VNA_SIDE) > airstrikes then
            order_airstrike(units, _ASSAULT_HCS_VNA, 75, true)  -- or 100?
            airstrikes = airstrikes + 1
        end
    end


airstrikes is a local variable applicable only in the current battle_plan_a() function call to keep track of the number of airstrikes we have ordered for this go around. Every time an airstrike is ordered, we increment the airstrikes count by one.

Only if the available air_support() exceeds the airstrikes count do we hand out airstrike orders, i.e., call the order_airstrike() function.

In the example, the hcs input to the order_airstrike() function is _ASSAULT_HCS_VNA. What is that? Something we have set up in the scenario on_hex_assault() trigger function:


Code: Select all

function on_hex_assault (hc, side) -- DO NOT REMOVE

    _ASSAULT_HCS_VNA = _ASSAULT_HCS_VNA or {}
    if side == VNA_SIDE then
        _ASSAULT_HCS_VNA[#_ASSAULT_HCS_VNA+1] = hc
    end

end


Every time a hex is assaulted, for the VNA_SIDE only (since only they have aircraft), we add the assault hc to the _ASSAULT_HCS_VNA list.

After the first VNA assault, for example at hex 45,42, we might have this:



rober@Rob10rto /cygdrive/c/Games/Matrix Games/Vietnam/vietnam
$ egrep _ASSAULT_HCS_VNA 'VN_550921_Rung_Sat TEST TRIAL.btl'
l _ASSAULT_HCS_VNA:{"45,42"}



(Note that since _ASSAULT_HCS_VNA is a global variable, it is saved in the scenario .btl file. We can inspect its value, if we wish, in the manner shown.)

After a second assault, for example at hex 42,55, we might then have this:



rober@Rob10rto /cygdrive/c/Games/Matrix Games/Vietnam/vietnam
$ egrep _ASSAULT_HCS_VNA 'VN_550921_Rung_Sat TEST TRIAL.btl'
l _ASSAULT_HCS_VNA:{"45,42","42,55"}



And so on.

Some ways into the scenario, we might have:



rober@Rob10rto /cygdrive/c/Games/Matrix Games/Vietnam/vietnam
$ egrep _ASSAULT_HCS_VNA 'VN_550921_Rung_Sat TEST TRIAL.btl'
l _ASSAULT_HCS_VNA:{"45,42","42,55","53,37","42,55","42,55","42,55","42,54","44,51","49,54","49,54","49,54","49,54","49,54"}



Among those 13 recorded assaults:

  • hex 45,42 was assaulted once, 1 in 13
  • hex 42,55 was assaulted 4 times out of 13
  • hex 53,37 was assaulted once, 1 in 13
  • hex 42,54 was assaulted once, 1 in 13
  • hex 44,51 was assaulted once, 1 in 13
  • hex 49,54 was assaulted 5 times out of 13

Evidently hexes 42,55 (4 out of 13) and 49,54 (5 out of 13) were tough, repeated assaults, while the others were all easily taken on a single assault attempt. Where should we prioritize assigning airstrikes? To the tough cases, of course.

In order_airstrike(), we prioritize the tough cases by means of the random_pick() call:


Code: Select all

        for i=1, #hcs do  -- arbitrary cap on # iterations
            local hc = random_pick(hcs)
            ...
                thc = hc  [hc is the designated target, maybe]
            ...
        end


In other words, the more times an assault hex appears in the _ASSAULT_HCS_VNA list, the more likely it will be targeted.

But only if it is an enemy-held Objective, or is verified enemy occupied, or we don't care about verification so target the first randomly picked hex from the list. (See the order_airstrike() function definition above for details.)

If an assault hex is a friendly held Objective and/or is friendly occupied, we don't target it for airstrikes if the verified_only input is set to 'true' -- probably a good idea always.

Earlier in the order_airstrike() function, we randomly select an aircraft from the trackids input but only if it has not DROPPEDPAYLOAD.

If we don't have a suitable aircraft and/or we don't have a suitable target hex, the order_airstrike() function


Code: Select all

        ...

        if (aircraft == UNKNOWN) then return false end

        ...

        if (thc == HEXUNKNOWN) then return false end

        ...


returns 'false', there is no ordered airstrike.

Otherwise


Code: Select all

        airstrike(aircraft, thc)


we order the airstrike by means of the standard CSEE airstrike() function, but


Code: Select all

function order_airstrike (trackids, hcs, actprob, verified_only)

    ...

    if chance(actprob) then

        [maybe order an airstrike, maybe not; if so return true]

    end

    return false

end


only if 'chance(actprob)' is true.

In the scenario Lua script, we have


Code: Select all

            order_airstrike(units, _ASSAULT_HCS_VNA, 75, true)  -- or 100?


which is to say maybe order an airstrike

  • from among the available, suitable (not yet dropped payload) aircraft
  • target a suitable assault hex (not yet friendly occupied, verified only)
  • at only 75% chance of considering it anyway

Whew! That's complicated! Again: You don't really need to understand the gory details, just make use of the functions and techniques.

Does this too work?
Campaign Series Legion https://cslegion.com/
Campaign Series Lead Coder https://www.matrixgames.com/forums/view ... hp?f=10167
Panzer Campaigns, Panzer Battles Lead Coder https://wargameds.com
User avatar
berto
Posts: 21461
Joined: Wed Mar 13, 2002 1:15 am
Location: metro Chicago, Illinois, USA
Contact:

Re: Forest of Assassins - Battle of Rung Sat - 9/21/55 - AAR (AI vs. AI)

Post by berto »

In a subsequent auto-test, at Turn 29 we have

CSVN_AAR_AI_AI_RungSat196.jpg
CSVN_AAR_AI_AI_RungSat196.jpg (369.24 KiB) Viewed 831 times

Hex 49,54 is a tough case. As you can see by the airstrike marker, an airstrike on that hex has been ordered.

On the next turn, we see that

CSVN_AAR_AI_AI_RungSat197.jpg
CSVN_AAR_AI_AI_RungSat197.jpg (376.3 KiB) Viewed 831 times

indeed an airstrike was carried out at that hex, with "Unknown Effect". We still see the airstrike marker, indicating that more than one airstrike has been assigned (over more than one turn).

At Turn 31, we have

CSVN_AAR_AI_AI_RungSat198.jpg
CSVN_AAR_AI_AI_RungSat198.jpg (378.24 KiB) Viewed 831 times

A second air attack also shows "Unknown Effect". Note from the arty crosshairs that VNA artillery are also getting in on the act.

Still at Turn 31, we subsequently see

CSVN_AAR_AI_AI_RungSat199.jpg
CSVN_AAR_AI_AI_RungSat199.jpg (362.59 KiB) Viewed 831 times

With airstrikes (and artillery strikes) having softened the defenders, the attacker VNA assault at hex 49,54 ultimately succeeds. Yay! Nut cracked!

Two turns later, at Turn 33, the VNA successfully assault the enemy position at hex 51,54:

CSVN_AAR_AI_AI_RungSat200.jpg
CSVN_AAR_AI_AI_RungSat200.jpg (439.22 KiB) Viewed 831 times

From the airstrike marker, note that hex 51,54 is still targeted for airstrike.

At Turn 34, the VNA have moved off hex 51,54 and successfully assaulted enemy at hex 52,53.

CSVN_AAR_AI_AI_RungSat201.jpg
CSVN_AAR_AI_AI_RungSat201.jpg (440.63 KiB) Viewed 831 times

Is the airstrike at hex 51,54 later canceled? Yes it is. (The airstrike marker vanishes without any actual air attack at that hex.)

At Turn 36, with hex 52,54 being the toughest nut of all to crack, the latest failed assault, and the first of several ordered airstrikes (look closely to see the airstrike marker underneath the Objective value tag):

CSVN_AAR_AI_AI_RungSat202.jpg
CSVN_AAR_AI_AI_RungSat202.jpg (442.76 KiB) Viewed 831 times

At Turn 37, confirmation of air attack at hex 52,54:

CSVN_AAR_AI_AI_RungSat203.jpg
CSVN_AAR_AI_AI_RungSat203.jpg (476.61 KiB) Viewed 831 times

After this, there are more apparently feckless airstrikes, and more failed assaults. At scenario auto-test's conclusion, hex 52,54 remains in enemy hands. A tough nut indeed!

Do the order_airstrike() function and technique work? Yes they do!

We now have a good, workable solution to the airstrike targeting problem. Is it perfect? No, of course not. Are there other ways we might SAI order airstrikes? Yes.

For one thing, rather than target assault hexes, we might instead do


Code: Select all

            order_airstrike(units, OBJECTIVES, 100, true)


Checking airstrike orders every go around (100% chance), forget about tough assault cases, rather target Objective hexes more generally.

We might target both OBJECTIVES and _ASSAULT_HCS_VNA with


Code: Select all

    local airstrikes = 0

    do local units = join({_DOUGLAS_B26_INVADER_BOMBS_509, _DOUGLAS_B26_INVADER_BOMBS_510, _DOUGLAS_B26_INVADER_BOMBS_511, _DOUGLAS_B26_INVADER_BOMBS_512, _DOUGLAS_B26_INVADER_BOMBS_513, _DOUGLAS_B26_INVADER_BOMBS_514, _DOUGLAS_B26_INVADER_BOMBS_515, _DOUGLAS_B26_INVADER_BOMBS_516})
        if air_support(VNA_SIDE) > airstrikes then
            order_airstrike(units, _ASSAULT_HCS_VNA, 100, true)
            airstrikes = airstrikes + 1
        end
    end

    do local units = join({_GRUMMAN_F8F_BEARCAT_ROCKETS_503, _GRUMMAN_F8F_BEARCAT_ROCKETS_504, _GRUMMAN_F8F_BEARCAT_ROCKETS_505, _GRUMMAN_F8F_BEARCAT_ROCKETS_506, _GRUMMAN_F8F_BEARCAT_ROCKETS_507, _GRUMMAN_F8F_BEARCAT_ROCKETS_508})
        if air_support(VNA_SIDE) > airstrikes then
            order_airstrike(units, OBJECTIVES, 33, true)
            airstrikes = airstrikes + 1
        end
    end


with the BOMBS payloaded aircraft targeting _ASSAULT_HCS_VNA (100% chance of considering) while the ROCKETS payloaded aircraft target OBJECTIVES (considered 33% of the time).

Or we might use some hcs set other than OBJECTIVES or _ASSAULT_HCS_VNA, or group the aircraft somehow differently.

In fact, what's to stop us from defining one or more additional order_airstrike() function variants using different function inputs and employing different selection algorithms? There is no stopping us. In future, if we see the need for greater sophistication and nuance, we will define more and more order_airstrike() variants. The SAI/CSEE is entirely open ended. Is there any end to SAI/CSEE new development? Silly question! LOL

With the above results, keep in mind: When we activate the orders for the entire VNA force (by uncommenting their orders code), airstrikes will apply more widely across the scenario battle map. The 1st/22nd & 3rd/22nd will be competing with other VNA companies for their "fair share" of the limited available airstrik allotment (doled out bit by bit across the latter half of this scenario; see the allot_airstrikes() calls in the full VN_550921_Rung_Sat.lua file's on_next_turn()). Airstrikes are great to have, but there will never be enough of them. Panaceas they are not!
Campaign Series Legion https://cslegion.com/
Campaign Series Lead Coder https://www.matrixgames.com/forums/view ... hp?f=10167
Panzer Campaigns, Panzer Battles Lead Coder https://wargameds.com
User avatar
berto
Posts: 21461
Joined: Wed Mar 13, 2002 1:15 am
Location: metro Chicago, Illinois, USA
Contact:

Re: Forest of Assassins - Battle of Rung Sat - 9/21/55 - AAR (AI vs. AI)

Post by berto »

We are getting close to a full auto-test, followed perhaps by an actual human vs. AI playtest. But first we have some loose ends to tie.

For the 2nd/22nd and 22nd Weapons Coys, we have


Code: Select all

    -- _2ND_22ND_INF_COY_55_B_278 -- 2nd/22nd Infantry Company 55 - B
    -- _22NDWEAPONS_COY_55_296 -- 22ndWeapons Company 55
    do local units = difference(join({_2ND_22ND_INF_COY_55_B_278, _22NDWEAPONS_COY_55_296}), _2ND_22ND_467)
        _VNA_OBJECTIVES3_GARRISON = _VNA_OBJECTIVES3_GARRISON or garrison(units, OBJECTIVES[3])
        _VNA_OBJECTIVES5_GARRISON = _VNA_OBJECTIVES5_GARRISON or garrison(difference(units,_GARRISONS), OBJECTIVES[5])
        units = difference(units, _GARRISONS)
        if objective_owner(OBJECTIVES[3]) == BX_SIDE then
            attack_way_point(units, {"35,50", "39,56", OBJECTIVES[3]}, NODIR, 0, 100, ATTACK_STRONG)
        elseif not attack_supply(units, 2) then
            if objective_owner(OBJECTIVES[5]) == BX_SIDE then
                attack_way_point(units, {OBJECTIVES[3], "43,49", OBJECTIVES[5]}, NODIR, 0, 100, ATTACK_STRONG)
            else
                attack_scatter(units, OBJECTIVES[5], NODIR, 4, 100, true)
            end
        end
    end


That 'attack_scatter()' call overdoes it. The units scatter about in a wild, chaotic frenzy.

Better:


Code: Select all

            else
                for i=1, #units do
                    if chance(50) then
                        attack_scatter(units[i], OBJECTIVES[5], NODIR, 6, 100, true)
                        break
                    end
                end
            end


That is, looping potentially through all the (locally defined) units, at the first successful 50/50 "coin toss", assign to that single units[ i ] a scatter and attack order, then immediately break out of the 'for' loop. This will assign a new scatter attack at most one unit per turn. Any units assigned their scatter attack vector previously, they will keep their earlier orders, and attack vectors (scatter locations), unless the current go-around overrides them (but just one override per turn).

A problem here is that the above algorithm proceeds through the unit list sequentially, from first to last, thereby biasing new order assignments to the leading units. The trailing units will likely never get orders. Better:


Code: Select all

            else
                if chance(50) then
                    attack_scatter(random_pick(units), OBJECTIVES[5], NODIR, 6, 100, true)
                end
            end


Each go-around, give an attack_scatter() order to the one and only one unit randomly picked. There is no bias, no favoring the early units in the units list vs. the later. All have an equal chance of being randomly picked.

With the latest, preferred algorithm, each unit will on average be assigned a new order only once every 10 turns or so. Much less churn than every unit being given a new order, and scatter destination, each and every turn.

Quite possibly we might increase the chance from 'chance(50)' to 'chance(75)' or 'chance(100)' even. Something to watch in the auto-testing.

More loose ends. The 3rd Arty Btn hasn't been assigned orders yet. Simple. We have the howitzer units in the Battalion indirect fire at the nearest enemy unit:


Code: Select all

    ---------------------------------------------------------------------------
    -- _3RD_ARTILLERY_BTN_55_105MM_413 -- 3rd Artillery Battalion 55 - 105mm --
    ---------------------------------------------------------------------------

    -- _HQ_414 -- ARVN Battalion HQ (foot)
    do local units = _HQ_414

    end

    -- _1ST_3RD_HOWITZER_BTY_55_105MMX4_415 -- 1st/3rd Howitzer Battery 55 - 105mmx4
    do local units = _1ST_3RD_HOWITZER_BTY_55_105MMX4_415
        fire_indirect_nearest(_HOWITZER_BTY_416, 100)
    end
    -- _HOWITZER_BTY_416 -- M101 105mm Howitzers

    -- _2ND_3RD_HOWITZER_BTY_55_105MMX4_420 -- 2nd/3rd Howitzer Battery 55 - 105mmx4
    do local units = _2ND_3RD_HOWITZER_BTY_55_105MMX4_420
        fire_indirect_nearest(_HOWITZER_BTY_421, 100)
    end
    -- _HOWITZER_BTY_421 -- M101 105mm Howitzers

    -- _3RD_3RD_HOWITZER_BTY_55_105MMX4_425 -- 3rd/3rd Howitzer Battery 55 - 105mmx4
    do local units = _3RD_3RD_HOWITZER_BTY_55_105MMX4_425
        fire_indirect_nearest(_HOWITZER_BTY_426, 100)
    end
    -- _HOWITZER_BTY_426 -- M101 105mm Howitzers

    -- _1ST_34TH_HOWITZER_BTY_55_105MMX4_0VP_431 -- 1st/34th Howitzer Battery 55 - 105mmx4 - 0VP
    do local units = _1ST_34TH_HOWITZER_BTY_55_105MMX4_0VP_431
        fire_indirect_nearest(_HOWITZER_BTY_432, 100)
    end
    -- _HOWITZER_BTY_432 -- M101 105mm Howitzers

    ...


Before the full auto-test, I remove all '--[[' and '--]]' comment markers. All unit orders will be activated, both sides.
Campaign Series Legion https://cslegion.com/
Campaign Series Lead Coder https://www.matrixgames.com/forums/view ... hp?f=10167
Panzer Campaigns, Panzer Battles Lead Coder https://wargameds.com
User avatar
berto
Posts: 21461
Joined: Wed Mar 13, 2002 1:15 am
Location: metro Chicago, Illinois, USA
Contact:

Re: Forest of Assassins - Battle of Rung Sat - 9/21/55 - AAR (AI vs. AI)

Post by berto »

For reference, here is a map of the Rung Sat Swamp southeast of Saigon, with the game map area outlined in green:

CSVN_AAR_AI_AI_RungSat207.jpg
CSVN_AAR_AI_AI_RungSat207.jpg (130.24 KiB) Viewed 799 times

I decide to temporarily pause the auto-test at Turn 20 via



rober@Rob10rto /cygdrive/c/Games/Matrix Games/Vietnam/vietnam
$ echo "20a" > pass



The auto-test runs ...

... At Turn 20, we have:

CSVN_AAR_AI_AI_RungSat204.jpg
CSVN_AAR_AI_AI_RungSat204.jpg (1.85 MiB) Viewed 799 times

Thus far, the VNA show fair progress to the north, good progress in the center, while to the south it's slow going.

At the next pause, at Turn 30, we have:

CSVN_AAR_AI_AI_RungSat205.jpg
CSVN_AAR_AI_AI_RungSat205.jpg (1.85 MiB) Viewed 799 times

More progress to the north, stasis in the center, forward progress to the south.

Just before auto-test's end, at the beginning of Turn 40, we see:

CSVN_AAR_AI_AI_RungSat206.jpg
CSVN_AAR_AI_AI_RungSat206.jpg (3.21 MiB) Viewed 799 times

The two turquoise circles indicate Objectives initially VNA (Side A) held. Every other map Objective was initially the BX Army's (Side B's).

The green circles show Objectives VNA taken and still held. The yellow circles indicate BX Army Objectives never contested, successfully defended, or retaken.

All in all, for the VNA, not bad, pretty good actually. The VNA have captured nearly all of the Objective hexes in the north half of the map, and about half or so Objectives to the south. The VNA has pushed the BX "mafia" further away from Saigon, shrinking their Rung Sat stronghold. With the BX Army's back up against the South China Sea wall, they appear to be doomed!

We should try to seal their doom. That one BX Army objective in the center of the map, the Military Post at OBJECTIVES[14], has defeated the 11th Naval Assault Group; it remains in BX Army possession. Meanwhile, in the near vicinity, other VNA units languish, with all missions accomplished, nothing else assigned for them to do. In future Lua script revisions, we should consider using the 11th NAG's riverine transports (white circles) to ferry nearby units across the Nga Ba Dong Tranh and Song Dong Tranh to reinforce the VNA attack on OBJECTIVES[14].

And other adjustments. But not now. It's high time we do an actual human vs. SAI playtest, ya think?
Campaign Series Legion https://cslegion.com/
Campaign Series Lead Coder https://www.matrixgames.com/forums/view ... hp?f=10167
Panzer Campaigns, Panzer Battles Lead Coder https://wargameds.com
User avatar
berto
Posts: 21461
Joined: Wed Mar 13, 2002 1:15 am
Location: metro Chicago, Illinois, USA
Contact:

Re: Forest of Assassins - Battle of Rung Sat - 9/21/55 - AAR (AI vs. AI)

Post by berto »

After giving the matter careful thought, I have decided for my first actual playthrough that I will play the BX Army Side B, facing off against the SAI'ed VNA Side A. The VNA Side A scripting is the greater challenge. It makes sense to test it first. Then after the playthrough, adjust the Side A scripting as indicated. Then maybe switch sides in the next playthrough after that.

My aim here is to play as if I am coming into the scenario cold. I will pretend to know nothing of the VNA Side A force composition, its whereabouts, its scripting. I will also try to play Side B conventionally. Nothing cute or screwy, no attempt to game the system or the opposing side's SAI. In short, fight this battle in a historical, plausible manner as I imagine the BX Army might do so in Real Life.

I launch the scenario.

The Side B briefing:

CSVN_AAR_AI_AI_RungSat208.jpg
CSVN_AAR_AI_AI_RungSat208.jpg (310.43 KiB) Viewed 764 times

At the beginning of Turn 1, Side B phase, an announcement:

CSVN_AAR_AI_AI_RungSat209.jpg
CSVN_AAR_AI_AI_RungSat209.jpg (17.89 KiB) Viewed 764 times

On opening the Arrived Dialog:

CSVN_AAR_AI_AI_RungSat210.jpg
CSVN_AAR_AI_AI_RungSat210.jpg (128.76 KiB) Viewed 764 times

Most of those placements are semi-random. (See the Side B SAI described early in this AAR thread.) I doubleclick every item in that list to place the various reinforcement groups.

On opening the Scheduled Dialog:

CSVN_AAR_AI_AI_RungSat211.jpg
CSVN_AAR_AI_AI_RungSat211.jpg (35.75 KiB) Viewed 764 times

No more, that's it. I have what I have:

CSVN_AAR_AI_AI_RungSat212.jpg
CSVN_AAR_AI_AI_RungSat212.jpg (3.26 MiB) Viewed 764 times

In the screenshot:
  • VNA Side A held objectives circled in green.
  • BXA Side B held objectives circled in yellow.
  • BXA Supply sources/units circled in blue.
  • Other BXA units yellow counters (not circled).
No sign of the enemy yet.

For a more detailed description of BXA Side B forces, see the early posts in this thread. Most especially, see the map here

https://www.matrixgames.com/forums/view ... 2#p5003352

to get a better general idea of our force disposition. (Since Turn 1 BXA supply reinforcements are placed semi-randomly around the map, what you see in that earlier screenshot will differ somewhat from our current force placements.)
Campaign Series Legion https://cslegion.com/
Campaign Series Lead Coder https://www.matrixgames.com/forums/view ... hp?f=10167
Panzer Campaigns, Panzer Battles Lead Coder https://wargameds.com
User avatar
berto
Posts: 21461
Joined: Wed Mar 13, 2002 1:15 am
Location: metro Chicago, Illinois, USA
Contact:

Re: Forest of Assassins - Battle of Rung Sat - 9/21/55 - AAR (AI vs. AI)

Post by berto »

TURN #1

In the VNA Side A phase, lots of unit sounds, all enemy no shows.

In the BXA Side B phase, not knowing (pretending not to know) where the enemy are (I presume they are attacking generally from the northwest), I mostly leave my ground forces in place. Wait and see.

Using this

https://www.matrixgames.com/forums/view ... 6#p5062589

new feature, I globally set all OpFireLimits to Short range.

I also redeploy some junks and sampans closer to the BXA force concentrations. Let's get them better positioned and ready to ferry some ground units.
Campaign Series Legion https://cslegion.com/
Campaign Series Lead Coder https://www.matrixgames.com/forums/view ... hp?f=10167
Panzer Campaigns, Panzer Battles Lead Coder https://wargameds.com
User avatar
berto
Posts: 21461
Joined: Wed Mar 13, 2002 1:15 am
Location: metro Chicago, Illinois, USA
Contact:

Re: Forest of Assassins - Battle of Rung Sat - 9/21/55 - AAR (AI vs. AI)

Post by berto »

TURN #2

In the VNA Side A phase, lots more enemy unit sounds, still no shows.

By the sounds of it, VNA riverine transports are on the move. From the map Center on Action, also the unit sounds, I infer some paradrops to the northwest (green ellipse, screenshot following), between Xom Ong Keo (off screen to the north) and the Song Long Tau.

In the BXA Side B phase:

CSVN_AAR_AI_AI_RungSat213.jpg
CSVN_AAR_AI_AI_RungSat213.jpg (4.31 MiB) Viewed 750 times

At Xom Ba Bong (off screen to the northeast), I entruck the C3/1st/3rd Rifle Company and send them along the road to the west.

In the center, the C3/1st/1st Rifle Company (upper white circle) marches towards the sounds of enemy action thought to be westward.

Near the Nga Ba Dong Tranh, the RCLR (middle white circle) moves into the Military Post at river's edge.

To the south, elements of the 1st/5th Rifle Company (lower white circle) stir to action. We assume also that VNA forces at the Military Posts (green circles) along the Song Nha Be are on the move.

In all of these redeployments, bear in mind the tangled mess of rivers hindering ground movement throughout the Rung Sat Swamp. Map Hints are toggled ON to show this more clearly.

With the Reac[H]able hexes highlight (turquoise hex outlines) toggled ON, I continue to reposition the junks and sampans (circled in yellow) to more central locations. These will be vital for ferrying our forces across otherwise uncrossable rivers.

Patiently awaiting the VNA to reveal themselves.
Campaign Series Legion https://cslegion.com/
Campaign Series Lead Coder https://www.matrixgames.com/forums/view ... hp?f=10167
Panzer Campaigns, Panzer Battles Lead Coder https://wargameds.com
User avatar
berto
Posts: 21461
Joined: Wed Mar 13, 2002 1:15 am
Location: metro Chicago, Illinois, USA
Contact:

Re: Forest of Assassins - Battle of Rung Sat - 9/21/55 - AAR (AI vs. AI)

Post by berto »

TURN #3

We observe some enemy paradrops to the north, in the area east of Xom Ong Keo. On the ground, the VNA paratroopers remain concealed, however, due to Fog of War.

Some riverine sounds, then first real sighting:

CSVN_AAR_AI_AI_RungSat214.jpg
CSVN_AAR_AI_AI_RungSat214.jpg (1.7 MiB) Viewed 740 times

First blood!

With marines already coursing far down the Song Long Tau, and reports of paratroops dropping behind our lines to the north, the VNA enter our Rung Sat stronghold with an unexpected boldness.

By Side A phase's end, two more riverine units enter the water minefield. One passes through to the hex just beyond, the other triggers the mines but suffers no damage.

CSVN_AAR_AI_AI_RungSat215.jpg
CSVN_AAR_AI_AI_RungSat215.jpg (824.13 KiB) Viewed 740 times
Campaign Series Legion https://cslegion.com/
Campaign Series Lead Coder https://www.matrixgames.com/forums/view ... hp?f=10167
Panzer Campaigns, Panzer Battles Lead Coder https://wargameds.com
User avatar
berto
Posts: 21461
Joined: Wed Mar 13, 2002 1:15 am
Location: metro Chicago, Illinois, USA
Contact:

Re: Forest of Assassins - Battle of Rung Sat - 9/21/55 - AAR (AI vs. AI)

Post by berto »

At Side B (our side's) phase beginning, second enemy sighting:

CSVN_AAR_AI_AI_RungSat216.jpg
CSVN_AAR_AI_AI_RungSat216.jpg (2.63 MiB) Viewed 727 times

Earlier suspicions confirmed. The enemy has indeed paradropped behind our lines!

Not knowing where else the enemy might land; not knowing how bad this situation is about to get; I make some cautious moves towards the spotted enemy (green arrows):

CSVN_AAR_AI_AI_RungSat217.jpg
CSVN_AAR_AI_AI_RungSat217.jpg (2.27 MiB) Viewed 727 times

The rest of the 1st/3rd Battalion stays put for the time being.

Again, not knowing (feigning ignorance) of the enemy lines of attack, being generally unaware of the VNA's strength and capabilities, I largely leave the BXA central forces in place. Southward, however, I begin to marshal my forces, bringing together ground units and junks and sampans.

The situation at the end of the BXA Side B phase, with BXA river transports circled in yellow:

CSVN_AAR_AI_AI_RungSat218.jpg
CSVN_AAR_AI_AI_RungSat218.jpg (4.22 MiB) Viewed 727 times

We are not fully aware of the VNA's disposition, but we have good reason to believe they lack seaborne transport capabilities. It's also hard to imagine the VNA would paradrop forces far from their sources of supply. No, we are not unduly concerned about VNA attacks up from the South China Sea. It should be safe to draw some forces away from the south, keeping vital Objectives and main force HQs in that area well protected nevertheless.
Campaign Series Legion https://cslegion.com/
Campaign Series Lead Coder https://www.matrixgames.com/forums/view ... hp?f=10167
Panzer Campaigns, Panzer Battles Lead Coder https://wargameds.com
User avatar
berto
Posts: 21461
Joined: Wed Mar 13, 2002 1:15 am
Location: metro Chicago, Illinois, USA
Contact:

Re: Forest of Assassins - Battle of Rung Sat - 9/21/55 - AAR (AI vs. AI)

Post by berto »

TURN #4

In the VNA Side A phase, more paradrops up north, more riverine and ground force movement sounds. No combat.

At phase's end:

CSVN_AAR_AI_AI_RungSat219.jpg
CSVN_AAR_AI_AI_RungSat219.jpg (4.43 MiB) Viewed 717 times

VNA paratroop forces (upper green ellipse) coming into view east of Xom Ong Keo.

Waterborne VNA Marines amassing (green circle) at the Song Long Tau to the south.

The Fog of War is lifting.
Campaign Series Legion https://cslegion.com/
Campaign Series Lead Coder https://www.matrixgames.com/forums/view ... hp?f=10167
Panzer Campaigns, Panzer Battles Lead Coder https://wargameds.com
User avatar
berto
Posts: 21461
Joined: Wed Mar 13, 2002 1:15 am
Location: metro Chicago, Illinois, USA
Contact:

Re: Forest of Assassins - Battle of Rung Sat - 9/21/55 - AAR (AI vs. AI)

Post by berto »

In the BXA Side B phase, the C4/1st/3rd Dai Doi Hoa Luc MMG platoon at Xom Ong Keo fires at an approaching VNA MMG unit (magenta circle), scores an SP hit, and forces a retreat.

Elsewhere, BXA junks load up ground units and begin transporting them forward.

Here and there, I have several units start digging in.

The situation at the end of the BXA Side B phase, with BXA river transports circled in yellow:

CSVN_AAR_AI_AI_RungSat220.jpg
CSVN_AAR_AI_AI_RungSat220.jpg (4.24 MiB) Viewed 712 times
Campaign Series Legion https://cslegion.com/
Campaign Series Lead Coder https://www.matrixgames.com/forums/view ... hp?f=10167
Panzer Campaigns, Panzer Battles Lead Coder https://wargameds.com
User avatar
berto
Posts: 21461
Joined: Wed Mar 13, 2002 1:15 am
Location: metro Chicago, Illinois, USA
Contact:

Re: Forest of Assassins - Battle of Rung Sat - 9/21/55 - AAR (AI vs. AI)

Post by berto »

TURN #5

In the VNA Side A phase, VNA paratroopers continue to land generally east of Xom Ong Keo (large green ellipse, screenshot below).

To the south, VNA riverines pass by the BXA Military Post unhindered. Why? Their passage:

CSVN_AAR_AI_AI_RungSat221.jpg
CSVN_AAR_AI_AI_RungSat221.jpg (616.88 KiB) Viewed 693 times

By luck of the SAI, the VNA riverines course two or more hexes distant (green arrows) from the Military Post (yellow circle). But I had globally set all BXA OpFireLimits to Short range, remember?

https://www.matrixgames.com/forums/view ... 8#p5063738

Medium or Long range would have the BXA RCLR opfiring at the passing riverines. But they don't opfire, because restricted to a Short range of one hex only. Oops! A missed opportunity (fire). I will have to correct that.

The situation at VNA Side A phase's end:

CSVN_AAR_AI_AI_RungSat222.jpg
CSVN_AAR_AI_AI_RungSat222.jpg (4.27 MiB) Viewed 693 times
Campaign Series Legion https://cslegion.com/
Campaign Series Lead Coder https://www.matrixgames.com/forums/view ... hp?f=10167
Panzer Campaigns, Panzer Battles Lead Coder https://wargameds.com
User avatar
berto
Posts: 21461
Joined: Wed Mar 13, 2002 1:15 am
Location: metro Chicago, Illinois, USA
Contact:

Re: Forest of Assassins - Battle of Rung Sat - 9/21/55 - AAR (AI vs. AI)

Post by berto »

In the BXA Side B phase, to the north, I move up forces (green arrows) around the VNA paratroop landings. The C2/1st/3rd Rifle Company at Xom Ong Keo continues to dig in. Our MMG unit there fires across the paddies at the nearest enemy but without apparent effect.

CSVN_AAR_AI_AI_RungSat223.jpg
CSVN_AAR_AI_AI_RungSat223.jpg (1.19 MiB) Viewed 669 times

In the center, BXA forces move (green arrows) in the direction where we expect the action will soon be.

CSVN_AAR_AI_AI_RungSat224.jpg
CSVN_AAR_AI_AI_RungSat224.jpg (1.14 MiB) Viewed 669 times

At the Military Post, the BXA RCLR unit fires at the VNA riverine nearby but to no effect. Did we remember to adjust to Medium range the OpFireLimit of that RCLR, also several other similarly situated units? Yes we did!

CSVN_AAR_AI_AI_RungSat225.jpg
CSVN_AAR_AI_AI_RungSat225.jpg (133.6 KiB) Viewed 669 times

To the south (not shown), BXA forces move to reinforce the center.

The situation at the end of the BXA Side B phase, with BXA river transports circled in yellow:

CSVN_AAR_AI_AI_RungSat226.jpg
CSVN_AAR_AI_AI_RungSat226.jpg (3.44 MiB) Viewed 669 times
Campaign Series Legion https://cslegion.com/
Campaign Series Lead Coder https://www.matrixgames.com/forums/view ... hp?f=10167
Panzer Campaigns, Panzer Battles Lead Coder https://wargameds.com
User avatar
berto
Posts: 21461
Joined: Wed Mar 13, 2002 1:15 am
Location: metro Chicago, Illinois, USA
Contact:

Re: Forest of Assassins - Battle of Rung Sat - 9/21/55 - AAR (AI vs. AI)

Post by berto »

TURN #6

In the VNA Side A phase, in preparation for attack, VNA paratroopers draw near to Xom Ong Keo. We opportunity fire back.

CSVN_AAR_AI_AI_RungSat227.jpg
CSVN_AAR_AI_AI_RungSat227.jpg (4.18 MiB) Viewed 650 times

Things are starting to heat up.

To the south, VNA riverines adjacent to the Military Post also induce opfire

CSVN_AAR_AI_AI_RungSat228.jpg
CSVN_AAR_AI_AI_RungSat228.jpg (496.65 KiB) Viewed 650 times

Other riverines pass by the Military Post opfire free at two hexes distant. The VNA marines have enjoyed the best of luck thus far.
Campaign Series Legion https://cslegion.com/
Campaign Series Lead Coder https://www.matrixgames.com/forums/view ... hp?f=10167
Panzer Campaigns, Panzer Battles Lead Coder https://wargameds.com
User avatar
berto
Posts: 21461
Joined: Wed Mar 13, 2002 1:15 am
Location: metro Chicago, Illinois, USA
Contact:

Re: Forest of Assassins - Battle of Rung Sat - 9/21/55 - AAR (AI vs. AI)

Post by berto »

In the BXA Side B phase, to the north, I move (green arrows) the Tham Bao Recon Company closer to Xom Ong Keo, being careful to keep them hidden from the VNA.

At Xom Ong Keo, the C4/1st/3ed Dai Doi Hoa Luc MMGs fire, with Low Ammo, at the adjacent VNA. Maybe for that reason, the fire is without effect.

Also from the same hex, the Dac Cong Engineers fire at the enemy (magenta circle). Although the Damage Results report "Unknown effects vs. unknown units", as the dialog opens, I notice the Strength indicator of the topmost enemy unit drops from 4 down to 2. "Unknown effects" no longer unknown!

CSVN_AAR_AI_AI_RungSat229.jpg
CSVN_AAR_AI_AI_RungSat229.jpg (2.16 MiB) Viewed 635 times

A couple of kilometers southeast of Xom Ong Keo, BXA units advance cautiously to swamp's edge.

CSVN_AAR_AI_AI_RungSat230.jpg
CSVN_AAR_AI_AI_RungSat230.jpg (1021.04 KiB) Viewed 635 times

With Concealment Modifiers toggled ON (; hotkey), you can see where the Swamp hexes are set at -3 Concealment. Those units are well concealed. Even better concealed are the units a kilometer northwest of Xom Ong Keo. There the Light Jungle is also set to -3 Concealment. Behind such terrain, those units have zero chance of being spotted by the enemy. The VNA paratroopers are in for a surprise!

At the Military Post on the Song Long Tau, the BXA RCLR direct fires twice at the passing VNA riverines. Again no hits. The VNA marines' good luck continues!

The situation at the end of the BXA Side B phase, with BXA river transports circled in yellow:

CSVN_AAR_AI_AI_RungSat231.jpg
CSVN_AAR_AI_AI_RungSat231.jpg (3.48 MiB) Viewed 635 times
Campaign Series Legion https://cslegion.com/
Campaign Series Lead Coder https://www.matrixgames.com/forums/view ... hp?f=10167
Panzer Campaigns, Panzer Battles Lead Coder https://wargameds.com
User avatar
berto
Posts: 21461
Joined: Wed Mar 13, 2002 1:15 am
Location: metro Chicago, Illinois, USA
Contact:

Re: Forest of Assassins - Battle of Rung Sat - 9/21/55 - AAR (AI vs. AI)

Post by berto »

TURN #7

In the VNA Side A phase, VNA paratroopers attack to the east. Good thing I chose to defend that road junction.

CSVN_AAR_AI_AI_RungSat232.jpg
CSVN_AAR_AI_AI_RungSat232.jpg (451.82 KiB) Viewed 627 times

At Xom Ong Keo, VNA paratroopers direct fire at our troops in the village, then move to flank our defenses. An assault (turquoise circles) from the southeast goes badly for the enemy.

CSVN_AAR_AI_AI_RungSat233.jpg
CSVN_AAR_AI_AI_RungSat233.jpg (1006.75 KiB) Viewed 627 times

Avoiding naval mines at a bend in the Nga Ba Dong Tranh, the VNA marines are again blessed with good fortune.

CSVN_AAR_AI_AI_RungSat234.jpg
CSVN_AAR_AI_AI_RungSat234.jpg (1.53 MiB) Viewed 627 times
Campaign Series Legion https://cslegion.com/
Campaign Series Lead Coder https://www.matrixgames.com/forums/view ... hp?f=10167
Panzer Campaigns, Panzer Battles Lead Coder https://wargameds.com
User avatar
berto
Posts: 21461
Joined: Wed Mar 13, 2002 1:15 am
Location: metro Chicago, Illinois, USA
Contact:

Re: Forest of Assassins - Battle of Rung Sat - 9/21/55 - AAR (AI vs. AI)

Post by berto »

In the BXA Side B phase, in the northern sector:

CSVN_AAR_AI_AI_RungSat235.jpg
CSVN_AAR_AI_AI_RungSat235.jpg (2.67 MiB) Viewed 611 times

A couple kilometers west of the Military Post, the BXA C3/1st/3rd Rifle Company fires at VNA paratroopers (magenta circle) across the Suoi Nhum Minor River (MR), with the result: "Unknown effects vs. unknown units". Watching closely, IIRC, I think that reduces the enemy unit's from 6 SPs down to 5.

To the west, at Xom Ong Keo, the 1st/3rd Battalion's Dac Cong engineers fire twice at the VNA paratroopers (magenta circle) outside the town stone wall (SN). More "Unknown effects vs. unknown units", but from careful observation I see the target unit's SPs reduce from 6 down to 2. 4 SP hits. Yes!

BXA units to the left and right of the Dac Cong also direct fire across the town stone wall but without observed effect. Possibly because half of our units at Xom Ong Keo are by now at Low Ammo.

The two BXA units southeast of Xom Ong Keo: Should they (lower yellow circles) advance to defend OBJECTIVES[15] (yellow box)? If they advance to OBJECTIVES[15], that moves them farther away from their sources of supply. It is also easy to foresee that, thereby surrounded by enemy units to the west, north and east, they might easily be overwhelmed. No, for now, I decide to leave them be.

So too the Tham Bao Recon Company northwest of Xom Ong Keo. Let them continue to lurk.

In the central sector:

CSVN_AAR_AI_AI_RungSat236.jpg
CSVN_AAR_AI_AI_RungSat236.jpg (2.47 MiB) Viewed 611 times

The BXA RCLR at the western Military Post fires without effect at the VNA riverines in the middle of the Song Long Tau. The riverines fire back, also without effect. The RCLR fires and misses a second time. (Not to forget the misses in earlier turns.) Bad weaponry? Insufficient training? Near sightedness, or maybe cross eyed? Whatever. Useless, that RCLR.

To the east of the Rach Muoi (large yellow ellipse), the BXA sniper vacates the bunker there and moves down (green arrows) to defend the unprotected Supply Cache. The C3/1st/1st Battalion's 2nd Platoon enters the bunker.

The C2/1st/1st's 3rd Rifle Platoon (center yellow circle) remains on the Junks, ready to offload to defend the MMGs and bunkers at either side of the Song Dong Tranh.

To the right of the eastern Military Post at Ap Do Hop, the C2/1st/2nd Rifle Company sloshes through the swamps (green arrows), positioning itself to help defend Ap Do Hop and the Military Post, and/or to help safeguard the Supply Cache a kilometer to the north.

What are the VNA marines up to? Where will they offload? What are their objectives?
Campaign Series Legion https://cslegion.com/
Campaign Series Lead Coder https://www.matrixgames.com/forums/view ... hp?f=10167
Panzer Campaigns, Panzer Battles Lead Coder https://wargameds.com
User avatar
berto
Posts: 21461
Joined: Wed Mar 13, 2002 1:15 am
Location: metro Chicago, Illinois, USA
Contact:

Re: Forest of Assassins - Battle of Rung Sat - 9/21/55 - AAR (AI vs. AI)

Post by berto »

TURN #8

In the VNA Side A phase, VNA paratroopers assault Xom Ong Keo without success:

CSVN_AAR_AI_AI_RungSat237.jpg
CSVN_AAR_AI_AI_RungSat237.jpg (458.16 KiB) Viewed 730 times

In the center, BXA mortars opfire twice at approaching enemy riverines:

CSVN_AAR_AI_AI_RungSat238.jpg
CSVN_AAR_AI_AI_RungSat238.jpg (379.06 KiB) Viewed 730 times

Other riverines activate water mines and suffer 1 SP hit and a disruption:

CSVN_AAR_AI_AI_RungSat239.jpg
CSVN_AAR_AI_AI_RungSat239.jpg (279.65 KiB) Viewed 730 times

Across the river, three VNA river transports have off-loaded their passengers:

CSVN_AAR_AI_AI_RungSat240.jpg
CSVN_AAR_AI_AI_RungSat240.jpg (925.31 KiB) Viewed 730 times
Campaign Series Legion https://cslegion.com/
Campaign Series Lead Coder https://www.matrixgames.com/forums/view ... hp?f=10167
Panzer Campaigns, Panzer Battles Lead Coder https://wargameds.com
Post Reply

Return to “After Action Report”