Page 1 of 2

Lua in Command tutorial 1

Posted: Sat Nov 22, 2014 12:59 pm
by Tomcat84
edit: the attached scenario uses an old DB that does not work on current versions. See this post #27 further in this thread to download a file with an updated DB that works in CMO

Hey all,

I've made a tutorial in closed beta showcasing some of the basic new Lua functionality that the next patch will bring to Command. Although the patch is not out yet (and as such you cannot do anything yet with the attached scenarios in your public build), I asked the Devs and they thought it might be nice to already publish it so you guys can get a sneak preview of some of the upcoming functionality and start thinking of ideas on its usage.

The functionality mostly applies to scenario designers as it gives more tools to build an interesting AI opponent. So if you only play scenarios and dont build any you might find it less interesting, but still, you could get an idea of what you can face in future scenarios [:)]

Note that there are two bugs in this video that are already fixed, one being that in a certain script the Inherit function only worked if typed in all caps INHERIT. That is since fixed.

The other is that AddSubmarine actually added a surface ship! Also already fixed.

You can find the video tutorial HERE


The scripts used in this tutorial are:

ScenEdit_AddShip('Blue', 'USS Kidd', 960, 'DEG', 'N38.50.15', 'E6.50.00')
Adds a Ship with Database 960 (a version of the Kidd class) to the Blue side as USS Kidd at the included location

ScenEdit_SetEMCON('Side', 'Blue', 'Radar=Active')
Changes the Blue Side's radar setting to Active side wide

ScenEdit_SetEMCON('Unit', 'USS Ticonderoga', 'Radar=Passive;Sonar=Active')
Changes the unit named USS Ticonderoga Emcon to radar Passive, sonar Active

ScenEdit_AssignUnitToMission('USS Kidd', 'Transit')
Assigns the unit named USS Kidd to the mission named Transit

ScenEdit_SetEMCON('Mission', 'Transit', 'Inherit;Radar=Active')
First clears the mission Transit Emcon setting to current side settings to get a fresh start, then modifies radar to Active

ScenEdit_SetSidePosture('Blue', 'Red', 'H')
Sets the Blue side posture towards Red as hostile i.e. Blue now considers Red hostile and will engage Red units. Red still thinks everything is just fine (i.e. sees blue as neutral)

ScenEdit_SetSidePosture('Friends', 'Blue', 'N')
Sets the Friends' posture towards Blue to neutral. So No change to what Blue thinks but Friends now think Blue are just neutral and not friends anymore. Blue loses information that it previously got from Friends.

ScenEdit_SetWeather(10, 5, 0.3, 2)
Changes the weather to average temperature 10 degrees C, rainfall rate 5 (out of 50), clouds 0.3 (out of 1.0) and sea state 2 (out of 9)

ScenEdit_AddFacility('Blue', 'Base', 1592, 69, 'DEG', 'N39.18.25', 'E8.40.45')
Adds a certain single unit airfield with orientation 069 degrees

ScenEdit_AddSubmarine('Blue', 'USS Dallas', 533, 'DEG', 'N38.45.54', 'E6.43.22')
Adds a submarine at location

ScenEdit_AddAircraft('Blue', 'Viper #1', 3833, 19355, 'DEG', 'N38.20.30', 'E5.31.00')
Adds an F-16 at location with specific loadout

ScenEdit_AssignUnitToMission('USS Kidd', 'none')
Unassigns the USS Kidd from any mission



You can also find some info on how the scripts work on Baloogan's site: http://wiki.baloogancampaign.com/index.php/CommandLua

I hope you enjoy this tutorial and find it useful, and appreciate the sneak peek. Meanwhile I am working on a part 2 that will not just show the functions, but show how to implement them in a fully functioning scenario and give you an idea of what you can usefully do with it to make a more interesting AI.

Other than that let it also be noted that more Lua improvements are in the works, either for the next patch or the one that will come after. When they do show up I plan to provide additional tutorials to cover it.

Lastly let me note again for now that the attached scenarios are NOT COMPATIBLE with your current public build. You'll have to wait :)

