Dekiro Dev Blog

Part 21 of 28

Making an Empty Desert Worth Crossing

The developer wanted the desert bigger and emptier, and still worth the trip. What came out of one afternoon: a sandstorm that leaves treasure behind, a material you only find here, two roaming bosses, a caravan that keeps a timetable without sending a single packet, lore tablets, and a tomb you need a key for.

The desert I feel like should be larger and feel somewhat empty. What are rewards we can have there to still make it valuable for players to go there? Even though it should feel somewhat empty?

— the developer

The problem with empty #

Sunscar Desert is the level 40 to 50 map, the fifth of nine. On day five it was about 1.3 by 1.2 km of walkable sand with roughly 1,100 monster packs spread evenly, about 35 m apart, the same density as every other map. It played like a hunting ground that happened to be yellow.

A desert should feel like a desert: wide, quiet, a little hostile. But in a grind game, empty space is dead time. Every minute spent walking across dunes is a minute not spent killing things, and players notice. So the question had two halves: make it emptier, and give people a reason to cross the emptiness anyway.

Seven ideas, six kept #

The AI's answer started with the layout: grow the map to about 2 by 2 km, keep roughly the same number of monsters, and gather them into "islands of life" (oases, canyons, ruins, a raider camp) with nearly empty dunes in between. Then it listed seven rewards that fit an empty map:

  1. Buried treasure: glinting sand mounds you dig up with a Shovel, plus Treasure Maps dropped by raiders that mark one dig spot on your world map.
  2. A Sandstorm world event: low visibility, storm elementals, and half-buried chests uncovered when it passes.
  3. A desert-only material needed for the top upgrade steps.
  4. A wandering caravan merchant on a schedule, selling things nobody else sells.
  5. Rare desert bosses with long respawns.
  6. Key fragments for the Sun Tomb, a dungeon already in the world plan.
  7. Lore tablets at hidden landmarks, with a small permanent bonus for reading all of them, in the spirit of the biologist quests in a popular Korean MMO.

The AI recommended building the shovel first, because it "makes the empty sand the reward itself". The developer disagreed:

I do like 2-7. Not so much of a fan of the shovel thing, to be honest. Let's go.

That was the whole design meeting. The shovel was dropped entirely (no item, no dig spots, no treasure maps), and four agents started on the other six in parallel: one for the map, one for the storm, Sunstone and bosses, one for the caravan and tablets, one for the Sun Tomb.1 The coordinator-and-subagents post has the details of how parallel agents share one repository, and what went wrong when two of them ran the network test on the same port at the same time (it happened here too).

A minute later, a follow-up on monster count:

I guess a few less would also make sense. Maybe less but stronger? Not sure. What do you think?

The AI's answer was a split rather than a yes. In a grind game, levels 40 to 50 run on kills per hour; if every monster gets tougher, the whole map is just slower. So the islands keep the normal density and strength (they're the grinding spots), and the dunes get only a few wanderers that are much stronger and pay much better. About 30% fewer packs overall, nearly all of the cut taken out of the empty sand.

The map: islands and dunes #

The map generator2 tools/mapgen/maps/sunscar_desert.py, a rerunnable Python script like every map generator. The dunes are listed after the islands because the first zone that contains a point wins. lays the desert out inside a ring of sandstone mesas. Oasis Town sits in the south; levels rise to the north. The numbers on the current map:

Area Packs Shadows Spacing
9 islands (oases, ruins, canyons, camp, glass dunes, temple, crater) 0.93 km² 758 66 ~35 m
3 dune bands (Pale Sands, Red Dunes, Deep Dunes) 2.76 km² 25 6 ~330 m

Three quarters of the land holds 3% of the packs. That's the emptiness, by construction.

The Sunscar Desert's top-down overview before (left, about 1.3 x 1.2 km) and after (right, about 2 x 2 km). Each picture is fitted to its frame, so the new map is drawn at a smaller scale: the town in the south is the same size in both

