
Dungeon Division (「마계공단: 던전사업부」 in Korean) came out on the App Store on the morning of October 23, 2026. I created the empty Unity project on September 14, so that was day 40. It's a solo indie game, so I pressed the release button myself (I'd set it to manual release).
This post covers the five days around launch, October 21 to 25. Fifty commits. Some of you are seeing this devlog for the first time, so let me start with what the game actually is.
What the game is: a defense game where you side with the dungeon
The setting is Netherworld Inc., a demon corporation chaired by the Demon King. You've just been posted to its Dungeon Division as the new Manager, and what you inherit is one two-floor dungeon deep in the red. To get through HQ's quarterly review, you have to stop the adventurer parties that keep showing up and turn their loot into results.
A round goes like this:
- Scout the incoming party to see their classes and elements. There are five elements: Fire, Water, Nature, Light and Dark.
- Assign monsters to each floor. Staff of the same element trigger Resonance and buff each other, and the elemental aura in your dungeon changes the stats of the adventurers who walk in.
- The battle runs automatically. You help out with Manager powers like Rockfall.
- If you win, the gear from fallen adventurers goes straight onto your monsters. The sword a knight carried yesterday is a goblin's sword today.
In this game the monsters are salaried "staff". There are 185 of them across four grades, Common to Legendary, and you raise them with level-ups and Awakening. Switch on Business mode and the dungeon keeps taking in visitors and earning while you're offline. On top of that there's a 10-chapter story, a weekly raid, and showdowns with guildmasters. All the art is pixel art.
If you were looking for a dungeon defense game or a monster-raising game, that should give you the idea. The download is free, and the shop has in-app purchases. There's more on the game page (Korean).
Eight store screenshots
On the afternoon of October 21 I made the store listing and screenshots. I picked five core words: dungeon, management, monster, defense and idle. The Korean App Store name is "마계공단: 던전사업부 - 던전 경영 디펜스" (dungeon management defense) and the subtitle translates to "monster collecting and raising idle auto-battle RPG". I made sure no word appears twice across the name, subtitle and keyword fields, because Apple combines words from all three for search.
The screenshots use real gameplay, no separately drawn marketing art. I made a showcase save (cleared through chapter 4, dungeon Lv.14, 37 staff), captured it at 3x in play mode, and had a script add frames and captions. For the layout I looked at the App Store screenshots of Legend of Mushroom, Legend of Slime, Seven Knights Idle Adventure, Lucky Defense and Dungeon Maker. One message per screenshot, a bold outlined caption with a single word in yellow, the game screen inside a frame with a character breaking out of it. I lined up nine fonts side by side and went with Nexon's Maplestory Bold, after confirming in Nexon's official FAQ that commercial use is fine.

Submitting for App Store review, with one mistake
Two things changed right before review. I switched the release build's rewarded ads from test ads to live ads, and I turned on in-app account deletion. The build you submit is the build that ships, so neither could wait. I published the privacy label with 10 data types (no tracking), and the age rating came out as 12+ in Korea.
At 4:43 PM there was an accident. While checking the draft, I pressed the "submit draft" button on screen, and it carried through to the panel's "Submit for Review", so it got submitted by mistake. I canceled immediately. After finishing the remaining checks, I properly submitted 1.0 (build 6) and the 20 in-app products at 4:58 PM. Something else I learned: your first consumable in-app product has to be submitted together with an app version.
That night I also built Android 1.0 (13) for closed testing.
October 23: launch
Review passed, and at 8:39 AM on the 23rd I pressed release. It's sold in one region, South Korea: one of 175 regions switched on. Right after launch, searching the app's name found nothing. Looking it up directly by app ID showed it as free, version 1.0, but the search index took a while.
Day-one fixes: ads and 1.0.1
Once it was out, no ads showed at all. The AdMob account wasn't approved yet, and the app-ads.txt check (the file that verifies authorized ad sellers) was failing against the store details with a "details mismatch". The file itself passed Google's checker, so it looked like the store side just hadn't caught up.
Every ad in this game is a rewarded ad. You only watch one if you choose to press the button, and you get a reward for it. That button kept saying "No ads right now". My first plan was to add Unity Ads directly, but the package carried a notice that monetization support for that SDK ended on January 31, 2026. So that morning I added LevelPlay, Unity's ad mediation service, as a second ad source. AdMob is asked first, and if there's no ad, an error, or no answer for six seconds, it falls through to LevelPlay. At 11:21 AM I submitted 1.0.1 (build 7) for review.
Meanwhile I caught two more bugs.
- The Forge was slow. With 500 pieces of gear, switching tabs rebuilt every card and created around 10,000 UI objects, freezing the editor for 0.7 to 1.4 seconds. On a phone the screen flashed black once. Now only the cards for visible rows exist and they get reused while scrolling. Opening a tab takes 28 to 67 ms and the object count dropped to about 430.
- Sometimes a business report could never be approved. If you leave reports unapproved they keep merging, and once the gear in them exceeded storage plus mailbox (500 + 100), the approval condition could never be met. The gold and Soulstones tied to that report were stuck along with it. Now currency is always paid out first, and gear goes in best grade first, as much as there's room for. I also added a setting to automatically dismantle gear below a chosen grade on approval.
I swapped the build under review for build 8 with both fixes, edited the update notes, and submitted again. Since I'd redrawn the report screen, I also reshot store screenshot 7. Google Play took the new one right away and sent it for review, but on the App Store I couldn't change screenshots while 1.0.1 was waiting for review, so that moved to the next version. 1.0.1 went out on the 24th.

