Dudungsil Games두둥실게임즈
DEVLOG EP.03

The Day the Monsters Grew Up and the Game Got Its Name

An eight-commit day. Monsters learned to level up and awaken, hero loot became a real gear system, and all 24 battle sprites got redrawn. At 4:18 p.m. the game got its name.

  • Period2026-09-17
  • Commits8
  • Reading time16 min

한국어 원문 읽기 →

Top row shows the Sep 15 versions of Ember Slime, Coral Crab, a knight and Naia; the bottom row shows the same characters redrawn as 64-pixel pixel art on Sep 17
The same characters on Sep 15 (top) and after the Sep 17 redraw (bottom).

In part 2 I threw away the prototype and built the skeleton: design docs, a new battle engine, a pixel art style, and saving that settles rewards safely. September 17 was the day I put meat on those bones, and I got a lot done in one day.

Quick context if you landed here first: Dungeon Division is a mobile dungeon defense game where you side with the dungeon. Adventurer parties raid you, and you place monsters on each floor to stop them.

In the design doc's order, this was stage 2, the "growth loop." The question that stage had to answer was: "Do you want one more run? Is it fun to equip the gear you looted?"

I didn't save a single editor screenshot that day. So instead I'm using the character, gear and effect art that actually went into that day's commits.

Monster progression: level-ups, awakening, skill levels

The first thing I built was monster progression. If you've played a monster-collecting RPG, the shape will look familiar, but I kept a few parts simple on purpose.

Leveling costs gold and nothing else

There's no XP. You level up with gold only (decision D-02 from part 2). One currency means one question: who do I spend this gold on? There are three buttons, [+1], [+5] and [To cap], and the total cost shows before you tap. If you're short on gold, it levels as far as you can afford.

Each level adds 8% of the base HP, attack and defense. Attack speed and crit don't scale with level. I wanted each species' personality to survive leveling instead of getting buried under it.

Awakening raises the cap

The level cap starts at 20. Each awakening adds 10, so a full five-step awakening takes you to 70.

Awakening step012345 (full)
Level cap203040506070
Base stat bonus0+4%+8%+12%+16%+20%
RequirementLv20Lv30Lv40Lv50Lv60

The material is either a duplicate of the same species or Soulstones of that element. Soulstones drop from defeated adventurers. So even if you never pull a duplicate, you can still awaken by fighting. Full awakening unlocks the ultimate. My very first note said "raise the max level to unlock an ultimate," and this is where that ended up.

Skills level too. A basic skill at Lv5 has up to 40% stronger effects, and from Lv4 its cooldown drops by a second. Skill levels need awakening behind them, so the natural order becomes level, then awaken, then skills.

Storage and the collection

In the afternoon I made the monster list and detail screen. There are Monster, Boss and Collection tabs, and the detail screen has four tabs of its own. Skill descriptions aren't hand-written. They're generated from the skill effect data, so when I change a number the text follows and the description can never drift from what the skill really does. I was pretty happy with that one.

Storage holds 100 monsters. Overflow goes to the mailbox, so a monster you earned as a reward never just vanishes. Releasing a monster you don't need refunds 80% of the gold spent on leveling plus Soulstones, and its gear goes back to storage. Anything Epic or above is locked automatically when you get it. Releasing one by accident is the worst feeling.

Dev notesThe stat formula, and what "power" is actually for

Base stats are calculated like this:

base stat = species stat (Lv1) × rarity multiplier × (1 + 0.08 × (Lv − 1)) × (1 + awakening bonus)

Gear flat values are added on top, then synergy, boss effects and gear % options are summed and multiplied in. That order is written down in exactly one doc, and every other system points to it.

I also defined the "power" number that day, and the design doc says flatly: "Only for list sorting, recommended lineups and recommended-power labels. Not for balance decisions." Power is an approximation that leaves out synergy. Balance the game around it and the fun of placement disappears. Balance is judged by running real battles in the simulator further down.

Turning hero loot into a real gear system

On day one, loot was one item per class with one effect. That day I rebuilt it into a proper gear system.

