A fresh EndCore install is already playable, but the defaults are a starting point, not a finished server. This walkthrough takes you through the decisions that shape a survival server, in the order players will feel them. It links to the reference pages for every setting.
Before you start, set closedServer = true in en-core/config/server.lua and give your staff encore.bypassclosed. You can build in peace and open the doors when you're done.
The survival loop you're building
Every good zombie server has the same loop: spawn safe, go out, find things, get hurt, come back, get stronger, go further. Each EndCore resource feeds one part of it.
| Loop stage | Resources |
|---|---|
| Spawn safe | en-core spawn, safe zones in en-zombies, en-respawn |
| Go out | en-garages vehicles, en-vehiclekeys, en-weathersync |
| Find things | Corpse loot in en-zombies, death bags in en-inventory |
| Get hurt | Survival system, zombie bites, radiation, cold |
| Come back | en-shops traders, en-crafting, en-consumables |
| Get stronger | en-skills, XP and levels, en-quests |
| Go further | en-properties bases, groups, en-party |
1. Empty the world
The apocalypse starts with silence. en-core/config/client.lua switches GTA's ambient population off by default:
| Key | Default | Effect |
|---|---|---|
world.disablePedestrians | true | No ambient people |
world.disableTraffic | true | No moving or parked cars, trains, boats or planes |
world.disableDispatch | true | No police, EMS, fire trucks or wanted level |
Leave these on. Zombies, traders and scavengeable vehicles are spawned by scripts and are not affected. If a city feels too dead during the day, add a blackout for atmosphere with /blackout on (en-weathersync) instead of turning traffic back on.
See World and death.
2. Decide how hard survival is
The survival tick runs every 60 seconds. With the defaults, a fresh character runs out of water in about 1 hour 23 minutes and food in about 2 hours of play. That suits a server where players eat and drink a few times a session.
Key in en-core/config/server.lua | Default | Make it harsher | Make it easier |
|---|---|---|---|
survival.hunger.decay | 0.8 | 1.2 | 0.5 |
survival.thirst.decay | 1.2 | 1.8 | 0.8 |
survival.radiation.sicknessAt | 400 | 250 | 600 |
survival.infection.growth | 1.0 | 1.5 | 0.6 |
Food and medicine are the other half of the balance. Each consumable's effects, over-time courses and sickness risks are in en-consumables/config/shared.lua. Dirty water with a 35% chance of infection is a good example of making choices matter.
Temperature comes from en-weathersync. Snow is off by default (Config.weather.snow = false); turning it on makes clothing warmth and campfires essential.
See Survival system, en-consumables and en-weathersync.
3. Make spawns safe
New characters appear at defaultSpawn in en-core/config/shared.lua, which is Burton Checkpoint. en-zombies ships a safe zone with a 90 m radius at the same spot, so new players aren't mauled on arrival.
When players die, en-respawn lets them choose between three spawn points: Burton Checkpoint, Sandy Shores Camp and Paleto Bay Outpost. The en-respawn config says to keep spawns inside safe zones, but only Burton has one by default. The Sandy Shores Camp spawn even sits inside the Sandy Shores Quarantine hot zone.
Fix that before you open. Add safe zones to Config.zones in en-zombies/config/shared.lua. A safe zone always wins over a hot zone it overlaps:
{
name = 'sandy_camp', label = 'Sandy Shores Camp', type = 'safe',
coords = vec3(1853.8, 3689.4, 34.3), radius = 60.0,
},
{
name = 'paleto_outpost', label = 'Paleto Bay Outpost', type = 'safe',
coords = vec3(-448.0, 6008.0, 31.7), radius = 80.0,
},Or move the spawns. You can do both live from the Build tab (see step 11).
See en-respawn and en-zombies.
4. Tune the horde
The zombie director keeps one shared crowd around nearby players. Start with the population caps in en-zombies/config/server.lua, then shape the world with zones.
| Key | Default | Notes |
|---|---|---|
population.perPlayer | 12 | Target zombies within 130 m of each player, multiplied by zone density |
population.maxTotal | 120 | Hard cap server-wide. Raise it carefully on busy servers. |
population.nightMultiplier | 1.4 | More zombies between 20:00 and 06:00. Needs en-weathersync for the game hour. |
population.vehicleMultiplier | 0.4 | Fewer spawns around players in vehicles |
infection.enabled | true | Bites can infect |
The mix of zombie types is set in en-zombies/config/shared.lua. The open world is 72% walkers, 20% runners and 8% brutes. Hot zones raise density and change the mix, which is how you make a place feel dangerous and worth the trip:
{
name = 'fort_zancudo', label = 'Fort Zancudo', type = 'hot',
coords = vec3(-2250.0, 3150.0, 32.8), radius = 600.0,
density = 2.2, types = { walker = 40, runner = 40, brute = 20 }, radiation = 0,
},A good rule: put your best loot and your hardest zones in the same places. Brutes already drop from the rare loot table.
See en-zombies and Radiation zones.
5. Decide what players find
Loot is the reason to leave the safe zone. EndCore has four sources out of the box.
| Source | Where to change it |
|---|---|
| Zombie corpses | loot.common and loot.rare in en-zombies/config/server.lua. Each entry is { item, min, max, weight } or { cash = true, min, max, weight }, and nothing is the weight of an empty roll. |
| Starter kit | starterItems in en-core/config/shared.lua |
| Death bags | ServerConfig.death in en-inventory/config/server.lua: how much cash, which items and which worn clothes drop, and how long bags last (48 hours) |
| Quest rewards | rewards in en-quests/data/quests.lua |
Keep the corpse loot modest (scrap, salvage, bandages, a little cash) so traders and crafting stay useful. Every new item needs a definition first; follow Add an item.
The death bag settings decide how punishing death feels. The defaults drop half the carried cash, give each stack a 40% chance to drop, and give weapons 60%. For a hardcore server, raise itemChance; for a casual one, lower it or set death.enabled = false.
6. Set up traders and the economy
Traders turn loot into supplies. en-shops ships three: the Burton quartermaster, a Sandy Shores scrapper and a Paleto medic. Two settings matter most.
Config.valuesinen-shops/config/shared.luais the base cash value of every item. An item with no value can't be sold to anyone.- Each trader has limited stock, charges up to 50% more as the shelf empties, and pays less for things it already holds. That stops players farming one item for money.
A few items that drive the late game are not sold anywhere by default: building_plan (needed to build a base) and breach_charge (for raiding). Decide how players earn them. For example, add a plan to a trader and lock it behind character level:
-- en-shops/config/shared.lua, inside Config.values
building_plan = 400,
-- in a trader's sells list
{ item = 'building_plan', max = 3, requires = { level = 3 } },Or make it a quest reward. See Add a trader and en-shops.
7. Scatter vehicles to scavenge
With traffic off, the only cars are the ones en-garages leaves at roadsides: damaged, low on fuel and often locked. Players break in with a lockpick, hotwire the engine, and claim the vehicle at a garage for cash.
| Key | File | Default | Notes |
|---|---|---|---|
world.maxTotal | en-garages/config/server.lua | 45 | Abandoned vehicles server-wide |
world.perPlayer | same | 4 | Within 300 m of a player |
world.lockedChance | same | 0.6 | Share of vehicles that are locked |
world.pools | same | a weighted list | Add { model = 'dune', type = 'automobile', weight = 2 } |
ownership.claimCost | en-garages/config/shared.lua | 250 | Cash to register a scavenged vehicle |
ownership.maxPerCharacter | same | 5 | Vehicles one character can own |
fuel.pumps.workingChance | same | 0.25 | Share of fuel pumps that still work each restart |
Lockpick and hotwire difficulty live in en-vehiclekeys/config/shared.lua. Failed lockpicks can set off an alarm that draws zombies.
See en-garages and en-vehiclekeys.
8. Give players things to make
Crafting turns junk into gear. Recipes belong to a station: by hand (J), at a workbench, or at a campfire. Standing near a campfire also warms players up.
Add recipes that use your loot, and gate strong ones behind a blueprint item or a crafting skill level. See en-crafting.
9. Let players build bases
Bases give groups a reason to log in tomorrow. A survivor uses a building_plan to plant a Base Flag, which claims 35 m around it. Members build walls, gates, storage and utility pieces inside.
Key in en-properties/config/shared.lua | Default | Decide |
|---|---|---|
territory.maxPerCharacter / maxPerGroup | 1 / 2 | How many bases |
territory.noBuild | 3 zones | Add your safe zones and trader spots so nobody walls them in |
upkeep.enabled | true | Unpaid bases decay |
raiding.enabled | true | Whether bases can be broken into |
raiding.offlineProtection | false | true protects bases while no member is online, for a PvE-leaning server |
Workbench and campfire pieces work as crafting stations. See en-properties.
10. Groups, parties, skills and quests
These systems keep players playing together and give them goals.
- Groups are persistent bands of survivors with ranks, stored in
en-core. Adjust size, founding cost and rank names inen-core/shared/groups.lua. Groups can own vehicles and bases. See Groups. - Parties are session teams of up to 4. Nearby members share XP and corpse loot. See en-party.
- Character levels come from XP for kills, searches and quests, and go up to level 50. See XP and levels.
- Skills improve by doing (sprinting, shooting, searching, crafting, repairing) and feed bonuses into other resources. Character levels also grant perk points. See en-skills.
- Quests give new players a path. The defaults include a short story chain at the checkpoint and a repeatable scrap run. Write your own with Create a quest.
11. Place content live with the world builder
You don't have to do all of this in config files. Press F10 and open the Build tab of the admin panel to place and edit content while standing in the world.
| Build tab kind | Owned by |
|---|---|
| Traders | en-shops |
| Vehicle dealers | en-garages |
| Garages | en-garages |
| Quest NPCs | en-quests |
| Quests | en-quests |
| Crafting benches | en-crafting |
| Barbers | en-clothing |
| Spawn points | en-respawn |
| Zombie zones | en-zombies |
Every position field has Use my position and Go there buttons, so placing a trader is a matter of standing where they should stand. Saved entries go live immediately and survive restarts. An entry with the same id as a config entry replaces it, and deleting the placed entry restores the config version.
A practical workflow: keep a few reliable defaults in config files, and let your staff build and adjust the live world from the Build tab. See en-admin.
12. Playtest before you open
Walk the loop yourself, ideally with a friend:
- Create a new character and check the spawn, starter kit and creator.
- Leave the safe zone on foot and check zombie density feels right by day and by night.
- Search corpses and sell the loot. Check that prices feel fair.
- Break into a car, hotwire it, drive it to a garage and claim it.
- Craft something at a workbench and at a campfire.
- Get bitten, get infected, and treat it.
- Walk into a hot zone and watch the Geiger counter.
- Die, check the death bag, and wake up at each spawn point.
- Found a group, plant a base, build a wall and a crate, pay upkeep.
- Take and finish the first quest.
Use /charinfo me, /survival, /zombies stats and /giveitem to speed this up. See Commands.
When it all holds together, set closedServer = false and open your doors.
Need a custom feature, a unique map area or a bespoke system? Fxora, the studio that develops EndCore, takes custom development work. Ready-made addons are available from Upgrade Scripts.