Add new launcher scripts for all platforms.
This commit is contained in:
parent
5410acfbd3
commit
2037ad96ba
11
README.md
11
README.md
@ -5,27 +5,26 @@ This repository contains a bare development environment for creating a new mod/g
|
||||
### Creating a new mod
|
||||
|
||||
The `example` mod included in this repository provides the bare minimum structure to launch to the in-game main menu for the sole purpose of demonstrating the environment.
|
||||
It is not recommended or supported to use this as the basis of a new OpenRA mod.
|
||||
|
||||
Instead, you should copy one of the default OpenRA mods from `engine/mods/` to the `mods` subdirectory and make the following changes:
|
||||
It is not recommended or supported to use the `example` mod as the basis for a new OpenRA mod; you should instead adapt one of the official mods using the following procedure:
|
||||
* Delete the `mods/example` directory.
|
||||
* Choose one of the default OpenRA mods to use as a base for your mod. In this example we will assume you are copying `cnc`.
|
||||
* Choose a new internal name / id for you mod. In this example we will assume you are using `mynewmod`.
|
||||
* Copy `engine/mods/cnc` to `mods/mynewmod`.
|
||||
* Open `mods/mynewmod/mod.yaml` and make the following changes:
|
||||
* In the `Metadata` section set your mod title, version, and author.
|
||||
* In the `Metadata` section set your mod title and version.
|
||||
* In the `Packaging` section replace `$cnc: cnc` with `$mynewmod: mynewmod`. This tells OpenRA that the explicit mount `mymod` should refer to the root of your mod package.
|
||||
* Change all lines that start with `cnc|` to `mynewmod|`. This updates the explicit mount references to account for the change that you have just made above.
|
||||
* Open `launch-mod.sh` and replace `MODID="template"` near the top of the file with `MODID="mynewmod"`.
|
||||
* Open `mod.config` and replace `MOD_ID="example"` near the top of the file with `MOD_ID="mynewmod"`.
|
||||
|
||||
You should now have a functioning stand-alone clone of the `cnc` mod that you can adapt / replace piece by piece with your own project.
|
||||
|
||||
If you don't plan on including any custom C# logic in your mod then you should delete `OpenRA.Mods.Example.sln` and the `OpenRA.Mods.Example` directory. If you do plan on including custom logic, then you will need to make some futher changes:
|
||||
If you don't plan on including any custom C# logic in your mod then you should delete `ExampleMod.sln`, `OpenRA.Mods.Example.sln`, and the `OpenRA.Mods.Example` directory. If you do plan on including custom logic, then you will need to make some futher changes:
|
||||
* TODO: Explain updating the GUIDs, project name, and changing the build output to `mods/mynewmod/`
|
||||
|
||||
### Developing / running your in-development mod
|
||||
|
||||
Run the `launch-mod.sh` (Linux/macOS) or `TODO` (Windows) scripts to run your mod in development mode.
|
||||
Run the `launch-game.sh` (Linux/macOS) or `launch-game.cmd` (Windows) scripts to run your mod in development mode.
|
||||
Before you run this for the first time you must fetch and compile the engine code by running the `TODO` (Linux/macOS) or `TODO` (Windows) script.
|
||||
|
||||
The first run scripts will automate the following:
|
||||
|
||||
27
launch-dedicated.cmd
Normal file
27
launch-dedicated.cmd
Normal file
@ -0,0 +1,27 @@
|
||||
:: example launch script, see https://github.com/OpenRA/OpenRA/wiki/Dedicated for details
|
||||
|
||||
@echo on
|
||||
|
||||
set Name="Dedicated Server"
|
||||
set ListenPort=1234
|
||||
set ExternalPort=1234
|
||||
set AdvertiseOnline=True
|
||||
set EnableSingleplayer=False
|
||||
set Password=""
|
||||
|
||||
@echo off
|
||||
|
||||
title %Name%
|
||||
FOR /F "tokens=1,2 delims==" %%A IN (mod.config) DO (set %%A=%%B)
|
||||
|
||||
set MOD_SEARCH_PATHS=%~dp0mods
|
||||
if %INCLUDE_DEFAULT_MODS% neq "True" goto start
|
||||
set MOD_SEARCH_PATHS=%MOD_SEARCH_PATHS%,./mods
|
||||
|
||||
:start
|
||||
cd engine
|
||||
|
||||
:loop
|
||||
OpenRA.Server.exe Game.Mod=%MOD_ID% Server.Name=%Name% Server.ListenPort=%ListenPort% Server.ExternalPort=%ExternalPort% Server.AdvertiseOnline=%AdvertiseOnline% Server.EnableSingleplayer=%EnableSingleplayer% Server.Password=%Password%
|
||||
|
||||
goto loop
|
||||
34
launch-dedicated.sh
Executable file
34
launch-dedicated.sh
Executable file
@ -0,0 +1,34 @@
|
||||
#!/bin/sh
|
||||
# example launch script, see https://github.com/OpenRA/OpenRA/wiki/Dedicated for details
|
||||
|
||||
# Usage:
|
||||
# $ ./launch-dedicated.sh # Launch a dedicated server with default settings
|
||||
# $ Mod="d2k" ./launch-dedicated.sh # Launch a dedicated server with default settings but override the Mod
|
||||
# Read the file to see which settings you can override
|
||||
|
||||
TEMPLATE_LAUNCHER=$(python -c "import os; print(os.path.realpath('$0'))")
|
||||
TEMPLATE_ROOT=$(dirname "${TEMPLATE_LAUNCHER}")
|
||||
source ${TEMPLATE_ROOT}/mod.config
|
||||
|
||||
MOD_SEARCH_PATHS="${TEMPLATE_ROOT}/mods"
|
||||
if [ "${INCLUDE_DEFAULT_MODS}" = "True" ]; then
|
||||
MOD_SEARCH_PATHS="${TEMPLATE_PATHS},./mods"
|
||||
fi
|
||||
|
||||
LAUNCH_MOD="${Mod:-"${MOD_ID}"}"
|
||||
|
||||
Name="${Name:-"Dedicated Server"}"
|
||||
Mod="${Mod:-"${MOD_ID}"}"
|
||||
ListenPort="${ListenPort:-"1234"}"
|
||||
ExternalPort="${ExternalPort:-"1234"}"
|
||||
AdvertiseOnline="${AdvertiseOnline:-"True"}"
|
||||
EnableSingleplayer="${EnableSingleplayer:-"False"}"
|
||||
Password="${Password:-""}"
|
||||
|
||||
cd engine
|
||||
while true; do
|
||||
MOD_SEARCH_PATHS="${MOD_SEARCH_PATHS}" mono --debug OpenRA.Server.exe Game.Mod=$Mod \
|
||||
Server.Name="$Name" Server.ListenPort=$ListenPort Server.ExternalPort=$ExternalPort \
|
||||
Server.AdvertiseOnline=$AdvertiseOnline \
|
||||
Server.EnableSingleplayer=$EnableSingleplayer Server.Password=$Password
|
||||
done
|
||||
21
launch-game.cmd
Normal file
21
launch-game.cmd
Normal file
@ -0,0 +1,21 @@
|
||||
@echo off
|
||||
title OpenRA
|
||||
FOR /F "tokens=1,2 delims==" %%A IN (mod.config) DO (set %%A=%%B)
|
||||
|
||||
set TEMPLATE_LAUNCHER=%0
|
||||
set MOD_SEARCH_PATHS=%~dp0mods
|
||||
if %INCLUDE_DEFAULT_MODS% neq "True" goto launch
|
||||
set MOD_SEARCH_PATHS=%MOD_SEARCH_PATHS%,./mods
|
||||
|
||||
:launch
|
||||
cd engine
|
||||
OpenRA.Game.exe Game.Mod=%MOD_ID% Engine.LaunchPath="%TEMPLATE_LAUNCHER%" "Engine.ModSearchPaths=%MOD_SEARCH_PATHS%" "%*"
|
||||
if %errorlevel% neq 0 goto crashdialog
|
||||
exit
|
||||
:crashdialog
|
||||
echo ----------------------------------------
|
||||
echo OpenRA has encountered a fatal error.
|
||||
echo * Log Files are available in Documents\OpenRA\Logs
|
||||
echo * FAQ is available at https://github.com/OpenRA/OpenRA/wiki/FAQ
|
||||
echo ----------------------------------------
|
||||
pause
|
||||
13
launch-game.sh
Executable file
13
launch-game.sh
Executable file
@ -0,0 +1,13 @@
|
||||
#!/bin/sh
|
||||
|
||||
TEMPLATE_LAUNCHER=$(python -c "import os; print(os.path.realpath('$0'))")
|
||||
TEMPLATE_ROOT=$(dirname "${TEMPLATE_LAUNCHER}")
|
||||
source ${TEMPLATE_ROOT}/mod.config
|
||||
|
||||
MOD_SEARCH_PATHS="${TEMPLATE_ROOT}/mods"
|
||||
if [ "${INCLUDE_DEFAULT_MODS}" = "True" ]; then
|
||||
MOD_SEARCH_PATHS="${TEMPLATE_PATHS},./mods"
|
||||
fi
|
||||
|
||||
cd engine
|
||||
mono OpenRA.Game.exe Engine.LaunchPath="${TEMPLATE_LAUNCHER}" "Engine.ModSearchPaths=${MOD_SEARCH_PATHS}" Game.Mod=${MOD_ID} "$@"
|
||||
@ -1,12 +0,0 @@
|
||||
#!/bin/sh
|
||||
|
||||
# Change this to match your mod
|
||||
MODID="example"
|
||||
|
||||
# Don't edit below this line
|
||||
MODLAUNCHER=$(python -c "import os; print(os.path.realpath('$0'))")
|
||||
MODROOT=$(dirname "$MODLAUNCHER")
|
||||
|
||||
cd engine
|
||||
# TODO: Remove ./mods from the search path after we deprecate cross-mod references
|
||||
mono OpenRA.Game.exe Engine.LaunchPath="$MODLAUNCHER" "Engine.ModSearchPaths=./mods,$MODROOT/mods" Engine.DefaultMod=$MODID Game.Mod=$MODID "$@"
|
||||
8
mod.config
Normal file
8
mod.config
Normal file
@ -0,0 +1,8 @@
|
||||
# The id of the mod to launch by default. This must exist as a directory in the mods directory
|
||||
MOD_ID="example"
|
||||
|
||||
# Import the default OpenRA mods for use as external mod references
|
||||
# in your mod.yaml. Accepts values "True" or "False".
|
||||
# WARNING: This setting is provided to simplify early mod development
|
||||
# and must be disabled before installers can be generated
|
||||
INCLUDE_DEFAULT_MODS="False"
|
||||
29
utility.cmd
Normal file
29
utility.cmd
Normal file
@ -0,0 +1,29 @@
|
||||
@echo off
|
||||
|
||||
FOR /F "tokens=1,2 delims==" %%A IN (mod.config) DO (set %%A=%%B)
|
||||
|
||||
title OpenRA.Utility.exe %MOD_ID%
|
||||
|
||||
set MOD_SEARCH_PATHS=%~dp0mods
|
||||
if %INCLUDE_DEFAULT_MODS% neq "True" goto start
|
||||
set MOD_SEARCH_PATHS=%MOD_SEARCH_PATHS%,./mods
|
||||
|
||||
:start
|
||||
cd engine
|
||||
|
||||
:loop
|
||||
echo.
|
||||
echo ----------------------------------------
|
||||
echo.
|
||||
echo Enter a utility command or --exit to exit.
|
||||
echo Press enter to view a list of valid utility commands.
|
||||
echo.
|
||||
|
||||
set /P command=Please enter a command: OpenRA.Utility.exe %MOD_ID%
|
||||
if /I "%command%" EQU "--exit" (exit)
|
||||
echo.
|
||||
echo ----------------------------------------
|
||||
echo.
|
||||
echo OpenRA.Utility.exe %MOD_ID% %command%
|
||||
call OpenRA.Utility.exe %MOD_ID% %command%
|
||||
goto loop
|
||||
18
utility.sh
Executable file
18
utility.sh
Executable file
@ -0,0 +1,18 @@
|
||||
#!/bin/sh
|
||||
# Usage:
|
||||
# $ ./utility.sh # Launch the OpenRA.Utility with the default mod
|
||||
# $ Mod="d2k" ./launch-utility.sh # Launch a dedicated server with a specific mod
|
||||
|
||||
TEMPLATE_LAUNCHER=$(python -c "import os; print(os.path.realpath('$0'))")
|
||||
TEMPLATE_ROOT=$(dirname "${TEMPLATE_LAUNCHER}")
|
||||
source ${TEMPLATE_ROOT}/mod.config
|
||||
|
||||
MOD_SEARCH_PATHS="${TEMPLATE_ROOT}/mods"
|
||||
if [ "${INCLUDE_DEFAULT_MODS}" = "True" ]; then
|
||||
MOD_SEARCH_PATHS="${TEMPLATE_PATHS},./mods"
|
||||
fi
|
||||
|
||||
LAUNCH_MOD="${Mod:-"${MOD_ID}"}"
|
||||
|
||||
cd engine
|
||||
MOD_SEARCH_PATHS="${MOD_SEARCH_PATHS}" mono --debug OpenRA.Utility.exe ${LAUNCH_MOD} $@
|
||||
Loading…
Reference in New Issue
Block a user