SERVER / DEPLOYMENT

Game Server Setup Guide

A complete guide to server token requests, environment variables, server visibility, and launch examples.

This guide collects the environment variables, token request workflow, and lobby visibility rules most commonly used when launching a server. The content has been updated from the latest server configuration document and reformatted for the website.

1. Overview

This manual explains how to configure and launch your own game server through environment variables in a .env file. After startup, the server automatically registers with the official lobby, and your settings determine its visibility and server type.

Note: marker-style variables such as GAME_HOST, GAME_LINK, and GAME_AUTO_RESTART are enabled as soon as they are defined. All other bool / Boolean variables should be set explicitly to true/false or 1/0.

2. Prerequisites

  • You must use a cloud server (Alibaba Cloud, Tencent Cloud, AWS, or a similar provider) or a VPS virtual machine.
  • Required: request a valid game authorization TOKEN (GAME_TOKEN) from the official team. Without a TOKEN, you cannot open a public server.
  • Prepare a server with a public IP address that can be pinged and reached over the network, otherwise the review will be rejected.
  • Install Docker and Docker Compose (recommended), or make sure the server runtime environment meets the game requirements.
  • When applying for a TOKEN, send the email to team@nextindie.cn.

Server application template · Game License and Services Agreement

Text
I. Applicant information
User UID: [Please enter your game account user ID]
Server-bound public IP: [Please enter the unique fixed public IP address. It must respond to ping]
Server physical region: [For example: Asia, North America]
Application purpose and community size: [For example: personal server, server for a specific player community]
II. Important: Non-commercial operation commitment and compliance notice
As the operator behind this server, I have carefully read Chapter 10 of the Game License and Services Agreement and solemnly make the following legally binding commitments:

Purely non-profit nature: This server will remain strictly non-profit.
Only gratuitous donations are allowed: This server may accept only voluntary donations made out of support for the community, without compensation or any return benefit. All sponsored funds may be used only to offset the direct costs of physical hosting, such as server hardware rental, network bandwidth, and DDoS protection.
Strictly no sale of in-game assets or stats: This server will never directly, indirectly, or in disguised form sell any in-game virtual creature or dinosaur, character data, levels, stat bonuses, weapons, equipment, building materials, game tokens, or any virtual items that affect game balance.
Strictly no disguised privilege exchange: This server will never use forms such as donation lotteries, donation bonus gifts, paid custom characters or creatures, or paywalls or entry fees for joining the server or community as an exchange condition for in-game virtual goods or privileges.
No gambling mechanisms: Neither this server nor its associated communities, such as QQ groups or Discord servers, will set up loot boxes, raffles, roulette systems, or rebate mechanisms with a gambling nature involving in-game virtual goods.
III. Privacy isolation and security acknowledgement
I acknowledge and agree that the official collection of this server IP and the generation of a TOKEN are necessary for anti-cheat security and contract performance, and that this data processing complies with privacy regulations.
I undertake to keep the issued authorization TOKEN properly secured and never transfer, lease, or disclose it to any third party in any form. I bear full responsibility for any violations caused by improper management of the TOKEN or IP configuration.
I understand that sending this server application email to the official team constitutes my digital signature and unconditional acceptance of all legal terms in the Game License and Services Agreement. If I violate any of the red lines above, the official team may revoke the authorization TOKEN, blacklist the IP, and impose a platform-wide account ban and device blacklist without prior notice.

3. All configurable parameters

3.1 Basics and authorization

VariableTypeDefaultDescription
GAME_NAMEStringThe MesozoicServer name shown in the room list
GAME_ANNOUNCEMENTStringNoneServer announcement shown in a popup when players join. Supports \n line breaks
GAME_PASSWORDStringNoneServer password. Leave empty for no password
GAME_TOKENStringNoneGame authorization TOKEN. This must be requested from the official team. Without a valid TOKEN, the server cannot register as a public server. See Section 4 for details.
GAME_AUTO_RESTARTPresence flagNoneWhen this variable exists, automatic server restart is enabled to improve long-running stability
GAME_ADMINSStringNoneRegular administrator user IDs for the server, separated by commas, for example 100001,100002,100003.

Multilingual announcements (GAME_ANNOUNCEMENT_XX)

The server automatically matches the announcement to each player's client language. 16 language suffixes are supported: ZH (简体中文), ZHTW (繁體中文), EN (English), JA (日本語), KO (한국어), PT (Português), PTBR (Português Brasil), RU (Русский), ES (Español), FR (Français), DE (Deutsch), AR (العربية), TH (ไทย), VI (Tiếng Việt), ID (Bahasa Indonesia), TR (Türkçe).

