Browsed by
Month: June 2017

Pushing Through Cold War Scenario Creation Blocks

Pushing Through Cold War Scenario Creation Blocks

Oddly the most historically constraining time period for me to build wargame scenarios in is the Cold War. This is mostly due to the fact that the main protagonists, the US and USSR, were tied down in various proxy wars all over the place leaving little room for hypothetical conflicts to occur without deviating from the course of history too much.  There is also the ever looming spectre of WWIII in Europe followed by an apocalyptic nuclear war as well.  Finally, most of the key battles in this thematic trope have been done repetitively throughout modern wargaming history particular naval gaming.

This rigidity is definitely a product of my wargaming past but I don’t think I’m alone on this one so I’ve decided to walk through how to break most of the hangups.

First, consider that Cold War history had no scripted AI. It was largely reactive.  East and West definitely had larger strategies (rollback, containment, détente, insurgency etc.) but Truman and Stalin never pitched Afghanistan and Vietnam. It was the little things that happened along the way that led Khrushchev and Kennedy/Johnson there.  Your scenario themes and narratives should probably work the same way. Don’t think about the endgame think in the chunk of time you’re building in. It will open up options to you.

Next, consider that European colonialism came to an end during this time period replacing many governments which the Cold War protagonists were keen on recruiting as friendly powers. Could you imagine what the to-do lists of the KGB and CIA were like in 1960 when half of Africa suddenly had new governments? You could do a complete Twilight Struggle game on that alone! Not to mention all the old historical antagonisms that bubbled back up. The chances for deviations are significant; exploit that to build great scenarios and narratives.

There is a book called The Global Cold War by Odd Arne Westad that really wraps together Cold War history and strategy into the end of colonialism and birth of nationalism well.  You’ll need to stay caffeinated while reading but its brilliance is its focus on what was going on in the rest of the world during the Cold War rather than Europe.  You’ll learn a lot and your game will benefit from it.

Next, consider that considerable power projection each side had. The United States had the advantage early on thanks mostly to the logistics needs of WWII, however, the Soviet’s quickly gained in capabilities. The US was able to supply or deploy in strength to Korea, Lebanon, and then Vietnam. The Soviets conducted large airlifts to Angola and then Ethiopia in the 70’s.  These lifts could have happened anywhere and both sides had the resources and armaments to spare.  Do not let distance be a hang-up as it clearly wasn’t in history.

Now let’s address the elephant in the room, nuclear war. Despite all the conflicts that had gone on during the war the US and USSR never had one.  The closest they came was the Cuban Missile Crisis, the Yom Kippur War and a false alarm during the 80’s. It is safe to assume that if these events didn’t lead to an exchange of nukes it likely real life it wouldn’t in your scenarios. Although on second thought what if it did?  Does it really matter?

This brings us to our final point.

These are games and they are supposed to be fun. Fun is achieved by making sure the scenario has action, there are problems to solve and there is some narrative for a player to get sucked into or create. These elements should come before everything else including model, order of battle, historical and political accuracy.  On the entertainment side of things, it’s an art that is supported by the science.  The best scenarios you’ve ever played have these elements.  Walk through it and do it. It’ll make it more fun for you and your players.

Anyways this is what I got on this one. I hope it helps!

CMANO Fooling with Fuel

CMANO Fooling with Fuel

I want to post a few examples scripts for players who want to do some scripts based on fuel but also retain these so I remember them.

First let us do a getunit in lua and see what fuel data looks like. in this case we’ll look at an AIP submarine since it has multiple fuel types.

Code:

u =ScenEdit_GetUnit({side=’Blue’,name=’Son Won Il’})
print (u.fuel)

Results:

{ [4002] = { current = 12750, name = ‘AirIndepedent’, max = 12750 }, [4001] = { current = 6000, name = ‘Battery’, max = 6000 }, [3001] = { current = 90000, name = ‘DieselFuel’, max = 90000 } }

The results are written to a table {}. The [4002] are just numeric values that correspond to a fuel type which is then followed by values for current fuel, name and max fuel.

Good to know but perhaps a setter would be more useful!

In this next example, we’re designing a scenario where ships and aircraft are already at sea or in the air and we want their fuel states to reflect this with some randomness and definitely not be at full fuel at the start. We’ll add a couple print statements to show what we’ve done.

Code:

if ScenEdit_GetUnit({side=”Vietnam”, name=”HQ 182 Hanoi”}) ~= nil then
u=ScenEdit_SetUnit({side=”Vietnam”, name=”HQ 182 Hanoi”})
m=(u.fuel[4001].max)
c=(u.fuel[4001].current)
u=ScenEdit_SetUnit({side=”Vietnam”, name=”HQ 182 Hanoi”,fuel={{4001,(math.random(m*0.6))}}})
print(m)
print(c)
end

Results:

8000
3685

The first thing done is a defensive check to make sure the unit exists (not nil). If it does then the fuel is set to a random number using the random function who’s parameter is max value multiplied by .6. We then call a print to show the max diesel fuel (m) and then print the current fuel amount (3685). You can continuously run this script over and over in the console to change the fuel to random values.

Now let’s look at this from a slightly different angle. Let’s say you want an aircraft to RTB at a certain fuel value.

You can create an event with a regular time trigger and lua code action in the event editor.

Workflow:

  1. Create a regular time trigger. Regular time just means that the event will fire at the time interval specified. In this case, I’ll create one for a second.
  2. Create a lua action.

Code

u =ScenEdit_GetUnit({side=”Blue”,unitname=”Peg #1″})
f= (u.fuel[2001].current)
if f <= 80000 then ScenEdit_SetUnit({side=”Blue”,unitname=”Peg #1″,RTB=”true”})
end

This code just checks to see if current fuel is less than 80000 liters and then if so updates the unit to RTB.

3. Create a repeatable event with this action and trigger with event shown in log turned off.

Results:

Event fires every second checking to see if the current fuel value is equal or less than 80000. If it is it sets the aircraft to RTB. You could also set a defensive line to check for nil and RTB if you want the script to stop at a certain point.

Pretty Cool huh? Hope it helps!