The dune packs use three keys the storm agent added to the pack data for exactly this: "elite": true makes a group spawn as Elites, "level_bonus" lifts it a few levels above the zone, and "loot" swaps in a different drop table. A dune wanderer is either a lone Elite (weight 3) or a pair three levels above the zone (weight 2), both on the desert_wanderer table.

One more knob turned out to matter. The game spawns roaming packs near players every 15 to 25 seconds, up to three around each of them, so that a cleared area doesn't stay dead. On the dunes that would have quietly refilled the emptiness. The map agent added a per-zone "roam_chance", and the dunes use 0.12: about one roaming pack for every eight elsewhere.

How much stronger are the wanderers? The combat simulation (the next post) measured it: a Blade at level 42 needs about 14 basic hits for a King Scorpion on the islands, and 53 for the Elite version out on the Pale Sands. That's "less but stronger", in numbers.

Sunstone: the reason to come back #

Rewards for a visit are nice; a reason to come back is better. Upgrades already had a currency (Shadow Shards), and the top three blacksmith steps are where a game in the style of that MMO gets its long tail. So the desert got its own material, Sunstone ("glass the Sun King's mirror-light fused out of the desert"), and the steps +6 to +7, +7 to +8 and +8 to +9 need 1, 2 and 3 of it. The Fullmoon weapons' own track needs more.3 The Fullmoon weapons post covers that track, its Moon Seals and the 1000-fragment forge.

Where it comes from, today:

Source Sunstone Sun Tomb Key Fragment
Island monsters 6% 0.8%
Dune wanderers 30% 2.4%
Desert Elites 60%, 1-2 8%
Storm Cache 60%, 1-2 24%
Rare bosses always, 3-6 40%
The caravan 6,000 gold, 2 per stop 30,000 gold, 1 per stop
Level 55+ Shadows anywhere 30% -

The last row came later. The balance model noticed that the level-gap rule (monsters seven or more levels below you stop dropping things) cut characters past level 57 off from the desert's Sunstone, and weapons stalled at +6 or +7. The developer's call was that it "should also drop from Shadows after 55+". Those rates were doubled again when the game was retuned from 40 to 20 hours, so the desert band still yields about ten Sunstone an hour.

The Sandstorm #

World events already existed: a server picks one every 40 to 70 minutes (Shadow Surge, Harvest Moon, Gilded Night). The Sandstorm is the first one tied to a single map, and the event system grew a few keys for it, all data in events.json:

  • "map": it only happens on the Sunscar Desert, but the start is announced to everyone, so players on other maps can decide to travel there.
  • "look": for its 12 minutes, the map's sky, fog and weather are overlaid with ochre fog, wind-blown grit at eye height and big soft dust veils. The overlay fades in over five seconds, and the veils fade out near the camera so your own character stays readable.
  • "roamers": Storm Elementals (a sandy figure on a spinning funnel of sand bands) rise out of the ground 12 to 18 m from a player every 12 to 22 seconds, one to three at a time, at most six around each player. They vanish when the storm ends.
  • "aftermath": when it passes, 6 to 10 Storm Caches appear at random spots from a list of 34 candidates spread over the map, mostly out in the dunes, for 10 minutes.
A sandstorm in the Red Dunes: the ochre overlay, grit in the air, a Storm Elemental and scorpions. The quest tracker counts the storm down

The caches are the payoff, and one choice there is worth explaining. The storm agent made each cache openable once per player, not first-come: "Friends who ride out the storm together each get their own share instead of racing each other to the chest. The 10-minute clock and the spread-out spots are still the challenge." The server checks that you're standing at it and rolls the storm_cache table for you alone: gold (a base of 900, times 0.8 to 1.6), gear at a 60% chance with much better rarity odds than monsters, and the materials in the table above.

A Storm Cache after the storm: a half-buried chest with a light beam (left) and opened (right). Each player opens it once

The storm also changes how the empty dunes feel. For 12 minutes they're the most dangerous place on the map, and then for 10 minutes they're the most valuable.

Two rare bosses #