Game localization: 7,060 strings into English
On the night of the 23rd I wrote the design doc for the English version. By my count there were about 6,100 unique on-screen strings, 238,000 Korean characters in total, 153,000 of them in the story alone. The problem was that every one of them was hard-coded in Korean inside the code.
I spent all of the 24th on this. Twenty commits. The order went:
- 8:48 AM: the translation foundation (L0). Look up a sentence by key, and show Korean if there's no English. At this point no screen uses it yet.
- 8:58 AM: a tool that counts every Korean string in the code (L1). It found 6,215 unique strings. Eighteen of them weren't displayed at all but were being used to decide behavior.
- Morning: moved data, story and staff bios into string tables (L2, L3), and converted 1,415 simple strings in one pass with a tool (L4).
- Midday: went through 1,108 strings that branch on conditions, fixed lists, tutorial lines and sentences built by concatenation, one by one (L5).
- Evening: made sentences stored in saves re-render in the current language (L6). Then I built a glossary and an English style guide and filled a first English draft for all 7,060 rows (L7).
The translation was done with AI. I settled the staff names first and put them in the glossary, so the staff bios and the story used the same names. That night the 2,940 rows of story and staff bios got a second AI review pass, which changed 411 of them. The Korean never states a character's gender, so the English avoids he/she too and uses names, roles or singular they. A human review is still to come.
Dev notesLocalization structure: keys, particle pairs and saves
I set five rules. Korean source text lives in one place only. Code holds only keys. One sentence is one key (never glue translated fragments together). Saves store keys and arguments, not sentences. Keys never change after release.
The string table isn't one file per language. Each row holds key, ko, en together, so source and translation sit side by side, and when the Korean changes, the source hash recorded at translation time stops matching and the row shows up as "needs re-review". Names in data tables stay in the original design CSVs and get synced into the string table on import.
Korean particles that depend on the preceding word (the 은(는) kind) are written as pairs, and the right one is picked from the final consonant when the value is filled in. If that can't be decided, the pair prints as-is so the sentence never breaks. Plurals only branch on the English side, using plural syntax.
The most annoying part was the 18 places where code decided behavior by comparing Korean text, along the lines of "if it contains 골드 (gold), do this". That kind of check breaks silently the moment the text is English. I replaced all of them with code values or state. Things like party names that had been saved in Korean are converted back to tokens the first time they're read. On a copy of a test save I checked that 37 gear names displayed exactly as before.
Does the English fit?
English runs longer than Korean. So I rendered 18 main screens in both Korean and English and wrote a check that fails on clipped text, words broken mid-line, or leftover Korean. That night I widened it to battle, result screens and 28 popups, and all 100 captures passed. The 38-pixel power buttons got short words like Rocks, Fear and Lock.

I put a language button at the top of Settings. At first the Korean build always started in Korean, but after the second review pass and the 100-capture check I switched it so the game starts in English when the device language isn't Korean.
On the 25th I cleaned up the rest. I moved Korean that had been hiding inside error messages, and changed the English font to Galmuri11 Bold. The regular weight's Latin letters have 1-pixel strokes and looked faint on dark panels. I also compared Pixelify Sans, NeoDunggeunmo and DotGothic16, and in NeoDunggeunmo a V looked like a U. Switching to bold made four labels overflow, so I shortened the English there.
The English store name is "Dungeon Division: Idle Defense". The in-game title is "Netherworld Inc.: Dungeon Division", but store names have a 30-character limit, so the store got its own. I reshot the English screenshots with the new font as well.

That night I submitted 1.0.2 with English. I uploaded build 9, then swapped in build 10 with English fit fixes 16 minutes later. As of October 26, when I'm writing this, the App Store update notes say "English is now supported. You can change the game language in Settings." It's still sold in South Korea only.
Key commits, Oct 21 to 25, 2026
- Release build rewarded ads switched to live ads
- Store listing draft, 8 screenshots
- In-game account deletion on, TestFlight 1.0 (6)
- App Store review submission recorded
- Android 1.0 (13) closed test build
- iOS 1.0 release recorded
- LevelPlay as a fallback rewarded ad source
- Forge gear list performance
- Partial approval of business reports, dismantle on approval
- 1.0.1 (8) build
- Store screenshot 7 replaced
- Localization design doc
- L0 translation foundation
- L7 first English draft, 7,060 rows
- Localization branch merged
- Follow device language, second review pass
- English font Galmuri11 Bold
- English store listing and screenshots
- iOS 1.0.2 (10) submitted for review
Android isn't out yet
The game isn't on Google Play yet. I've built closed test builds up to 1.0 (13) and 1.0.1 (14), and the store listing is entered in Korean and English. I haven't set a public date. When it's out, a Google Play link will show up next to the buttons on this page.
After launch
Launch day felt less like an ending and more like the day the real things to fix started showing up. I only found out ads weren't showing after release, and the report bug needs more than 600 pieces of gear to appear, so testing never hit it. Both were fixed that day and shipped the next. What's left: AdMob approval and linking the store, a human pass on the English, checking English on real devices, and the Android release.
If you're curious what this game looked like at the very start, begin with part 1. It was a few lines of notes and a prototype fighting with health bars. The last test builds before launch are in part 11.

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.