first commit

This commit is contained in:
Chillcog committed 2026-07-03 05:00:02 -07:00
commit 21788ba270
643 files changed
+45536

No files matched your search

+9
View File
@@ -0,0 +1,9 @@
# Tycoon Game Servers
This is a collection of Tycoon game servers, that are typically open-source re-implementations of classic Tycoon titles.
## Roller Coaster Tycoon 2
[OpenRCT2](openrct2)
## Transport Tycoon Deluxe
[OpenTTD](openttd)
+86
View File
@@ -0,0 +1,86 @@
# OpenRCT2
***Note:** OpenRCT2 only recently (Jan. 2022) updated to support non-interactive Docker environments, and development is ongoing to improve it. Please understand future updates may be unstable, or this Egg may update in the future to accommodate changes.*
___
### Authors / Contributors
<!-- prettier-ignore-start -->
<!-- markdownlint-disable -->
<table>
<tr>
<td align="center">
<a href="https://github.com/lilkingjr1">
<img src="https://avatars.githubusercontent.com/u/4533989" width="50px;" alt=""/><br /><sub><b>Red-Thirten</b></sub>
</a>
<br />
<a href="https://github.com/parkervcp/eggs/commits?author=lilkingjr1" title="Codes">💻</a>
<a href="https://github.com/parkervcp/eggs/commits?author=lilkingjr1" title="Maintains">🔨</a>
</td>
<td align="center">
<a href="https://github.com/parkervcp">
<img src="https://avatars.githubusercontent.com/u/1207679" width="50px;" alt=""/><br /><sub><b>parkervcp</b></sub>
</a>
<br />
<a href="https://github.com/parkervcp/eggs/commits?author=parkervcp" title="Codes">💻</a>
<a href="https://github.com/parkervcp/eggs/commits?author=parkervcp" title="Contributor">💡</a>
</td>
<td align="center">
<a href="https://github.com/janisozaur">
<img src="https://avatars.githubusercontent.com/u/550290" width="50px;" alt=""/><br /><sub><b>janisozaur</b></sub>
</a>
<br />
<a href="https://github.com/OpenRCT2/OpenRCT2/commits?author=janisozaur" title="Codes">💻</a>
<a href="https://github.com/OpenRCT2/OpenRCT2/commits?author=janisozaur" title="Contributor">💡</a>
</td>
</tr>
</table>
<!-- markdownlint-enable -->
<!-- prettier-ignore-end -->
___
### Game Description
From OpenRCT2's [Website](https://openrct2.io/):
> OpenRCT2 is an open-source re-implementation of RollerCoaster Tycoon 2 (RCT2), expanding the game with new features, fixing bugs and raising game limits. The gameplay revolves around building and maintaining an amusement park containing attractions, shops and facilities. The player must try to make a profit and maintain a good park reputation whilst keeping the guests happy. OpenRCT2 allows for both scenario and sandbox play. Scenarios require the player to complete a certain objective in a set time limit whilst sandbox allows the player to build a more flexible park with optionally no restrictions or finance.
___
### Server Ports
| Port | Default (TCP) |
|---------|---------|
| Game | 11753 |
___
### Installation/System Requirements
| | Minimum |
|---------|---------|
| Processor | x86/64 (\*multiarch may be supported for develop builds, but has not been tested) |
| RAM | 256-512 MiB (depends on # of clients & park size) |
| Storage | 110 MB (*may require more if building from source*) |
| RCT2 Files | **Not required** |
___
### Save Files
Save files and autosaves are located in this directory:
```
/home/container/ServerData/save/
```
If the "Load Latest Autosave" startup variable is enabled, and the `autosave/` directory exists, the server will load the latest autosave instead of the specified Save File.
___
### Console Commands
Until support for console commands to interactive programs gets added to Pterodactyl, entering commands via the panel's console do nothing (reference issue [pterodactyl/panel#3712](https://github.com/pterodactyl/panel/issues/3712)).
___
### Becoming an Admin on the Server
Unfortunately, because console commands currently do not register, becoming the first admin on the server takes some steps, listed below:
1. Ensure the "Log Server Actions" startup variable is set to "true".
2. Start the server and join it with the client you want to make an admin.
3. Open `ServerData/serverlogs/<Server Name>/<Latest Date>.txt` and copy the SHA1 hash next to your client's username (note the username as well).
4. Then, open `ServerData/users.json`. Paste the hash into the "hash" value, change the "name" value to your client's username, and save the file.
5. Reboot the server, re-join it, and you should be an admin!
After becoming an admin, you can use the in-game users management window to add additional admins (or groups) more easily if you wish.
___
### Known Issues
The following are known issues that are unique to running OpenRCT2 on Pterodactyl, but likely can only be fixed by further development/updates from OpenRCT2.
- Configuring a password on the server disallows non-admin clients from entering in a password in their client to connect; it just disconnects them. Admin clients can still join normally. (reference issue [OpenRCT2/OpenRCT2#16396](https://github.com/OpenRCT2/OpenRCT2/issues/16396))
- You may rarely run into the server crashing on start due to a "Floating point exception(core dumped)" error. If this occurs to you, please help with OpenRCT2 development by doing the following:
1. Add the following to the beginning of your server's startup command: `SEGFAULT_SIGNALS=fpe LD_PRELOAD=/lib/x86_64-linux-gnu/libSegFault.so `
2. Start the server. If it boots normally, nothing extra will print. If it crashes, it will print a stack trace to the console.
3. If a crash occurs, copy the entire stack trace, and save it to a log sharing website (like [Hastebin](https://www.hastebin.com)).
4. [Open a new Bug Report Issue with OpenRCT2](https://github.com/OpenRCT2/OpenRCT2/issues/new?assignees=&labels=bug&template=bug_report.yaml) and share your logs with them.
@@ -0,0 +1,221 @@
{
"_comment": "Pterodactyl OpenRCT2 Egg ~ Red-Thirten and parkervcp ~ 2022-06-28",
"meta": {
"version": "PTDL_v2",
"update_url": null
},
"name": "OpenRCT2",
"author": "rehlmgaming@gmail.com",
"description": "OpenRCT2 is an open-source re-implementation of RollerCoaster Tycoon 2 (RCT2), expanding the game with new features, fixing bugs and raising game limits.",
"features": null,
"docker_images": {
"ghcr.io\/parkervcp\/yolks:debian": "ghcr.io\/parkervcp\/yolks:debian"
},
"file_denylist": [],
"startup": ".\/OpenRCT2\/openrct2-cli --version && .\/OpenRCT2\/openrct2-cli host $(if {{LOAD_AUTOSAVE}} && [ -d ServerData\/save\/autosave\/ ]; then find ServerData\/save\/autosave\/ | sort -r | head -1; else echo \"{{SAVE_URI}}\"; fi) --port {{SERVER_PORT}} --user-data-path \/home\/container\/ServerData\/",
"config": {
"files": "{\r\n \"ServerData\/config.ini\": {\r\n \"parser\": \"ini\",\r\n \"find\": {\r\n \"general.autosave\": \"{{server.build.env.AUTOSAVE_INTERVAL}}\",\r\n \"general.autosave_amount\": \"{{server.build.env.AUTOSAVE_AMOUNT}}\",\r\n \"network.player_name\": \"\\\"{{server.build.env.SERVER_PLAYER_NAME}}\\\"\",\r\n \"network.default_port\": \"{{server.build.default.port}}\",\r\n \"network.default_password\": \"\\\"{{server.build.env.SERVER_PASSWORD}}\\\"\",\r\n \"network.advertise\": \"{{server.build.env.SERVER_ADVERTISE}}\",\r\n \"network.maxplayers\": \"{{server.build.env.MAX_PLAYERS}}\",\r\n \"network.server_name\": \"\\\"{{server.build.env.SERVER_NAME}}\\\"\",\r\n \"network.server_description\": \"\\\"{{server.build.env.SERVER_DESCRIPTION}}\\\"\",\r\n \"network.server_greeting\": \"\\\"{{server.build.env.SERVER_GREETING}}\\\"\",\r\n \"network.provider_name\": \"\\\"{{server.build.env.PROVIDER_NAME}}\\\"\",\r\n \"network.provider_email\": \"\\\"{{server.build.env.PROVIDER_EMAIL}}\\\"\",\r\n \"network.provider_website\": \"\\\"{{server.build.env.PROVIDER_WEBSITE}}\\\"\",\r\n \"network.log_chat\": \"{{server.build.env.LOG_CHAT}}\",\r\n \"network.log_server_actions\": \"{{server.build.env.LOG_SERVER_ACTIONS}}\",\r\n \"network.pause_server_if_no_clients\": \"{{server.build.env.PAUSE_NO_CLIENTS}}\"\r\n }\r\n }\r\n}",
"startup": "{\r\n \"done\": \"Listening for clients on\"\r\n}",
"logs": "{}",
"stop": "^C"
},
"scripts": {
"installation": {
"script": "#!\/bin\/bash\r\n\r\n## File: Pterodactyl OpenRCT2 Egg - egg-openrct2.json\r\n## Authors: David Wolfe (Red-Thirten), parkervcp\r\n## Date: 2022\/06\/28\r\n## License: MIT License\r\n\r\nGITHUB_PACKAGE=\"OpenRCT2\/OpenRCT2\"\r\nMATCH=\"linux-x86_64.AppImage\"\r\nDEFAULT_SAVE=\"https:\/\/raw.githubusercontent.com\/parkervcp\/eggs\/master\/game_eggs\/tycoon_games\/openrct2\/save.park\"\r\n\r\n## OpenRCT2 Install\r\napt -y update\r\n[ ! -d \/mnt\/server ] && mkdir \/mnt\/server\r\ncd \/mnt\/server\r\n# Remove existing installation if present\r\n[ -d OpenRCT2 ] && rm -rf OpenRCT2\r\n# Setup OpenRCT2 directory\r\nmkdir -p OpenRCT2\/data\r\n# Setup temp directory for building and move to it\r\n[ -d temp ] && rm -rf temp\r\nmkdir temp && cd temp\r\n\r\n# Determine if installing from source or from release\r\nif [ \"${VERSION}\" == \"develop\" ]; then\r\n # Get required packages\r\n apt -y install curl git make cmake gcc build-essential libicu-dev pkg-config libcurl4-openssl-dev libcrypto++-dev libpng-dev libssl-dev libzip-dev duktape-dev nlohmann-json3-dev\r\n echo -e \"\\nInstalling\/Updating OpenRCT2 from source...\\n\"\r\n \r\n # Clone the branch and check if successful\r\n git clone --branch \"${VERSION}\" https:\/\/github.com\/${GITHUB_PACKAGE}\r\n if [ ! -d OpenRCT2 ]; then\r\n echo -e \"\\nFailed to clone \\\"${VERSION}\\\" branch from https:\/\/github.com\/${GITHUB_PACKAGE}\\n\"\r\n exit 1\r\n fi\r\n \r\n cd OpenRCT2\r\n mkdir build && cd build\r\n # Prepare CMake files for a lightweight and CLI-only build of OpenRCT2, using the appropriate flags\r\n cmake .. -DCMAKE_BUILD_TYPE=Release -DBUILD_SHARED_LIBS=ON -DPORTABLE=ON -DCMAKE_POSITION_INDEPENDENT_CODE=ON -DCMAKE_CXX_FLAGS=\"-g -gz\" -DDISABLE_TTF=ON -DDISABLE_GOOGLE_BENCHMARK=ON -DDISABLE_DISCORD_RPC=ON -DDISABLE_GUI=ON\r\n echo -e \"\\nBuilding OpenRCT2 package from source...\\n\\tThis process can take quite some time. Grab a coffee :)\\n\"\r\n # Build OpenRCT2\r\n DESTDIR=. make install\r\n # Check if build was successful\r\n if [ ! -d usr\/local ]; then\r\n echo -e \"\\nFailed to successfully build OpenRCT2!\\n\"\r\n exit 1\r\n fi\r\n \r\n # Make executable-ready package by moving compiled files to the correct locations\r\n cd usr\/local\r\n mv bin\/* \/mnt\/server\/OpenRCT2\/\r\n mv share\/openrct2\/* share\/openrct2-cli\/* \/mnt\/server\/OpenRCT2\/data\/\r\n mv share\/doc \/mnt\/server\/OpenRCT2\/\r\n echo -e \"\\nBuild of OpenRCT2 package complete!\"\r\nelse\r\n # Get required packages\r\n apt install -y curl jq\r\n echo -e \"\\nInstalling\/Updating OpenRCT2 from release tag \\\"${VERSION}\\\"...\\n\"\r\n \r\n # This is a simple script to use the GitHub API for release versions.\r\n # This requires the egg has a variable for GITHUB_PACKAGE, VERSION and MATCH (MATCH is to match the filename in some way).\r\n # Get release info and download links\r\n LATEST_JSON=$(curl --silent \"https:\/\/api.github.com\/repos\/${GITHUB_PACKAGE}\/releases\/latest\")\r\n RELEASES=$(curl --silent \"https:\/\/api.github.com\/repos\/${GITHUB_PACKAGE}\/releases\")\r\n if [ -z \"${VERSION}\" ] || [ \"${VERSION}\" == \"latest\" ]; then\r\n DOWNLOAD_URL=$(echo ${LATEST_JSON} | jq .assets | jq -r .[].browser_download_url | grep -i ${MATCH})\r\n else\r\n VERSION_CHECK=$(echo ${RELEASES} | jq -r --arg VERSION \"${VERSION}\" '.[] | select(.tag_name==$VERSION) | .tag_name')\r\n if [ \"${VERSION}\" == \"${VERSION_CHECK}\" ]; then\r\n DOWNLOAD_URL=$(echo ${RELEASES} | jq -r --arg VERSION \"${VERSION}\" '.[] | select(.tag_name==$VERSION) | .assets[].browser_download_url' | grep -i ${MATCH})\r\n else\r\n DOWNLOAD_URL=$(echo ${LATEST_JSON} | jq .assets | jq -r .[].browser_download_url)\r\n fi\r\n fi\r\n # Download the release and check if successful\r\n curl -L ${DOWNLOAD_URL} -o OpenRCT2.AppImage\r\n if [ ! -f OpenRCT2.AppImage ]; then\r\n echo -e \"\\nFailed to download release: ${DOWNLOAD_URL}\\n\"\r\n exit 1\r\n fi\r\n \r\n chmod +x OpenRCT2.AppImage\r\n # Extract AppImage and check if successful\r\n echo -e \"Extracting AppImage files...\"\r\n .\/OpenRCT2.AppImage --appimage-extract\r\n if [ ! -d squashfs-root\/usr ]; then\r\n echo -e \"\\nFailed to extract AppImage!\\n\\t(Is the `MATCH` variable set to download an AppImage?)\\n\"\r\n exit 1\r\n fi\r\n \r\n # Move needed files to correct directories\r\n cd squashfs-root\/usr\r\n mv lib bin\/openrct2-cli \/mnt\/server\/OpenRCT2\/\r\n mv share\/openrct2\/* \/mnt\/server\/OpenRCT2\/data\/\r\n mkdir \/mnt\/server\/OpenRCT2\/doc && mv share\/doc\/openrct2 $_\r\n echo -e \"\\nDownload\/Update of OpenRCT2 release successful!\"\r\nfi\r\n\r\ncd \/mnt\/server\r\nrm -rf temp # Clean up temp building directory\r\n\r\n## OpenRCT2 Setup\r\n# Line truncated
"container": "ghcr.io\/parkervcp\/installers:debian",
"entrypoint": "\/bin\/bash"
}
},
"variables": [
{
"name": "Save File",
"description": "Save file (.sv4 \/ .sv6 \/ .park) to load. Can be a file path or can be a webhosted file URL. An existing save file must be specified; the server cannot generate a new scenario\/save from scratch.",
"env_variable": "SAVE_URI",
"default_value": "ServerData\/save\/save.park",
"user_viewable": true,
"user_editable": true,
"rules": "required|string|min:4",
"field_type": "text"
},
{
"name": "Load Latest Autosave",
"description": "Will load the latest autosave (assuming one is present) *instead* of the Save File when the server is started. Useful for loading the latest progress of a park after a reboot. Set to \"false\" to \"lock\" progress of the park, and always load the original Save File on start up.",
"env_variable": "LOAD_AUTOSAVE",
"default_value": "true",
"user_viewable": true,
"user_editable": true,
"rules": "required|string|in:true,false",
"field_type": "text"
},
{
"name": "Autosave Interval",
"description": "0 = Every 1 min, 1 = Every 5 min, 2 = Every 15 min, 3 = Every 30 min, 4 = Every hour, 5 = Never",
"env_variable": "AUTOSAVE_INTERVAL",
"default_value": "1",
"user_viewable": true,
"user_editable": true,
"rules": "required|integer|between:0,5",
"field_type": "text"
},
{
"name": "Autosaves To Keep",
"description": "Number of autosaves to keep before rolling over and deleting the oldest one. Set to 0 to disable autosaving.",
"env_variable": "AUTOSAVE_AMOUNT",
"default_value": "10",
"user_viewable": true,
"user_editable": true,
"rules": "required|integer|min:0",
"field_type": "text"
},
{
"name": "Max Players",
"description": "Maximum players allowed to connect to the server.",
"env_variable": "MAX_PLAYERS",
"default_value": "16",
"user_viewable": true,
"user_editable": true,
"rules": "required|integer|min:0",
"field_type": "text"
},
{
"name": "Server Password",
"description": "Password requested by the server for clients to connect. Admins do not have to enter password to join. Leave empty for no password.",
"env_variable": "SERVER_PASSWORD",
"default_value": "",
"user_viewable": true,
"user_editable": true,
"rules": "string|nullable",
"field_type": "text"
},
{
"name": "Advertise Server",
"description": "If set to \"false\", the server will not be advertised in the master server list, and clients must manually connect.",
"env_variable": "SERVER_ADVERTISE",
"default_value": "true",
"user_viewable": true,
"user_editable": true,
"rules": "required|string|in:true,false",
"field_type": "text"
},
{
"name": "Pause Server If No Clients",
"description": "Set to \"true\" to have the server pause simulation if no clients are on the server.",
"env_variable": "PAUSE_NO_CLIENTS",
"default_value": "false",
"user_viewable": true,
"user_editable": true,
"rules": "required|string|in:true,false",
"field_type": "text"
},
{
"name": "Server Name",
"description": "Name of the server that appears in the server list.",
"env_variable": "SERVER_NAME",
"default_value": "",
"user_viewable": true,
"user_editable": true,
"rules": "string|nullable",
"field_type": "text"
},
{
"name": "Server Description",
"description": "Description of the server that appears when hovering over the server in the server list.",
"env_variable": "SERVER_DESCRIPTION",
"default_value": "",
"user_viewable": true,
"user_editable": true,
"rules": "string|nullable",
"field_type": "text"
},
{
"name": "Server Player Name",
"description": "The server appears as a player in the player list. This is the name it will have.",
"env_variable": "SERVER_PLAYER_NAME",
"default_value": "Server",
"user_viewable": true,
"user_editable": true,
"rules": "string|nullable",
"field_type": "text"
},
{
"name": "Server Greeting",
"description": "The \"Message of the Day\" that gets sent to all clients who join.",
"env_variable": "SERVER_GREETING",
"default_value": "",
"user_viewable": true,
"user_editable": true,
"rules": "string|nullable",
"field_type": "text"
},
{
"name": "Provider Name",
"description": "Server provider name that appears in server information window.",
"env_variable": "PROVIDER_NAME",
"default_value": "",
"user_viewable": true,
"user_editable": true,
"rules": "string|nullable",
"field_type": "text"
},
{
"name": "Server Provider E-Mail",
"description": "Server provider e-mail that appears in server information window.",
"env_variable": "PROVIDER_EMAIL",
"default_value": "",
"user_viewable": true,
"user_editable": true,
"rules": "string|nullable",
"field_type": "text"
},
{
"name": "Server Provider Website",
"description": "Server provider website that appears in server information window.",
"env_variable": "PROVIDER_WEBSITE",
"default_value": "",
"user_viewable": true,
"user_editable": true,
"rules": "string|nullable",
"field_type": "text"
},
{
"name": "Log Chat",
"description": "Set to \"true\" if you would like in-game chat logged to file in Data\/chatlogs.",
"env_variable": "LOG_CHAT",
"default_value": "false",
"user_viewable": true,
"user_editable": true,
"rules": "required|string|in:true,false",
"field_type": "text"
},
{
"name": "Log Server Actions",
"description": "Set to \"true\" if you would like in-game actions logged to file in Data\/serverlogs.",
"env_variable": "LOG_SERVER_ACTIONS",
"default_value": "false",
"user_viewable": true,
"user_editable": true,
"rules": "required|string|in:true,false",
"field_type": "text"
},
{
"name": "OpenRCT2 Version",
"description": "The release tag (version) of OpenRCT2 to download and install from their official Github (ie. \"v0.3.5.1\"). Use \"latest\" to download the latest release, or \"develop\" to build from the latest source (takes longer to install but is the most up to date).",
"env_variable": "VERSION",
"default_value": "latest",
"user_viewable": true,
"user_editable": true,
"rules": "required|string|min:1",
"field_type": "text"
},
{
"name": "[Advanced] Library Path",
"description": "What path to load libraries from for release binaries. Rarely needs to be changed.",
"env_variable": "LD_LIBRARY_PATH",
"default_value": ".\/OpenRCT2\/lib",
"user_viewable": false,
"user_editable": false,
"rules": "required|string",
"field_type": "text"
}
]
}
Binary file not shown.
+10
View File
@@ -0,0 +1,10 @@
# [OpenTTD](https://www.openttd.org)
OpenTTD is a business simulation game in which players try to earn money via transporting passengers and freight by road, rail, water and air. It is an open-source remake and expansion of the 1995 Chris Sawyer video game Transport Tycoon Deluxe
## Server Ports
| Port | Default |
|---------|---------|
| Game | 3979 |
| Admin | 3977 |
@@ -0,0 +1,72 @@
{
"_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO",
"meta": {
"version": "PTDL_v2",
"update_url": null
},
"exported_at": "2023-03-26T16:13:26+02:00",
"name": "OpenTTD Server",
"author": "admin@justmyrandomstuff.com",
"description": "OpenTTD is an open source simulation game based upon the popular Microprose game \"Transport Tycoon Deluxe\", written by Chris Sawyer. It attempts to mimic the original game as closely as possible while extending it with new features.\r\n\r\nOpenTTD is modelled after the original Transport Tycoon game by Chris Sawyer and enhances the game experience dramatically. Many features were inspired by TTDPatch while others are original.",
"features": null,
"docker_images": {
"ghcr.io\/parkervcp\/yolks:debian": "ghcr.io\/parkervcp\/yolks:debian"
},
"file_denylist": [],
"startup": ".\/openttd -D",
"config": {
"files": "{\r\n \"openttd.cfg\": {\r\n \"parser\": \"ini\",\r\n \"find\": {\r\n \"network.server_port\": \"{{server.build.default.port}}\",\r\n \"network.server_name\": \"{{server.build.env.srv_name}}\",\r\n \"network.lan_internet\": 0,\r\n \"network.server_advertise\": \"{{server.build.env.srv_advertise}}\"\r\n }\r\n }\r\n}",
"startup": "{\r\n \"done\": \"[net] Map generated, starting game\"\r\n}",
"logs": "{}",
"stop": "exit"
},
"scripts": {
"installation": {
"script": "#!\/bin\/ash\r\napk add --no-cache xz curl tar unzip\r\n\r\nmkdir -p \/mnt\/server\r\ncd \/mnt\/server\r\n\r\necho -e \"\\ncurl -SsL -o openttd-linux.tar.xz https:\/\/cdn.openttd.org\/openttd-releases\/${OPENTTD_VERSION}\/openttd-${OPENTTD_VERSION}-linux-generic-amd64.tar.xz\"\r\ncurl -SsL -o openttd-linux.tar.xz https:\/\/cdn.openttd.org\/openttd-releases\/${OPENTTD_VERSION}\/openttd-${OPENTTD_VERSION}-linux-generic-amd64.tar.xz \r\n\r\necho -e \"\\nUnpacking tar\"\r\ntar -xf openttd-linux.tar.xz --strip-components=1\r\nrm openttd-linux.tar.xz\r\nchmod +x openttd\r\n\r\necho -e \"\\nRunning curl -sSL -o opengfx.zip https:\/\/cdn.openttd.org\/opengfx-releases\/${OPENGFX_VERSION}\/opengfx-${OPENGFX_VERSION}-all.zip\"\r\ncurl -sSL -o opengfx.zip https:\/\/cdn.openttd.org\/opengfx-releases\/${OPENGFX_VERSION}\/opengfx-${OPENGFX_VERSION}-all.zip\r\nunzip opengfx.zip \r\n\r\ntar --strip-components=1 -C baseset\/ -xvf opengfx*.tar\r\nrm -fR open*zip open*tar open*gz\r\n\r\n[ -f \/home\/container\/openttd.cfg ] || curl https:\/\/raw.githubusercontent.com\/parkervcp\/eggs\/master\/game_eggs\/tycoon_games\/openttd\/openttd.cfg > openttd.cfg\r\n\r\n## install end\r\necho \"-----------------------------------------\"\r\necho \"Installation completed...\"\r\necho \"-----------------------------------------\"",
"container": "ghcr.io\/parkervcp\/installers:alpine",
"entrypoint": "ash"
}
},
"variables": [
{
"name": "Server Name",
"description": "The name shown in the serverlist",
"env_variable": "srv_name",
"default_value": "OpenTTD Server",
"user_viewable": true,
"user_editable": true,
"rules": "required|string|max:20",
"field_type": "text"
},
{
"name": "Show in masterlist?",
"description": "Show the server in the serverlist on the client, true or false",
"env_variable": "srv_advertise",
"default_value": "true",
"user_viewable": true,
"user_editable": true,
"rules": "required|string|in:true,false",
"field_type": "text"
},
{
"name": "OpenTTD Version",
"description": "The version of OpenTTD i.e. 12.2",
"env_variable": "OPENTTD_VERSION",
"default_value": "13.0-RC2",
"user_viewable": true,
"user_editable": false,
"rules": "required|string|max:20",
"field_type": "text"
},
{
"name": "OpenGFX Version",
"description": "The OpenGFX Version i.e. 7.1",
"env_variable": "OPENGFX_VERSION",
"default_value": "7.1",
"user_viewable": true,
"user_editable": false,
"rules": "required|string|max:20",
"field_type": "text"
}
]
}
+466
View File
@@ -0,0 +1,466 @@
[misc]
display_opt = SHOW_TOWN_NAMES|SHOW_STATION_NAMES|SHOW_SIGNS|FULL_ANIMATION|FULL_DETAIL|WAYPOINTS|SHOW_COMPETITOR_SIGNS
fullscreen = false
support8bpp = no
graphicsset =
soundsset =
musicset =
videodriver =
musicdriver =
sounddriver =
blitter =
language = english.lng
resolution = 640,480
screenshot_format =
savegame_format =
rightclick_emulate = false
small_font =
medium_font =
large_font =
mono_font =
small_size = 0
medium_size = 0
large_size = 0
mono_size = 0
small_aa = false
medium_aa = false
large_aa = false
mono_aa = false
sprite_cache_size_px = 128
player_face = 0
transparency_options = 0
transparency_locks = 0
invisibility_options = 0
keyboard =
keyboard_caps =
last_newgrf_count = 0
gui_zoom = 2
[difficulty]
max_no_competitors = 0
number_towns = 2
industry_density = 5
max_loan = 300000
initial_interest = 2
vehicle_costs = 0
competitor_speed = 2
vehicle_breakdowns = 1
subsidy_multiplier = 2
construction_cost = 0
terrain_type = 1
quantity_sea_lakes = 0
economy = false
line_reverse_mode = false
disasters = false
town_council_tolerance = 0
[game_creation]
town_name = english
landscape = temperate
snow_line_height = 15
starting_year = 1950
land_generator = 1
oil_refinery_limit = 32
tgen_smoothness = 1
variety = 0
generation_seed = 3410929700
tree_placer = 2
heightmap_rotation = 0
se_flat_world_height = 1
map_x = 8
map_y = 8
water_borders = 15
custom_town_number = 1
custom_sea_level = 2
min_river_length = 16
river_route_random = 5
amount_of_rivers = 2
[vehicle]
road_side = right
train_acceleration_model = 1
roadveh_acceleration_model = 1
train_slope_steepness = 3
roadveh_slope_steepness = 7
max_train_length = 7
smoke_amount = 1
never_expire_vehicles = false
max_trains = 500
max_roadveh = 500
max_aircraft = 200
max_ships = 300
wagon_speed_limits = true
disable_elrails = false
freight_trains = 1
plane_speed = 4
dynamic_engines = true
plane_crashes = 2
extend_vehicle_life = 0
servint_ispercent = false
servint_trains = 150
servint_roadveh = 150
servint_ships = 360
servint_aircraft = 100
[construction]
max_heightlevel = 30
build_on_slopes = true
command_pause_level = 1
terraform_per_64k_frames = 4194304
terraform_frame_burst = 4096
clear_per_64k_frames = 4194304
clear_frame_burst = 4096
tree_per_64k_frames = 4194304
tree_frame_burst = 4096
autoslope = true
extra_dynamite = true
max_bridge_length = 64
max_bridge_height = 12
max_tunnel_length = 64
train_signal_side = 1
road_stop_on_town_road = true
road_stop_on_competitor_road = true
raw_industry_construction = 0
industry_platform = 1
freeform_edges = true
extra_tree_placement = 2
[station]
never_expire_airports = false
station_spread = 12
modified_catchment = true
adjacent_stations = true
distant_join_stations = true
[economy]
town_layout = 0
allow_town_roads = true
found_town = 0
allow_town_level_crossings = true
station_noise_level = false
inflation = true
multiple_industry_per_town = false
bribe = true
exclusive_rights = true
fund_buildings = true
fund_roads = true
give_money = true
smooth_economy = true
allow_shares = false
feeder_payment_share = 75
town_growth_rate = 2
larger_towns = 4
initial_city_size = 2
mod_road_rebuild = true
dist_local_authority = 20
town_noise_population[0] = 800
town_noise_population[1] = 2000
town_noise_population[2] = 4000
infrastructure_maintenance = false
[linkgraph]
recalc_interval = 4
recalc_time = 16
distribution_pax = 0
distribution_mail = 0
distribution_armoured = 0
distribution_default = 0
accuracy = 16
demand_distance = 100
demand_size = 100
short_path_saturation = 80
[pf]
forbid_90_deg = false
roadveh_queue = true
pathfinder_for_trains = 2
pathfinder_for_roadvehs = 2
pathfinder_for_ships = 2
reverse_at_signals = false
wait_oneway_signal = 15
wait_twoway_signal = 41
wait_for_pbs_path = 30
reserve_paths = false
path_backoff_interval = 20
opf.pf_maxlength = 4096
opf.pf_maxdepth = 48
npf.npf_max_search_nodes = 10000
npf.npf_rail_firstred_penalty = 1000
npf.npf_rail_firstred_exit_penalty = 10000
npf.npf_rail_lastred_penalty = 1000
npf.npf_rail_station_penalty = 100
npf.npf_rail_slope_penalty = 100
npf.npf_rail_curve_penalty = 100
npf.npf_rail_depot_reverse_penalty = 5000
npf.npf_rail_pbs_cross_penalty = 300
npf.npf_rail_pbs_signal_back_penalty = 1500
npf.npf_buoy_penalty = 200
npf.npf_water_curve_penalty = 100
npf.npf_road_curve_penalty = 100
npf.npf_crossing_penalty = 300
npf.npf_road_drive_through_penalty = 800
npf.npf_road_dt_occupied_penalty = 800
npf.npf_road_bay_occupied_penalty = 1500
npf.maximum_go_to_depot_penalty = 2000
yapf.disable_node_optimization = false
yapf.max_search_nodes = 10000
yapf.rail_firstred_twoway_eol = false
yapf.rail_firstred_penalty = 1000
yapf.rail_firstred_exit_penalty = 10000
yapf.rail_lastred_penalty = 1000
yapf.rail_lastred_exit_penalty = 10000
yapf.rail_station_penalty = 1000
yapf.rail_slope_penalty = 200
yapf.rail_curve45_penalty = 100
yapf.rail_curve90_penalty = 600
yapf.rail_depot_reverse_penalty = 5000
yapf.rail_crossing_penalty = 300
yapf.rail_look_ahead_max_signals = 10
yapf.rail_look_ahead_signal_p0 = 500
yapf.rail_look_ahead_signal_p1 = -100
yapf.rail_look_ahead_signal_p2 = 5
yapf.rail_pbs_cross_penalty = 300
yapf.rail_pbs_station_penalty = 800
yapf.rail_pbs_signal_back_penalty = 1500
yapf.rail_doubleslip_penalty = 100
yapf.rail_longer_platform_penalty = 800
yapf.rail_longer_platform_per_tile_penalty = 0
yapf.rail_shorter_platform_penalty = 4000
yapf.rail_shorter_platform_per_tile_penalty = 0
yapf.road_slope_penalty = 200
yapf.road_curve_penalty = 100
yapf.road_crossing_penalty = 300
yapf.road_stop_penalty = 800
yapf.road_stop_occupied_penalty = 800
yapf.road_stop_bay_occupied_penalty = 1500
yapf.maximum_go_to_depot_penalty = 2000
[order]
no_servicing_if_no_breakdowns = true
improved_load = true
selectgoods = true
serviceathelipad = true
gradual_loading = true
[script]
settings_profile = easy
script_max_opcode_till_suspend = 10000
[ai]
ai_in_multiplayer = true
ai_disable_veh_train = false
ai_disable_veh_roadveh = false
ai_disable_veh_aircraft = false
ai_disable_veh_ship = false
[locale]
currency = GBP
units_velocity = metric
units_power = metric
units_weight = metric
units_volume = metric
units_force = si
units_height = metric
digit_group_separator =
digit_group_separator_currency =
digit_decimal_separator =
[gui]
autosave = monthly
threaded_saves = true
date_format_in_default_names = long
show_finances = true
auto_scrolling = 0
reverse_scroll = false
smooth_scroll = false
left_mouse_btn_scrolling = false
right_mouse_wnd_close = false
measure_tooltip = true
errmsg_duration = 5
hover_delay_ms = 250
osk_activation = double
toolbar_pos = 1
statusbar_pos = 1
window_snap_radius = 10
window_soft_limit = 20
zoom_min = 0
zoom_max = 5
population_in_label = true
link_terraform_toolbar = false
smallmap_land_colour = 0
liveries = 2
prefer_teamchat = false
scrollwheel_scrolling = 0
scrollwheel_multiplier = 5
pause_on_newgame = false
advanced_vehicle_list = 1
timetable_in_ticks = false
timetable_arrival_departure = true
quick_goto = false
loading_indicators = 1
default_rail_type = 0
enable_signal_gui = true
coloured_news_year = 2000
drag_signals_density = 4
drag_signals_fixed_distance = false
semaphore_build_before = 1950
vehicle_income_warn = true
order_review_system = 2
lost_vehicle_warn = true
disable_unsuitable_building = true
new_nonstop = false
stop_location = 2
keep_all_autosave = false
autosave_on_exit = false
max_num_autosaves = 16
auto_euro = true
news_message_timeout = 2
show_track_reservation = false
default_signal_type = 1
cycle_signal_types = 2
station_numtracks = 1
station_platlength = 5
station_dragdrop = true
station_show_coverage = false
persistent_buildingtools = true
expenses_layout = false
station_gui_group_order = 0
station_gui_sort_by = 0
station_gui_sort_order = 0
missing_strings_threshold = 25
graph_line_thickness = 3
show_date_in_logs = false
settings_restriction_mode = 0
developer = 1
newgrf_developer_tools = false
ai_developer_tools = false
scenario_developer = false
newgrf_show_old_versions = false
newgrf_default_palette = 1
console_backlog_timeout = 100
console_backlog_length = 100
network_chat_box_width_pct = 40
network_chat_box_height = 25
network_chat_timeout = 20
[sound]
news_ticker = true
news_full = true
new_year = true
confirm = true
click_beep = true
disaster = true
vehicle = true
ambient = true
[music]
playlist = 0
music_vol = 127
effect_vol = 127
custom_1 = 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
custom_2 = 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
playing = false
shuffle = false
[news_display]
arrival_player = full
arrival_other = summarized
accident = full
company_info = full
open = summarized
close = summarized
economy = full
production_player = summarized
production_other = off
production_nobody = off
advice = full
new_vehicles = full
acceptance = full
subsidies = summarized
general = full
[network]
commands_per_frame = 2
max_commands_in_queue = 16
bytes_per_frame = 8
bytes_per_frame_burst = 256
max_init_time = 100
max_join_time = 500
max_download_time = 1000
max_password_time = 2000
max_lag_time = 500
pause_on_join = true
server_port =
server_admin_port = 3977
server_admin_chat = true
server_advertise = true
lan_internet = 0
client_name =
server_password =
rcon_password =
admin_password =
default_company_pass =
server_name =
connect_to_ip =
network_id =
autoclean_companies = false
autoclean_unprotected = 12
autoclean_protected = 36
autoclean_novehicles = 0
max_companies = 15
max_clients = 25
max_spectators = 15
restart_game_year = 0
min_active_clients = 0
server_lang = ANY
reload_cfg = false
last_host =
last_port = 0
no_http_content_downloads = false
[currency]
rate = 1
separator = .
to_euro = 0
prefix = ""
suffix = " credits"
[company]
engine_renew = false
engine_renew_months = 6
engine_renew_money = 100000
renew_keep_length = false
[server_bind_addresses]
[servers]
[bans]
[ai_players]
none = start_date=730
none = start_date=730
none = start_date=730
none = start_date=730
none = start_date=730
none = start_date=730
none = start_date=730
none = start_date=730
none = start_date=730
none = start_date=730
none = start_date=730
none = start_date=730
none = start_date=730
none = start_date=730
none = start_date=730
[game_scripts]
none =
[version]
version_string = 1.8.0
version_number = 18086D62
[newgrf]
[newgrf-static]