But once you have it, you'll find there is one base scenario that the tutorial starts with, and one completed one that has everything setup and which you can reference in case something doesn't work, or to hit play and see in three minutes what happens.

The video features time links to the parts that cover specific scripts in the description (hit show more) in case my excessive talking bores you [:'(].

Let me know what you think! [:)]




RE: Lua in Command tutorial 1

Posted: Sat Nov 22, 2014 1:23 pm
by Meroka37
Thanks for the work.

RE: Lua in Command tutorial 1

Posted: Sat Nov 22, 2014 3:00 pm
by Randomizer
I'll bite; what's a Lua?

-C

RE: Lua in Command tutorial 1

Posted: Sat Nov 22, 2014 4:25 pm
by warshipbuilder
I think it is some kind of programming language.

RE: Lua in Command tutorial 1

Posted: Sat Nov 22, 2014 4:37 pm
by Randomizer
Ah, seen. Cannot say that I'm a huge fan of posting feature tutorials in advance of the update containing those features but thanks anyway.

-C

RE: Lua in Command tutorial 1

Posted: Sat Nov 22, 2014 9:45 pm
by Vici Supreme
Doesn't looks too complicated. Major thanks to you and the devs! (Especially for including the E-3G I spotted there [:D])

Supreme

RE: Lua in Command tutorial 1

Posted: Sat Nov 22, 2014 10:33 pm
by nogravity
I see a great potential to improve the AI. Units can now have different behavior based on the status of the game. For example, the AI side can starts off the game with 30% of aircraft in reserve. If their side is losing (number of air units loss reaches certain level), more reserve units can be re-assigned to defensive mission. Or if their side is winning, the reserve aircraft can be assigned to offensive missions.

That can create a very flexible and dynamic AI actions.

Thanks

RE: Lua in Command tutorial 1

Posted: Sat Nov 22, 2014 11:32 pm
by Mgellis
This looks very cool. I am very eager to try out these new options. Any estimates on when the new patch/public beta will be released? A week? Two weeks?


RE: Lua in Command tutorial 1

Posted: Sun Nov 23, 2014 7:54 am
by DeSade
thank you, looks great :) I have few questions:

1. What is difference between ScenEdit_AddAircraft (ship, sub) and ScenEdit_AddUnit? Later looks more generalized with more options (heading, altitude)
2. I understand that scope of variables is local to action, so you cannot assign value in one event and use it in another, am I correct? But it could be done by ScenEdit_SetKeyValue/ScenEdit_GetKeyValue?
3. is it possible to access data regarding existing units/ref points, for example:
unit = ScenEdit_SetUnit({side="United States", name="USS Test"})
print(unit.lat,unit.lon)

anyway, i'm very impatient to try it myself :)

RE: Lua in Command tutorial 1

Posted: Sun Nov 23, 2014 8:10 am
by Tomcat84
The options on baloogan's site not covered in my video were actually just added yesterday so I still have to figure those out myself haha. But yeah it looks like addunit will be a more general option that encompasses all types.

RE: Lua in Command tutorial 1

Posted: Sun Nov 23, 2014 12:09 pm
by ClaudeJ
Along many other use, that will make template creation mucho easier, thanks a lot!

RE: Lua in Command tutorial 1

Posted: Sun Nov 23, 2014 12:13 pm
by mikmykWS
ORIGINAL: Mgellis

This looks very cool. I am very eager to try out these new options. Any estimates on when the new patch/public beta will be released? A week? Two weeks?


Early December most likely Mark. We dropped this on our publisher's poor production folks right in the middle of their busy season so need some time.
Thanks!

MIke

RE: Lua in Command tutorial 1

Posted: Sun Nov 23, 2014 1:34 pm
by Mgellis
ORIGINAL: mikmyk


Early December most likely Mark. We dropped this on our publisher's poor production folks right in the middle of their busy season so need some time.
Thanks!

MIke

Thanks, Mike. Just wanted to get a general idea of the timeline. I'm already brainstorming how to take advantage of the new scripting options.