RareSpawns is a small server-only node: for each entry in a map's "rare_spawns", at most one boss is alive, roaming its area instead of pacing a lair, and the next one comes respawn_minutes after it dies. Everyone on the map hears when one appears. The desert has two:

  • The Sand Wyrm (level 50) roams 190 m around the Bones of the Sand Wyrm and respawns after 45 minutes. It burrows: it goes under the sand where nothing can hit it, chases its target as a moving mound at 1.7 times its speed, and comes up under it after a 1.3 second telegraph.
  • The Raider Warlord (level 48) holds the raider camp, respawns after 30 minutes, and calls three raiders at 95%, 60% and 30% of his health.
The Sand Wyrm under the sand, a mound in the ground (left), and surfaced (right)

They're tuned like mini-bosses (about a minute and a half solo, under 25 seconds for a party of four), and their table is the best outside a dungeon: three gear rolls at Rare or better, 3 to 6 Sunstone, Shadow Shards and Cores, a 40% key fragment, and a 3% chance at each of the four Fullmoon weapons. Timers live only for the server session, so a restart spawns both fresh.

A caravan that needs no network #

The caravan was the most interesting one to build, because of a rule the project already had: townsfolk are presentation, built on every machine from map data and moved by the wall clock, with no spawn and no sync.4 The "lived-in world" post explains the townsfolk routines this borrows from. A merchant who walks a 2.9 km loop with two camels and two guards could work the same way.

CaravanRoute is a pure timetable. The map gives it a looped road (22 points) and which points are stops (five: Oasis Town, Palm Hollow, Mirage Springs, The Last Well, The Oasis Ruins). It walks at 2.2 m/s and halts 240 seconds at each stop. From those numbers it computes, for any clock time, where the caravan is and what it's doing:

## A wandering caravan's timetable (map data "caravan": {route: [[x, z], ...], stops: [route indices],
## speed?, halt?, offset?, npc?}): a looped road it walks at `speed`, halting `halt` seconds at each
## stop. Pure: where it is follows from a clock time alone (AmbientNpc.clock(): the wall clock), so
## every machine (server, clients, the world map) agrees without any network traffic.

On the desert that makes a 42-minute loop: 22 minutes of walking, 20 of trading. Every client computes the same position from the same clock, the server's copy stands exactly where the clients see it, and the world map can draw the caravan's live position with no extra message.

Zarah, the Thousand-Li Merchant, leaving Oasis Town with her camels and guards. The banner appears when the caravan comes within 60 m

The caravan agent made one design call of its own: it trades only while halted. "This makes the stops places worth knowing, and a moving merchant would otherwise walk out of range and close its own shop window." Talk to Zarah on the road and she tells you where she camps next and in how many minutes. A banner says "A caravan is near" within 60 m, the world map always shows the road as a dotted line, and it shows her live position if you've seen her in the last 15 minutes.

Her shop sells things no town does: the rare Green and Purple potions, the Scroll of Renewal, two pieces of desert gear (Sandstriders, shoes with 7% move speed; the Oasis Charm), and the two items that make the trip worth timing: Sunstone and a Sun Tomb Key Fragment. Those carry a "limit": two Sunstone and one fragment per character per halt, counted on the server. Five stops per loop means the caravan is a steady but slow source, never a replacement for hunting.

The caravan's shop window, with the per-stop limits on Sunstone and the key fragment

Lore tablets #

Eight tablets stand at the desert's remote landmarks: the Sand Ship, the Sunken Colossus, the Buried Gate, the Lone Obelisk and the rest. Each tells part of the Sun King's story, and they're numbered I to VIII, but placed so that reading them in order means crossing the whole map. Press F at one and its text opens with "Lore 3 / 8". The server records the read only if you're actually standing at that tablet.

Reading all eight gives a permanent bonus that counts like gear you can't take off: 3% move speed and 150 max HP for the desert. Small on purpose, like the classic's biologist rewards. The system was built for the desert and has since spread to every map, 58 tablets in all, each map telling one chapter.5 The story post covers what the tablets say and how the main quest line uses them, without spoilers.

