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!
/changemap mp3_02.map
/load sample1v1.txt
/startLOS
And here's a full command list, along with a list of (required) and [optional] arguments:
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.