Nightingale
GamesNightingale is an open world survival crafting game, where you’ll adventure across the mysterious and dangerous Fae Realms. As a daring Realmwalker, you’ll defeat monstrous enemies, survive hostile environments, and build elaborate estates in a visually stunning Gaslamp Fantasy world.
README
Nightingale
Nightingale is an open world survival crafting game, where you’ll adventure across the mysterious and dangerous Fae Realms. As a daring Realmwalker, you’ll defeat monstrous enemies, survive hostile environments, and build elaborate estates in a visually stunning Gaslamp Fantasy world
Author & Contributers
| Name | Github Profile |
|---|---|
| brainshead | https://github.com/brainshead |
Server Ports
Nightingale requires up to 1 ports
| Port | default |
|---|---|
| Game | 7777 |
This can be changed to any port.
Install Notes
| Requirements | Memory | Storage |
|---|---|---|
| Minimal | 4GB | 15 GB |
| Recommended | 6-8+ GB | 40GB+ |
Settings
Most setting can be done by Panel Variable Settings.
Location of server Files : NWX/Config/ServerSettings.ini
Persistence (Saved Data)
Realm data is be stored in: NWX/Saved/Offline/DedicatedServer/Deploy
Character data is stored in: NWX/Saved/Offline//Profiles where
PlatformID is the Steam or Epic ID of each connecting user.
Backups
Copying the following directories to a backup location is sufficient to capture the state of a Nightingale dedicated server:
● NWX/Saved/Offline
● NWX/Saved/Config
● NWX/Config
The first time the dedicated server is launched on a particular weekday, it will copy the Offline
directory into the OfflineBackup directory.
Resetting Server Persistence
To reset the server to an empty state, remove the following directories:
● NWX/Saved/Offline
● NWX/Saved/Config
Enabling Cheats Mode on Clients
To enable debug/cheats, the client must be launched with the -EnableCheats commandline argument.
Players will need to authenticate with the admin password to use the cheats in-game
[!IMPORTANT] Also Server need to have Cheats enabled
Further Adjustements available
Status Endpoint (not built in egg )
To enable scraping server status from an http endpoint, add -statusPort= to the commandline, where is a port in the range 1024-65535.
Status can be scraped from the /status endpoint periodically.
By default this will bind to localhost only. To bind to a specific IP,
add -ini:Engine:[HTTPServer.Listeners]:+ListenerOverrides=(Port=,BindAddress=) to the commandline as well, or use 0.0.0.0 to bind to all available interfaces.
If the server is still loading and not yet ready for players, it will return a 503 Server Unavailable http status and a JSON object
Once the server is ready for players, it will return a 200 OK status and a JSON object
Mod Support
No Official Support!
Not tested
Docker Images (1)
| Name | Image |
|---|---|
Debian | ghcr.io/ptero-eggs/steamcmd:debian |
Startup Command
./NWX/Binaries/Linux/NWXServer-Linux-Shipping NWX -ini:Game:[/Script/Engine.GameSession]:MaxPlayers= {{MAX_PLAYER}} $( [ "$CHEATS" == "1" ] && printf %s '-EnableCheats' ) -port={{SERVER_PORT}} -multihome=0.0.0.0 Variables (10)
Steam User
This is a required setting and cannot be set to anonymous.
- Environment:
STEAM_USER- Default:
None- User Viewable:
- ❌
- User Editable:
- ❌
- Rules:
nullable|string
Steam Password
Steam User Password
- Environment:
STEAM_PASS- Default:
None- User Viewable:
- ❌
- User Editable:
- ❌
- Rules:
nullable|string
Game ID
The ID corresponding to the game to download and run using SRCDS
- Environment:
SRCDS_APPID- Default:
3796810- User Viewable:
- ❌
- User Editable:
- ❌
- Rules:
string
Steam Auth
Steam account auth code. Required if you have 2fa enabled
- Environment:
STEAM_AUTH- Default:
None- User Viewable:
- ❌
- User Editable:
- ❌
- Rules:
nullable|string|max:5
Auto Update Server
This is to auto-update the game server
- Environment:
AUTO_UPDATE- Default:
1- User Viewable:
- ❌
- User Editable:
- ❌
- Rules:
required|boolean
Difficulty
Starting map difficulty, choose from [easy, medium, hard, extreme]. Used for the very first map, if one is not supplied from an imported character.
- Environment:
Difficulty- Default:
easy- User Viewable:
- ❌
- User Editable:
- ❌
- Rules:
required|in:easy,medium,hard,extreme
Password
By default the server will start with no password required for players to connect. It is recommended to set one to ensure only players you intend can connect.
- Environment:
PASSWORD- Default:
changeme- User Viewable:
- ❌
- User Editable:
- ❌
- Rules:
nullable|max:20
Admin Password
If an admin password is set, players with the correct password can authenticate in-game in order to kick and ban other players.
- Environment:
ADMIN_PASSWORD- Default:
letmein- User Viewable:
- ❌
- User Editable:
- ❌
- Rules:
required|string|max:20
Max players
By default Nightingale supports a maximum of six players in a realm. This maximum can bechanged through a command-line argument. Please note that increasing the maximum number of players past six is unsupported and may result in unintended behaviour.
- Environment:
MAX_PLAYER- Default:
6- User Viewable:
- ❌
- User Editable:
- ❌
- Rules:
required|numeric
Cheats Mode
To allow use of the cheat/debug menu and commands, add the enable cheats command-line argument. Players will need to authenticate with the admin password to use the cheats in-game.
- Environment:
CHEATS- Default:
1- User Viewable:
- ❌
- User Editable:
- ❌
- Rules:
required|boolean
Installation Script
ghcr.io/ptero-eggs/installers:debianbash#!/bin/bash
# steamcmd Base Installation Script
## just in case someone removed the defaults.
if [ "${STEAM_USER}" == "" ]; then
echo -e "steam user is not set.\n"
echo -e "Using anonymous user.\n"
STEAM_USER=anonymous
STEAM_PASS=""
STEAM_AUTH=""
else
echo -e "user set to ${STEAM_USER}"
fi
## download and install steamcmd
cd /tmp
mkdir -p /mnt/server/steamcmd
curl -sSL -o steamcmd.tar.gz https://steamcdn-a.akamaihd.net/client/installer/steamcmd_linux.tar.gz
tar -xzvf steamcmd.tar.gz -C /mnt/server/steamcmd
cd /mnt/server/steamcmd
# SteamCMD fails otherwise for some reason, even running as root.
# This is changed at the end of the install process anyways.
chown -R root:root /mnt
export HOME=/mnt/server
## install game using steamcmd
./steamcmd.sh +force_install_dir /mnt/server +login ${STEAM_USER} ${STEAM_PASS} ${STEAM_AUTH} $( [[ "${WINDOWS_INSTALL}" == "1" ]] && printf %s '+@sSteamCmdForcePlatformType windows' ) +app_update ${SRCDS_APPID} $( [[ -z ${SRCDS_BETAID} ]] || printf %s "-beta ${SRCDS_BETAID}" ) $( [[ -z ${SRCDS_BETAPASS} ]] || printf %s "-betapassword ${SRCDS_BETAPASS}" ) ${INSTALL_FLAGS} validate +quit ## other flags may be needed depending on install. looking at you cs 1.6
## set up 32 bit libraries
mkdir -p /mnt/server/.steam/sdk32
cp -v linux32/steamclient.so ../.steam/sdk32/steamclient.so
## set up 64 bit libraries
mkdir -p /mnt/server/.steam/sdk64
cp -v linux64/steamclient.so ../.steam/sdk64/steamclient.so
#Custom Commands
# Copy default server settings if none exist
if [ ! -f /mnt/server/NWX/Config/ServerSettings.ini ]; then
cp /mnt/server/NWX/Config/ExampleServerSettings.ini /mnt/server/NWX/Config/ServerSettings.ini
echo "ServerSettings.ini created from ExampleServerSettings.ini"
else
echo "ServerSettings.ini already exists, keeping current settings."
fi
# Make sure file is executable
chmod +x /mnt/server/NWX/Binaries/Linux/NWXServer-Linux-Shipping
echo "-----------------------------------------"
echo "Installation completed..."
echo "-----------------------------------------"