Author Topic: In-Game Scenario Editor  (Read 225 times)

Offline Sirbomber

  • Hero Member
  • *****
  • Posts: 3214
In-Game Scenario Editor
« on: November 05, 2020, 09:53:56 PM »
The barrier to mission development is pretty high, but here's something I'm hoping will lower it just a bit.  I've created an in-game scenario editor, available in both Colony Game and 6-player Last One Standing flavors.  You start with an empty tutorial.map, but using chat commands you can change the current terrain file, spawn units, structures, and mining beacons, change disaster settings, or even disable the editor and start a standard LOS game.  There is, of course, a command to generate C++ code that can be copied into a level's source code to recreate the current unit setup.  But this isn't just a tool for the technically-inclined among us.  You can also generate a command list that the editor can read in again later to recreate the unit setup in-game, that even works in multiplayer!

I've attached the colony game and multiplayer versions of the map, as well as a sample script file.  Load the Editor in multiplayer and have the host enter these commands to give it a try!
Code: [Select]
/changemap mp3_02.map
/load sample1v1.txt
/startLOS

And here's a full command list, along with a list of (required) and [optional] arguments:
Code: [Select]
Command list (all commands and arguments are case-sensitive):      /save                                                -- Generate code for the current setup on the local player's machine.  Does nothing for remote clients.
      /load (PreviousOutputFileName.txt)                -- Loads a script file previously generated by the /save command.  Only the host may use this command.
                                                           This works by generating fake chat command packets from the host which contain spawning instructions.
                                                           Since the game can only process so many command packets per cycle, this may take awhile to fully load complex setups.
      /cpp                                                -- Generate C++ code for the current setup on the local player's machine.  Does nothing for remote clients.
      /python                                            -- Generate a Python script for the current setup on the local player's machine.  Does nothing for remote clients. (not implemented)
      /dc (disType) (chance)                            -- Sets the chance for the designated disaster (quake, storm, vortex, or meteor).  Disasters won't start spawning until /startLOS has been used.
      /eden                                                -- Sets the source player to Eden
      /plymouth                                            -- Sets the source player to Plymouth
      /setplayer (0-6)                                    -- Changes the local player ID to the specified number.  Allows you to take control of other players.  Seems to work in multiplayer, but you can't take control of other humans.
      /common (x) (y) [yield] [variant]                    -- Spawn a common ore mine at the passed-in coordinates.  Yield and variant should both be between 0 (high/3bar) and 2 (low/1bar).
      /rare (x) (y) [yield] [variant]                    -- Spawn a rare ore mine at the passed-in coordinates.  Yield and variant should both be between 0 (high/3bar) and 2 (low/1bar).
      /fumarole (x) (y)                                    -- Spawn a fumarole at the passed-in coordinates.
      /magmavent (x) (y)                                -- Spawn a magma vent at the passed-in coordinates.
      /clear                                            -- Erases all units on the map.  Requires confirmation.  Attempting to delete mining beacons may crash OP2.
      /changemap (mapname.map)                            -- Loads the terrain of the specified map.  Cannot be used if any units currently exist on the map.  Only the host may use this command.
      /spawn (Unit) (owner) (x) (y) [cargo] [amount]    -- Spawns the designated unit, optionally carrying the designated cargo, at the specified coordinates for the source player.
                                                            You will not be allowed to give units "illegal" cargo (no ConVecs carrying Tigers, no Tigers armed with Command Centers, etc.).
                                                            Amount is optional and only applies to Cargo Trucks.  Default is 1000 for resources, "Tiger Speed Upgrade" for wreckage, and EDWARD Satellite for starship components.
                                                            Location is not checked before spawning, so you may get odd results if you do something the game doesn't expect!
                                                            Valid options for Unit (and Cargo for ConVecs, as appropriate):
                                                             - CargoTruck
                                                             - ConVec
                                                             - Spider
                                                             - Scorpion
                                                             - Lynx
                                                             - Panther
                                                             - Tiger
                                                             - RoboSurveyor
                                                             - RoboMiner
                                                             - GeoCon
                                                              - Scout
                                                              - RoboDozer
                                                              - EvacuationTransport
                                                              - RepairVehicle
                                                              - Earthworker
                                                              - CommonOreMine
                                                              - RareOreMine
                                                              - GuardPost
                                                              - LightTower
                                                              - CommonStorage
                                                              - RareStorage
                                                              - Forum
                                                              - CommandCenter
                                                             - MHDGenerator
                                                             - Residence
                                                             - RobotCommand
                                                             - TradeCenter
                                                             - BasicLab
                                                             - MedicalCenter
                                                             - Nursery
                                                             - SolarPowerArray
                                                             - RecreationFacility
                                                             - University
                                                             - Agridome
                                                             - DIRT
                                                             - Garage
                                                             - MagmaWell
                                                             - MeteorDefense
                                                             - GeothermalPlant
                                                             - ArachnidFactory
                                                             - ConsumerFactory
                                                             - StructureFactory
                                                             - VehicleFactory
                                                             - StandardLab
                                                             - AdvancedLab
                                                             - Observatory
                                                             - ReinforcedResidence
                                                             - AdvancedResidence
                                                             - CommonOreSmelter
                                                             - Spaceport
                                                             - RareOreSmelter
                                                             - GORF
                                                             - Tokamak
                                                        Valid options for weapons:
                                                             - AcidCloud
                                                             - EMP
                                                             - Laser
                                                             - Microwave
                                                             - RailGun
                                                             - RPG
                                                             - Starflare
                                                             - Supernova
                                                             - ESG
                                                             - Stickyfoam
                                                             - ThorsHammer
                                                        Valid options for Cargo Truck cargo:
                                                             - Food
                                                             - CommonOre
                                                             - RareOre
                                                             - CommonMetal
                                                             - RareMetal
                                                             - CommonRubble
                                                             - RareRubble
                                                             - Spaceport (starship components and satellites - only use values 88 - 104, inclusive, when passing in an amount!)
                                                             - Garbage (wreckage - amount corresponds to tech ID - invalid tech IDs will crash!)
    /setres (resource type) (amount)                    -- Gives the source player the specified quantity of the specified resources.
                                                            Valid options for resource type:
                                                             - common
                                                             - rare
                                                             - food
                                                             - kids
                                                             - workers
                                                             - scientists
    /startLOS [keep resources]                            -- Gives all players default starting resources and creates default Last One Standing victory/defeat conditions.  Only the host may use this command.
                                                           Passing in 1 for the keep resources parameter will override the default LOS resources setting.
                                                           Using this command disables all other commands aside from /save, /cpp, and /python.
                                                           Important note!  The standard LOS victory check is hardcoded to ignore AI players, so attempting a human vs CPU match will instantly end the mission after using this command.