The 18 gear icons drawn on Sep 17
Gear icons from the Sep 17 commit. Left to right: drops from the knight, warrior, mage, priest, archer and rogue. Top to bottom: weapon, armor, accessory.
  • 18 base items: 6 adventurer classes × weapon, armor and accessory. Knights tend to drop shields, priests necklaces, and mages, archers and rogues their weapons.
  • Tier and rarity are separate. Tier (1-5) is the grade of the party that dropped it, so it tells you *when* you got it. Rarity (Common, Rare, Epic, Legendary) tells you *how lucky* you were. A tier 5 Common sword found later beats a lucky Epic sword from early on. That keeps you swapping gear.
  • 9 kinds of sub-options: attack/HP/defense %, crit, attack speed, skill cooldown, lifesteal, damage reduction and ultimate charge. Higher rarity rolls more of them.
  • Gear keeps the element of the adventurer who dropped it. If it matches the wearer's element, a bonus switches on.
  • Collect 2 or 3 pieces from the same adventurer faction and you get a set bonus. The water faction's gear leans toward HP, the fire faction's toward attack.
  • Enhancement never fails. It just costs. The design doc says "we don't charge for waiting or failure," and I kept to that.

Which rarity drops depends on the party's grade. The draft numbers at the time:

Party gradeCommonRareEpicLegendary
Novice100%
Skilled70%30%
Elite30%55%15%
Heroic50%45%5%
Legendary20%60%20%

There are 6 sets, one per faction. These are the faction and set names as they were on Sep 17 (most were renamed later).

FactionSet2 pieces3 pieces
Blue Shield Company (Water)BluesteelMax HP +6%Damage taken −8%
Ashen Expedition (Fire)EmbersAttack +6%Chance to burn on basic attacks
Greenlight Trackers (Nature)ThornwoodAttack speed +5%Skill cooldown −10%
Dawn Paladins (Light)DaybreakDefense +8%Shield at battle start
Black Moon Brotherhood (Dark)EclipseCrit +5%pLifesteal +10%
Royal RaidKingdomAll stats +3%Ultimate charge +30%

Enhancing comes later when the Forge opens. It goes to +15, each step raises the main option by 5%, and at +3, +6, +9, +12 and +15 one sub-option goes up a step too. Move enhanced gear to another monster and the enhancement comes with it.

The gear menu opens at dungeon Lv.3. Gear storage has 200 slots, overflow goes to mail, and when it's full you can salvage starting from the oldest.

Rolling the loot before the fight

The most important gear decision was rolling loot in advance. When an adventurer party is generated, each member already carries the item they'll drop. With a high enough Watchtower level you can see it before the battle: "that knight has an Epic shield."

This changed combat more than I expected. You stop thinking only about winning and start planning a lineup that takes down the one carrying the item you want. Adventurers who flee drop nothing, so blocking the exit suddenly matters. The design doc puts it like this: "You go after that knight because you want that sword."

Dev notesGear is merged in the lineup snapshot, and the battle engine never sees it

Gear options aren't calculated inside the battle engine. When a lineup is confirmed, the snapshot pre-merges each monster's flat gear values and % options, and the engine only receives the merged numbers.

  • Only effects that fire mid-battle hook into the engine: lifesteal, ultimate charge, the set's burn or starting shield.
  • After adding this, I re-ran 900 existing gearless battles and confirmed not one result changed. That's the check that the new system didn't quietly touch the existing balance.
  • Since loot is rolled when the party is generated, saving and reloading drops the same item, and settlement just moves the pre-rolled value. Reward RNG is separated from battle results, which made replays and tests easier.
  • The gear save format changed, so I added code that migrates gear from older saves.

Redrawing all 24 characters, two days later

In the afternoon I worked on art. I redrew all 24 battle characters I'd made just two days earlier.

Characters on Sep 15 versus Sep 17
Top: the Sep 15 versions. Bottom: the Sep 17 redraws. Left to right: Ember Slime, Coral Crab, Shadow Goblin, knight, mage, and the final boss Naia.

The Sep 15 characters were drawn large with AI image generation and then shrunk. Honestly, they were pictures that looked like pixel art. On the 17th I regenerated them from scratch as real 64-pixel sprites (128 for bosses) with PixelLab, an AI pixel art tool. Pixels land on the screen one to one, so they clash less with the battle backgrounds and UI. Animations follow the same spec as part 2: idle, attack, hit and death.

If I'm being honest, the slime on top is cuter. But picture dozens of them standing together on the battle screen and the bottom row is clearly right.

The 24 battle characters redrawn on Sep 17
First frames of the 24 sprites redrawn on Sep 17: 15 monsters, 3 bosses (Elderroot, Ignis, Naia), and the 6 adventurer classes (archer, knight, mage, priest, rogue, warrior).

I made new effects too. Each element has hit, projectile, cast, skill, area and ultimate effects, plus heal, shield, buff and debuff, for 34 effects at 8 frames each.