Set them in .env as GAME_ANNOUNCEMENT_XX=content, e.g. GAME_ANNOUNCEMENT_EN=Welcome to the server!. When a language-specific announcement is not set, GAME_ANNOUNCEMENT is used as the default fallback.

After editing announcements, the server owner can run /reloadAnnounce to hot-reload them without restarting the server.

3.2 Networking and connection type

VariableTypeDefaultDescription
GAME_IPString127.0.0.1Server bind IP address. If you want players on the internet to connect, fill in the correct public IP
GAME_HOSTPresence flagNoneLAN mode only. When defined, the server automatically detects the machine LAN IP and ignores GAME_IP. The server becomes a LAN server and does not appear in the public server list
GAME_PORTInteger26666Server listen port (UDP). Make sure your firewall allows it
GAME_MAX_PLAYERSInteger64Maximum number of players that can be online at the same time
GAME_GLOBALBooleantrueWhether to register to the global room list. In most cases this should stay true
GAME_PUBLICBooleanfalseSet to true to mark the server as public. If it stays false, the server remains private or visible only to friends
GAME_LINKPresence flagNoneForces a private server (PRIVACY). Define this variable if you want a password-protected private room, optionally together with GAME_PASSWORD
GAME_NODEStringASRegion node shown to players for latency reference. Valid values: AS (Asia), CN (China), NA (North America), SA (South America), EU (Europe), ME (Middle East)

Connection type priority and combinations

If GAME_LINK is defined, the server becomes a private server (PRIVACY). Even if GAME_PUBLIC is set to true, it still exists only as a password-protected private room.

If none of those special variables are enabled, and GAME_PUBLIC is set to true with a valid GAME_TOKEN, the server is registered as an authorized server (AUTHORIZE). This is the main way regular players host public servers.

If GAME_PUBLIC is false, or the TOKEN is invalid, the server does not appear in the public list.

3.3 Game rules

VariableTypeDefaultDescription
GAME_DEAD_TIMEInteger (seconds)1800How long corpses remain before decaying away
GAME_START_GROWTHFloat0.1Initial growth value for a new character (0.0 ~ 1.0)
GAME_MAX_GROWTHFloat1.0Maximum growth value for a character
GAME_SPEED_GROWTHFloat1.0Growth speed multiplier
GAME_TEAMInteger6Maximum team size
GAME_CHILDInteger0Maximum number of offspring a player can own at the same time. 0 means unlimited
GAME_SAFEInteger (seconds)0Spawn protection duration for new characters
GAME_TEAM_DAMAGEBooleantrueWhether friendly fire is allowed
GAME_HATCHBooleantrueAllows invited hatching and cooperative breeding with other players
GAME_EVOLBooleantrueAllows eggs to become evolution eggs. If disabled, eggs always remain in the current species
GAME_PKBooleanfalseSet to true to allow players to initiate duels
GAME_ALT_TURNBooleantrueAllows turning in place
GAME_MALE_REBIRTHBooleanfalseAllows rebirth using male characters
GAME_SINGLE_BREEDBooleanfalseAllows solo hatching without a mate
GAME_ERA_REBIRTHBooleanfalseAllows cross-generational rebirth
GAME_DOWNGRADE_REBIRTHBooleanfalseAllows downgraded rebirth with growth rolled back
GAME_LEARNBooleanfalseAllows gene learning. Sub-rule: GAME_MAX_LEARN (integer, default 1, 0 = unlimited) sets the max genes a character can learn
GAME_MAX_LEARNInteger1Maximum number of genes a character can acquire through learning. 0 = unlimited (still capped by the innate gene slot limit of the character). Sub-rule of GAME_LEARN
GAME_CHILD_ATTRIBUTE_INHERITBooleanfalseAllows offspring to inherit parent attributes. Sub-rules: GAME_CHILD_SIZE_INHERIT_MAX_MULTIPLIER and GAME_CHILD_ATTR_INHERIT_MAX_MULTIPLIER cap the maximum growth
GAME_CHILD_SIZE_INHERIT_MAX_MULTIPLIERFloat1.5Maximum inheritable body size multiplier relative to species base size. Sub-rule of GAME_CHILD_ATTRIBUTE_INHERIT
GAME_CHILD_ATTR_INHERIT_MAX_MULTIPLIERFloat1.5Maximum inheritable attribute multiplier (health/attack/defense/speed/consume) relative to species baseline. Sub-rule of GAME_CHILD_ATTRIBUTE_INHERIT
GAME_HABITATBooleanfalseEnables the habitat capture system. Set to true to allow players to capture habitats on the map and receive growth buffs