"As usual, colonist opinion is split between those who think the plague is a good idea, and those who are dying from it." - Outpost Evening Star

Outpost 2 Coding 101 Tutorials

Offline leeor_net

  • Administrator
  • Hero Member
  • *****
  • Posts: 2287
  • OPHD Lead Developer
    • LairWorks Entertainment
Re: In-Game Scenario Editor
« Reply #1 on: November 06, 2020, 08:34:58 AM »
This is pretty sweet! I'll have to check it out.

Offline Sirbomber

  • Hero Member
  • *****
  • Posts: 3214
Re: In-Game Scenario Editor
« Reply #2 on: November 06, 2020, 10:14:39 AM »
I posted incomplete documentation; these commands allow you to set up extremely basic AI opponents:
Code: [Select]
AI commands - these will all fail if used on an active human player.
    /ai mining (playerNo) (x1) (y1) (x2) (y2)        - Searches for existing common/rare ore mines and smelters within the specified area and sets up ore-hauling behavior.
                                                      Will fail if more than 1 mine of the same type exists within the specified area.
                                                      AI cannot currently build up its own mines and smelters; they must be pre-placed.
    /ai defenders (playerNo) (x1) (y1) (x2) (y2)    - Searches for combat units within the specified area and sets them up to automatically defend that area.
                                                      Due to internal limitations, only the first 32 units found will be added to the group.
    /ai reinforce (playerNo)                        - Searches for Vehicle Factories owned by the specified and sets them up to rebuild destroyed units from
                                                      any existing ore-hauling or defense unit groups.  This command should be called after all such groups
                                                      have already been defined.
"As usual, colonist opinion is split between those who think the plague is a good idea, and those who are dying from it." - Outpost Evening Star

Outpost 2 Coding 101 Tutorials

Offline Hooman

  • Administrator
  • Hero Member
  • *****
  • Posts: 4929
Re: In-Game Scenario Editor
« Reply #3 on: November 06, 2020, 01:43:24 PM »
Hey, neat

Offline tigerstorms

  • Newbie
  • *
  • Posts: 8
Re: In-Game Scenario Editor
« Reply #4 on: November 06, 2020, 01:53:36 PM »
this is awesome, thank you for your hard work.