I'm guessing that, since you can set up events with a percent probability, all of these scripted actions can be set up to only happen some of the time. For example, I could add a weather action where you get a really vicious storm, and it is triggered at a certain point of time, but there is only a 20% chance of it actually happening.

Looks like you can...

* Change the weather
* Change a side's posture
* Add a unit
* Assign a unit to a mission (which I guess will automatically delete it from any other mission)
* Change EMCON for a unit, mission, side, etc.

Any others? For example, can you modify other aspects of ROEs too or is that something coming in the future?

Thanks again to the developers for all your work on this. This game just keeps getting better and better.


RE: Lua in Command tutorial 1

Posted: Sun Nov 23, 2014 3:41 pm
by Meroka37
erased

RE: Lua in Command tutorial 1

Posted: Sun Nov 23, 2014 4:39 pm
by Mgellis
ORIGINAL: Mgellis

Looks like you can...

* Change the weather
* Change a side's posture
* Add a unit
* Assign a unit to a mission (which I guess will automatically delete it from any other mission)
* Change EMCON for a unit, mission, side, etc.

Among other things, this lets you model seizures a lot more easily...

* Trigger <-- remain within one mile of a smuggler, using reference points made relative to the smuggler's ship to define the area, for more than 30 minutes (this lets you model a boarding action)

* Action <-- change posture of side:smuggler1 to friendly (because your boarding party is now running things)

* Action <-- assign unit:smuggler1 to new mission (perhaps a support mission with one or two reference points that represent a holding area at a friendly port)

* Action <-- award points to side:USCG

Smuggler1, having been boarded, will now change its posture, so you know where it is at all times, and will be on its way to a friendly port where it will eventually be put up for auction

In the same way, one can design missions where one can chase off people violating territorial waters...if you get close enough for long enough, they drop whatever mission they were on (e.g., patrol:sea control) and are assigned to a new mission that takes them out of the area. You can even set up the scenario where you will get more points for finding a non-violent way to solve a problem than you get for just sinking people.

RE: Lua in Command tutorial 1

Posted: Sun Nov 23, 2014 8:09 pm
by SpacePope
ORIGINAL: Randomizer

I'll bite; what's a Lua?

-C
Lua's a scripting language that's embedded in a ton of applications. Obviously for CMANO, it would come with functions like the ones shown in the OP that let you create units with defined values, dictate the weather, etc.

RE: Lua in Command tutorial 1

Posted: Mon Nov 24, 2014 7:54 am
by ojms
Is it possible to use this to modify a platform, such as add sensors to an aircraft/ship? Especially as an modifications to aircraft don't stay once they land and launch again.

Thanks.

RE: Lua in Command tutorial 1

Posted: Tue Nov 25, 2014 5:01 pm
by Tomcat84
ORIGINAL: Supreme 2.0
(Especially for including the E-3G I spotted there )

Good eye [8D]

RE: Lua in Command tutorial 1

Posted: Tue Dec 09, 2014 10:47 am
by cf_dallas
ORIGINAL: Mgellis

Among other things, this lets you model seizures a lot more easily...

* Trigger <-- remain within one mile of a smuggler, using reference points made relative to the smuggler's ship to define the area, for more than 30 minutes (this lets you model a boarding action)

* Action <-- change posture of side:smuggler1 to friendly (because your boarding party is now running things)

* Action <-- assign unit:smuggler1 to new mission (perhaps a support mission with one or two reference points that represent a holding area at a friendly port)

* Action <-- award points to side:USCG

Smuggler1, having been boarded, will now change its posture, so you know where it is at all times, and will be on its way to a friendly port where it will eventually be put up for auction

In the same way, one can design missions where one can chase off people violating territorial waters...if you get close enough for long enough, they drop whatever mission they were on (e.g., patrol:sea control) and are assigned to a new mission that takes them out of the area. You can even set up the scenario where you will get more points for finding a non-violent way to solve a problem than you get for just sinking people.

I love the scenarios you cook up, and the creative ways you always use the tools the devs are giving us. Keep up the awesome work.

RE: Lua in Command tutorial 1

Posted: Fri Dec 26, 2014 11:05 pm
by Maromak
Thanks TC. Very helpful.