Examples of the 8-frame effects from Sep 17
Part of the Sep 17 effects. Top to bottom: fire skill, water ultimate, heal, dark cast. Each plays its 8 frames left to right.

I also tightened the staging rules. Cast effects appear over the caster, hit effects over whoever actually got hit. Area skills spread from the middle of the targets, and ultimates go off big over the enemy side. Effects only scale by whole numbers so the pixels never blur.

New features unlock with an HQ approval memo

Next came the unlock table. If every menu is open from the start, a new player has no idea where to begin. So each feature got an unlock condition, all managed in one table: 27 unlocks and 6 condition types (story clears, dungeon level, tutorial step and so on).

What opensCondition
Hiring, dungeon menuClear story 1-1
Power "Fear"Clear story 1-4
Equipping gearDungeon Lv.3
Awakening 1-2, skill levelsDungeon Lv.4
Business mode, lineup presetsDungeon Lv.5
Forge (enhance, salvage, craft)Dungeon Lv.12

The office-comedy setting earned its keep here too. When a feature unlocks, a "New Business Approval" memo from HQ lands in the in-tray on the lobby, and approving it adds a button to that feature. Locked menus say what you need to do to open them. I also swapped the lock emoji, which wasn't showing up, for a pixel lock icon. The font didn't have that character, so it rendered as a blank box.

4:18 p.m.: "Dungeon Division"

Two minutes after committing the unlock table, I left this commit:

Set the game title to 「마계공단: 던전사업부」 (Netherworld Inc.: Dungeon Division).

The design doc's working title on day one was "Demon Army Dungeon Headquarters," and the screen title said "Dungeon HQ." In part 2 I'd decided to go with office comedy instead of a dark demon-lord story, and on this day the company became Netherworld Inc. and the department became the Dungeon Division. As the game's description puts it now, you're a trainee manager just posted to the Dungeon Division of a public corporation whose chairman is the Demon King.

From then on "Dungeon Tycoon" survived only as a codename in code and folders. That's why the project folder is still called 던전타이쿤 (Dungeon Tycoon) today.

Story chapter 1: "Trainee Manager"

In the evening I built the 10 stages of story chapter 1. Every stage is named like an HQ memo.

StageNameWhat it teaches
1-1First GuestsPlacing staff and starting a defense
1-2Mind the WaterElement matchups
1-3Lock the Back DoorFront and back rows, rogues who target the back
1-4Fear ExperiencePowers, fleeing
1-6Resonance TestResonance (3 Nature monsters)
1-8LockdownStopping parties that run
1-9UnidentifiedAuras, neutral dungeons
1-10Quarterly ReviewElite parties, getting the second boss

You start with two Ember Slimes, a Coral Crab, a Moss Golem and the final boss Naia. Lots of stages give a monster on first clear: Spore Mushroom at 1-1, Torch Imp at 1-2, Frost Bat plus 3× speed at 1-5 "Frost Hunt," and at 1-10 the second boss Elderroot and 200 Mana Gems. Stage 1-5 bans Fire monsters, so anyone who built around Fire has to rethink their lineup there.

Each stage has 3 stars. The first is always "defense succeeded," and the other two are things like "wipe out the adventurers," "win without powers," "take down the priest first" or "win with 4 or fewer common monsters." There are 14 star condition types. Some stages also have restrictions like "no Fire monsters" or "at least 3 Nature monsters." Both exist to push you into combinations you'd normally skip.

You don't need every star on the first clear. You can come back for them. Each star gives 10 Mana Gems, 15 stars in chapter 1 gives 100, and all 30 gives 3 monster Eggs. When a story defense ends you go back to the story map instead of the lobby, so the next stage is right there.

The doc has a rule for this too: "Never make the player do math in their head." Star conditions that depend on placement (headcount, aura, resonance, floor combos) flip between ✓ and ✗ live on the placement screen. You don't memorize anything. You move a monster and you see.

"You can't beat the adventurers"

Once the story was in, I played it and immediately hit a wall. I couldn't beat the adventurers.

Instead of nudging numbers by feel, I built a balance simulator. It takes the 5 starting monsters plus the reward monsters from earlier stages, levels them to where you'd plausibly be when you reach that stage, and runs 30 battles per stage. No powers, no manual ultimates. A deliberately unfavorable setup.

Every one of the 10 chapter 1 stages came back at a 0% win rate. Zero felt a bit much, but the numbers showed why right away: at equal levels, one adventurer was doing the work of two or three monsters.