3.3.1 Realism and advanced rules

VariableTypeDefaultDescription
GAME_REALISMBooleanfalseEnables the complete realistic PVE preset: disables PVP, uses Realism difficulty, and enables diet hostility, ecosystem rules, duels, berserk genes, default PVE AI attacks, nest protection, invite protection, egg protection, and all realism rules. Related variables can override the preset
GAME_REALISM_PKBooleanNot setOverrides the duel rule in the Realism preset; set to true to allow players to initiate duels
GAME_REALISM_CRAZYBooleanNot setOverrides the berserk-gene rule in the Realism preset; set to true to enable berserk genes
GAME_INVITE_PROTECTIONBooleanfalseEnables protection after team or hatching invitations; both players cannot initiate attacks during protection, while confirmed duels and valid self-defense are unaffected
GAME_EGG_PROTECTIONBooleanfalseWhen enabled, other players cannot directly destroy or eat your eggs; eggs inside a nest are still destroyed normally when the nest is damaged or destroyed
GAME_REALISM_CARNIVORE_RACE_TEAM_LIMITBooleanfalseCarnivores may team only with the same species; herbivores, omnivores, and aquatic creatures are not limited
GAME_REALISM_CORPSE_NEARBY_SAN_PENALTYBooleanfalseKilling another player near a corpse applies a SAN penalty to carnivores
GAME_REALISM_PVE_DIET_HOSTILEBooleanfalseIn PVE, creatures with different diets are hostile by default and can attack without a duel
GAME_PVE_AI_DEFAULT_ATTACKBooleanfalseWhen enabled, players and wild AI creatures can attack each other in PVE without dueling; protection and team, companion, owner, and kin restrictions still apply
GAME_REALISM_HERBIVORE_PICKUP_CORPSEBooleanfalseControls whether herbivores can carry corpses; in the current code, true blocks corpse carrying
GAME_REALISM_HERBIVORE_CORPSE_FEARBooleanfalseHerbivores build stress while inside the corpse detection range
GAME_REALISM_DYNAMIC_TEAM_WEIGHTBooleanfalseEnables the “Dynamic team weight” rule: calculates team weight from creature level and prevents joining after the total limit is reached
GAME_REALISM_REVENGEBooleanfalseAfter being killed, a player cannot initiate an attack against the killer during protection; self-defense remains allowed
GAME_REALISM_CARCASS_CLAIMBooleanfalseCarnivores claim a corpse after a player kill; claimants cannot initiate attacks until the corpse is eaten or they abandon it
GAME_REALISM_NESTBooleanfalseEnables the “Nest protection” rule: prevents destroying other players’ nests; existing PVE rules may independently prohibit damaging other players’ nests
GAME_REALISM_KILL_COOLDOWNBooleanfalseAfter a kill, blocks another initiated attack against the same player or device; both teams also receive a shorter cooldown
GAME_REALISM_BAITINGBooleanfalsePlayers lingering near a feeding player, a complete nest, or an occupied habitat provoke the owner; the protected party may counterattack for a limited time
GAME_REALISM_TEAM_LEAVEBooleanfalseAfter leaving or being kicked from a team, temporarily blocks initiated attacks against former teammates
GAME_REALISM_HUNGER_HUNTBooleanfalseWhen hunger falls below the trigger ratio, a carnivore may hunt once outside PVE diet restrictions; it must feed to the reset ratio before using it again
GAME_REALISM_RACE_CHAT_ISOLATIONBooleanfalseWorld and nearby chat are visible only to players of the same species; team chat is unaffected
GAME_DISABLED_RACESStringEmptyComma-separated English species IDs, for example trex,mapu,velo. Listed species cannot be created, selected, or hatched
GAME_WORLD_CHAT_COOLDOWN_SECONDSInteger (seconds)15Wait this many seconds between world-chat messages; set to 0 to disable the cooldown. Developers, server owners, and admins are exempt from this cooldown
VariableTypeDefaultDescription
GAME_REALISM_CORPSE_NEARBY_SAN_MULTIPLIERFloat3SAN multiplier deducted for a player kill near a corpse
GAME_REALISM_CORPSE_NEARBY_RANGEFloat (meters)50Detection range for corpse-nearby rules
GAME_REALISM_MAX_TEAM_WEIGHTInteger12Value of the “Maximum team weight” rule; the absolute member limit still comes from GAME_TEAM
GAME_INVITE_PROTECTION_SECONDSInteger (seconds)1800Duration of mutual protection from initiated attacks after a team or hatching invitation
GAME_REALISM_REVENGE_SECONDSInteger (seconds)1800How long a killed player is protected from initiating an attack against the killer
GAME_REALISM_KILL_SECONDSInteger (seconds)1500Cooldown before the killer can initiate another attack against the same player or device
GAME_REALISM_TEAM_FIGHT_SECONDSInteger (seconds)900Attack cooldown between members of both teams after valid damage; disbanding or regrouping does not clear it
GAME_REALISM_TEAM_LEAVE_SECONDSInteger (seconds)900Cooldown before a departing player can initiate an attack against a former teammate
GAME_REALISM_CARCASS_ABANDON_RANGEFloat (meters)200Abandonment timing starts after every claimant moves farther than this distance from the corpse
GAME_REALISM_CARCASS_ABANDON_SECONDSFloat (seconds)60Releases the corpse claim after claimants remain away for this long
GAME_REALISM_BAITING_RANGEFloat (meters)30Detection radius for feeding and nest-defense provocation
GAME_REALISM_BAITING_THRESHOLDFloat (seconds)15Time spent continuously in the provocation detection range before counterattack permission is granted (shared by feeding, nest-defense, and habitat-defense provocation)
GAME_REALISM_BAITING_PERMISSION_SECONDSFloat (seconds)60How long the protected side may initiate a counterattack after provocation (shared by feeding, nest-defense, and habitat-defense provocation)
GAME_REALISM_HUNGER_HUNT_THRESHOLDFloat (ratio)0.2At less than 20% satiety, a carnivore receives one hunt permission outside PVE diet restrictions
GAME_REALISM_HUNGER_HUNT_RESET_THRESHOLDFloat (ratio)0.8After using the hunt permission, satiety must recover to 80% before it is granted again

