Lua in Command tutorial 1
Moderator: MOD_Command
Lua in Command tutorial 1
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! [:)]
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! [:)]
- Attachments
-
- LuainCom..torial1.zip
- (24.69 KiB) Downloaded 210 times
RE: Lua in Command tutorial 1
Thanks for the work.
'Better honor without ships, than ships without honor"
- Randomizer
- Posts: 1497
- Joined: Sat Jun 28, 2008 8:31 pm
RE: Lua in Command tutorial 1
I'll bite; what's a Lua?
-C
-C
- warshipbuilder
- Posts: 2691
- Joined: Sat Feb 23, 2013 8:52 pm
- Location: C-eh-n-eh-d-eh
RE: Lua in Command tutorial 1
I think it is some kind of programming language.
warshipbuilder
Any ship can be a minesweeper, once.
ED/BTR Ressurection Project
https://www.bombercommandmuseumarchives.ca/
Any ship can be a minesweeper, once.
ED/BTR Ressurection Project
https://www.bombercommandmuseumarchives.ca/
- Randomizer
- Posts: 1497
- Joined: Sat Jun 28, 2008 8:31 pm
RE: Lua in Command tutorial 1
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
-C
-
- Posts: 559
- Joined: Wed Dec 04, 2013 6:06 pm
- Location: Southern Germany
RE: Lua in Command tutorial 1
Doesn't looks too complicated. Major thanks to you and the devs! (Especially for including the E-3G I spotted there [:D])
Supreme
Supreme
RE: Lua in Command tutorial 1
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
That can create a very flexible and dynamic AI actions.
Thanks
RE: Lua in Command tutorial 1
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
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
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
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
Along many other use, that will make template creation mucho easier, thanks a lot!
Intel(R) Core(TM) i7-3770 CPU @ 3.40GHz, NVIDIA GeForce GTX 1650 4 Go, Windows 10 64bits, 32 GB RAM, Regional settings = French, Belgium
(Previously known as JanMasters0n)
(Previously known as JanMasters0n)
RE: Lua in Command tutorial 1
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
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
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
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.ORIGINAL: Randomizer
I'll bite; what's a Lua?
-C
RE: Lua in Command tutorial 1
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.
Thanks.
RE: Lua in Command tutorial 1
ORIGINAL: Supreme 2.0
(Especially for including the E-3G I spotted there )
Good eye [8D]
RE: Lua in Command tutorial 1
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.
Formerly cwemyss