EndCore Framework

Building a zombie server

An opinionated walkthrough that turns a fresh EndCore install into a playable survival loop, from an empty world to bases and quests.

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 stageResources
Spawn safeen-core spawn, safe zones in en-zombies, en-respawn
Go outen-garages vehicles, en-vehiclekeys, en-weathersync
Find thingsCorpse loot in en-zombies, death bags in en-inventory
Get hurtSurvival system, zombie bites, radiation, cold
Come backen-shops traders, en-crafting, en-consumables
Get strongeren-skills, XP and levels, en-quests
Go furtheren-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:

KeyDefaultEffect
world.disablePedestrianstrueNo ambient people
world.disableTraffictrueNo moving or parked cars, trains, boats or planes
world.disableDispatchtrueNo 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.luaDefaultMake it harsherMake it easier
survival.hunger.decay0.81.20.5
survival.thirst.decay1.21.80.8
survival.radiation.sicknessAt400250600
survival.infection.growth1.01.50.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:

lua
{
    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.

KeyDefaultNotes
population.perPlayer12Target zombies within 130 m of each player, multiplied by zone density
population.maxTotal120Hard cap server-wide. Raise it carefully on busy servers.
population.nightMultiplier1.4More zombies between 20:00 and 06:00. Needs en-weathersync for the game hour.
population.vehicleMultiplier0.4Fewer spawns around players in vehicles
infection.enabledtrueBites 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:

lua
{
    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.

SourceWhere to change it
Zombie corpsesloot.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 kitstarterItems in en-core/config/shared.lua
Death bagsServerConfig.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 rewardsrewards 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.values in en-shops/config/shared.lua is 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:

lua
-- 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.

KeyFileDefaultNotes
world.maxTotalen-garages/config/server.lua45Abandoned vehicles server-wide
world.perPlayersame4Within 300 m of a player
world.lockedChancesame0.6Share of vehicles that are locked
world.poolssamea weighted listAdd { model = 'dune', type = 'automobile', weight = 2 }
ownership.claimCosten-garages/config/shared.lua250Cash to register a scavenged vehicle
ownership.maxPerCharactersame5Vehicles one character can own
fuel.pumps.workingChancesame0.25Share 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.luaDefaultDecide
territory.maxPerCharacter / maxPerGroup1 / 2How many bases
territory.noBuild3 zonesAdd your safe zones and trader spots so nobody walls them in
upkeep.enabledtrueUnpaid bases decay
raiding.enabledtrueWhether bases can be broken into
raiding.offlineProtectionfalsetrue 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 in en-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 kindOwned by
Tradersen-shops
Vehicle dealersen-garages
Garagesen-garages
Quest NPCsen-quests
Questsen-quests
Crafting benchesen-crafting
Barbersen-clothing
Spawn pointsen-respawn
Zombie zonesen-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.

Tip

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.