Realism preset order: GAME_REALISM=true applies the complete preset first, then GAME_REALISM_*, GAME_PVE_AI_DEFAULT_ATTACK, GAME_INVITE_PROTECTION, GAME_EGG_PROTECTION, and GAME_INVITE_PROTECTION_SECONDS override their corresponding rules. Without the preset, realism and protection switches use their normal defaults.

3.4 AI and ecosystem

VariableTypeDefaultDescription
GAME_MAX_AIBooleantrueWhether AI ecosystem creatures are spawned. If disabled, only players will exist on the map
GAME_AI_MATEBooleanfalseWhether an AI mate is allowed to follow and assist the player

3.5 Genes and proficiency

VariableTypeDefaultDescription
GAME_CRAZYBooleantrueAllows berserk genes
GAME_GENE_SKILLFULBooleantrueEnables the gene proficiency system
GAME_KILL_SKILLFULBooleanfalseWhether killing other players grants gene proficiency

3.6 Game modes (choose one)

VariableTypeDescription
GAME_MODE_SANDBOXBooleanSet to true to enable Sandbox mode, allowing players to freely choose species and disabling berserk genes
GAME_MODE_EVOLBooleanSet to true to enable Evolution mode, which allows evolution-only gameplay
GAME_MODE_PRIMEVALBooleanSet to true to enable Primeval mode, which enables berserk genes and downgraded rebirth while disabling gene proficiency

Enable only one mode. If multiple modes are defined, the one defined later overrides the earlier one.

3.7 Difficulty settings

VariableTypeDefaultDescription
GAME_SIMPLEBooleanfalseSet to true to enable simple difficulty: generational rebirth, downgraded rebirth, and solo hatching are enabled while invited hatching is disabled
GAME_NORMALBooleanfalseSet to true to enable normal difficulty: only generational rebirth is enabled
GAME_HARDInteger0Difficulty level value. Higher values are harder and override the previous two Boolean options

3.8 PVP / PVE (choose one)

VariableTypeDescription
GAME_PVPBooleanSet to true to enable PVP mode (players can attack each other)
GAME_PVEBooleanSet to true to enable PVE mode (player damage is disabled, but duels are still allowed)

Choose one of these modes. It is not recommended to define both.

3.9 Map

VariableTypeDefaultDescription
GAME_MAPStringTag of the first built-in mapMap identifier, for example Oasis. Refer to the official map list for available values