I fixed three things.

  1. I added stat multipliers by adventurer grade: Novice 0.55, Skilled 0.65, Elite 0.75, Heroic and above 1.0. Early parties get a lot weaker.
  2. Stage 1-1 "First Guests" dropped to adventurer Lv.1 with zero potions. 1-8 got slightly lower levels and fewer potions but kept its 4-monster limit.
  3. I flattened the level-up cost curve. Gold from Lv.1 to 70 went from about 186,000 to 132,000. Running daily income through the economy doc also showed the mid game taking far longer than the target, so I lowered costs.
Win rate at expected level1-1 to 1-71-81-91-10
Before0%0%0%0%
After100%67%100%80%

I also ran a roster at 70% of the expected level. Win rates fall off sharply at 1-6, 1-8 and 1-10. Level up properly and you clear them. Skimp and you get stuck there. Seeing the difficulty curve I wanted show up as numbers finally let me relax a bit.

Dev notesLocking the balance targets into automated checks

I can't read simulator output by eye every time, so the targets became checks. Whatever number I change later, if one of these breaks I see it immediately.

  • Every chapter 1 stage: 60%+ win rate with the expected-level roster
  • Free defense at every Notoriety bracket: 60%+ win rate
  • But the earliest free defense: under 95% (it can't be too easy)
  • A roster at half the levels: under 50% at 1-10 (you shouldn't clear it without growing)

It runs deterministically on 30 seeds and never touches the player's save. Adventurer grade multipliers and level multipliers can be swapped via environment variables to compare several setups in one go. The "same seed, same battle" rule from day one paid off most here.

The gacha is a "job posting"

That evening I also built recruiting. What other collection games call gacha, this game calls hiring. The day-one design doc said "monster gacha = job posting," and this was the day it became a screen.

There's a Standard posting paid in gold and a Full-Time posting paid in Mana Gems, plus one free hire a day. The day rolls over at 5 a.m. The presentation is office comedy too: you pin a posting to the board (stamp!), there's a knock, an applicant's silhouette appears, and an employment form card flips to show the portrait, name, element and rarity. Higher rarities change the door color. Even a 10-hire finishes in 4 seconds, and a tap skips ahead.

Epic or higher pauses for half a second with a sound before the card flips. A duplicate is simply one more monster, since I'd decided monsters are owned as individuals. Spares go into awakening or get released.

I decided from the start to publish all the odds. Since March 2024, Korea requires games to disclose the odds of randomized paid items, and the doc was written with that in mind. "View Odds" on the hiring screen shows odds by rarity and per species to three decimal places. The pity rule (an Epic or better guaranteed by 80 Full-Time hires) and the 10-hire guarantee of at least one Rare are on the same screen, and a gauge shows how far you are from pity.

These numbers are the drafts from September 17. For the odds and rules in the released game, go by the in-game odds screen.

Dev notesSave before the show

Hiring results are saved before the animation starts. Same principle as settlement in part 2. If the app dies while the door is opening, the result is already saved, and you can see it in the hiring log when you come back. If storage is full and you hire 10, the overflow goes to the mailbox, and a notice like "Storage 98/100, some of the 10 hires will go to mail" shows before you hire. The hiring log keeps the last 50 entries.

Commit log, 2026-09-17

  1. Monster level-ups, awakening, skill levels
  2. Gear system (18 bases, 9 sub-options, 6 sets, pre-rolled loot)
  3. Monster list, detail, storage, collection; gear storage
  4. 24 battle characters redrawn, 34 effects, 18 gear icons
  5. Unlock table (27 entries), New Business Approval memos
  6. Game title "Netherworld Inc.: Dungeon Division"
  7. Story chapter 1 (10 stages), star conditions, balance simulator
  8. Hiring (gold and Full-Time postings, free hire, published odds, pity)

Looking back at day 4

Eight commits and a long list of things built, but looking back, two of them lasted the longest. One is pre-rolled loot. That alone gave players a goal beyond "win": "take that gear." The other is the simulator. Turning "this feels hard" into a win rate made the cause visible, and locking the targets into checks meant every later number change got checked again.

The next part is the first time I played it on an actual Android phone: adding the tutorial and fixing the bugs and rough spots that turned up on a real device, September 18-21. If you're curious about the game itself, the game page (in Korean) is a good place to start.

NOW AVAILABLE

Dungeon Division

Heroes are intruders, monsters are staff. Save Dungeon No. 7 from being shut down.

Available on the Korean App Store (iPhone/iPad), with English in Settings. Android is not out yet.