The Sun Tomb #

The last piece turns the desert's drops into a destination. Three Sun Tomb Key Fragments combine (right-click in the bag) into a Sun Tomb Key, and the key opens a portal at the Temple of the Sun, in the level 46 to 50 north. Entering uses one key; your party follows you in for free.

Inside is an instanced dungeon for levels 46 to 52 built around the Sun King's mirrors: light beams. The developer's first question after seeing the screenshots was "What are the light beams?", and the answer is the dungeon in one sentence. Fixed, sweeping, rotating and pulsing bands of light cross the halls, each with a red-orange warning strip before it lights. A lit beam burns players for a share of their max HP, then leaves them alone for 0.8 seconds so it never wipes anyone in one frame.

The beams also solve the tomb's monsters. Mummies are "undying": killing one only knocks it down, and it stands up seven seconds later at 60% HP, unless a beam touches it, or it dies within four seconds of being touched. So you fight next to the light and use the hazard against them. Pressure plates hold doors open while someone stands on them and for a few seconds after (six in one room, nine in another): a party just stands on both, a solo player runs between them. At the end, the Sunken Pharaoh lights extra beams and raises mummies at 70% and 40% of his health.

The Hall of Rays on day five: a sweeping beam crosses the hall, with a scarab and mummies. The walls were 3.2 m then; they are 6 m now, with a cutaway near the camera

The developer's other reaction to these screenshots was about the walls: "The walls of the dungeons need to be higher. Otherwise people will just look over." They had been kept at 3.2 m so the camera could see over them. The fix was taller walls (6 m) that get out of the camera's way instead: wall pieces between the camera and your character dissolve, Diablo-style. That went into the dungeon generator, which was being built the same afternoon, so every later dungeon has it too.6 The dungeon generator post tells that story, including how the beams became a reusable device for other dungeons.

Heat, a day later #

The next day the desert got one more layer: Heat, a meter that builds while you're out in the open and falls in shade, in water, and in safe zones. The generator wrote 78 shade spots (tents, ruins, palms, oases) into the map. It builds slowly (about three minutes to full), and above 60% it starts to cost a little move and attack speed and some mana. A Water Skin from the oasis supplier (120 gold) stops it for three minutes. It's deliberately mild: the point is to make the empty dunes feel hot and to make an oasis feel like relief, not to punish the crossing. It shares its machinery with the other maps' weather, which is the subject of a later post.

What it adds up to #

None of the six features is big on its own. Together they give the empty part of the map a rhythm:

  • Routine: grind the islands for XP and a trickle of Sunstone.
  • Detours: a dune wanderer on the way pays several times what an island pack does.
  • Appointments: the caravan's stops, the rare bosses' respawn timers.
  • Events: a sandstorm announced on every map pulls people into the dunes, and its caches keep them there for ten more minutes.
  • A goal: three fragments, from any of those sources, open the Sun Tomb.

The balance model put a number on the last one: at the current rates, a key takes about two and a half hours of desert hunting. All of these rates, timers and the heat itself are still first guesses; the first playtest so far changed drop rates (doubled, along with the shorter game) but not the structure.

Takeaways #

  • Emptiness is a design choice you build, not one you leave. Three quarters of the land with 3% of the monsters, plus a switch that stops roaming packs from filling it back in.
  • Make the empty space pay, briefly. Strong wanderers and timed caches make the dunes worth crossing without turning them into another grinding spot.
  • A unique material is the long tail. Sunstone gave level 40 to 50 a reason to come back, and then the model showed it also needed a late source.
  • A timetable is cheaper than a network message. If everyone shares a clock, a pure function of time is a replicated entity for free.
  • A one-line "no" saves a feature's worth of work. The shovel was the AI's top recommendation; it never got built, and nothing is missing.

What's next #

The sim mentioned above (bots that fight every zone, every Elite and every boss) is the next post: how it works, what it found in this desert and elsewhere, and how the first playtest changed it again.