3.10 Social and chat

VariableTypeDefaultDescription
GAME_WORLD_CHATBooleantrueInitial state of the world chat channel. Set to false to disable world chat for all players by default; the host can still toggle it at runtime with /worldchat

3.11 MOD loading

VariableTypeDefaultDescription
GAME_MODSStringNoneComma-separated MOD names to load, for example ModA,ModB. Make sure those MODs are correctly installed in the server Data/Mods directory

Boolean parameter syntax

Use true/false or 1/0 for all Boolean variables, for example GAME_PVP=true and GAME_WORLD_CHAT=false. Marker-style variables take effect as soon as they exist.

4. Server types and lobby visibility

Server typeRequired environment variablesCharacteristics
LAN server (LAN)Define GAME_HOSTOnly players inside the same LAN can connect. The server does not appear in the public lobby
Private server (PRIVACY)Define GAME_LINK, optionally together with GAME_PASSWORD. No TOKEN is requiredJoining requires a password. The server remains private by default, though friends can still connect directly through other means. It does not appear in the public lobby list
Authorized server (AUTHORIZE)Set GAME_PUBLIC to true and provide a valid GAME_TOKEN. Do not define GAME_HOST, GAME_LINK, or GAME_OFFICIALThis is how most players host public servers. The server appears in the lobby and is marked as an authorized server, ranked just below official servers

Key reminders

  • If you want your server to appear in the lobby and be searchable by all players, all three conditions must be met: 1) set GAME_PUBLIC to true, 2) provide a valid GAME_TOKEN, and 3) do not enable GAME_HOST or GAME_LINK.
  • If you want a password-protected private room, you can use GAME_LINK together with GAME_PASSWORD. This kind of server does not appear in the public lobby list.
  • A public server without a valid TOKEN will be blocked during registration and will report that the server TOKEN is invalid or expired.
  • After startup, the server sends a heartbeat to the lobby every 90 seconds to remain listed. If heartbeats stop, the server is removed from the list, but connected players are not disconnected.

5. Configuration examples

5.1 Sandbox mode server

INI
# Game authorization TOKEN (request from the official team; required for public servers)
GAME_TOKEN=
# Server name
GAME_NAME=The Sandbox
# Public IP (127.0.0.1 is only for local testing; use your real public IP so others can connect)
GAME_IP=203.0.113.10
# Server port (UDP)
GAME_PORT=26666

# Corpse despawn time (seconds)
GAME_DEAD_TIME=600
# Offspring count: 0 = disabled, 1 = one, 2 = two, and so on
GAME_CHILD=1

# Enable Sandbox mode
GAME_MODE_SANDBOX=true

# Register to the global server list
GAME_GLOBAL=true
# Maximum players
GAME_MAX_PLAYERS=50
# Server node (region hint for players only; no functional effect)
GAME_NODE=AS
# Public server
GAME_PUBLIC=true

# Allow gene proficiency
GAME_GENE_SKILLFUL=true
# Allow gaining proficiency from kills
GAME_KILL_SKILLFUL=true
# Allow gene learning
GAME_LEARN=true
# Game difficulty (higher is harder)
GAME_HARD=1
# No evolution eggs (eggs always stay in the current species)
GAME_EVOL=false

# Map name
GAME_MAP=Oasis
# Allow AI mate
GAME_AI_MATE=true

5.2 Evolution mode server

INI
# Game authorization TOKEN (request from the official team; required for public servers)
GAME_TOKEN=
# Server name
GAME_NAME=The Evolution
# Public IP (127.0.0.1 is only for local testing; use your real public IP so others can connect)
GAME_IP=203.0.113.10
# Server port (UDP)
GAME_PORT=26666

# Corpse despawn time (seconds)
GAME_DEAD_TIME=1200
# Offspring count: 0 = disabled, 1 = one, 2 = two, and so on
GAME_CHILD=1

# Enable Evolution mode
GAME_MODE_EVOL=true
# Allow eggs to contain evolution eggs (this is NOT the evolution-mode switch)
GAME_EVOL=true
# Enable Primeval mode
GAME_MODE_PRIMEVAL=true

# Register to the global server list
GAME_GLOBAL=true
# Maximum players
GAME_MAX_PLAYERS=50
# Server node (region hint for players only; no functional effect)
GAME_NODE=AS
# Public server
GAME_PUBLIC=true

# Game difficulty (higher is harder)
GAME_HARD=0
# Allow AI mate
GAME_AI_MATE=true