Abyss Survivor Build Log: How a Survivor-Like Became a 10-Stage Belt-Scroller You Can Play in the Browser
Our Godot 4.6 game went from an auto-attack survivor-like on 19 September to a fantasy belt-scroller with ten stages, three bosses, loot, 31 skills, a demon form and touch controls, live on the web from the 21st. What was built, where the art came from, and what was and wasn’t tested.
TL;DR — Abyss Survivor is our Godot 4.6 action game, and you can play it in the browser. It started on 19 September as a side-scrolling survivor-like: automatic attacks, three stages, the player only positioning and dodging. On the morning of 21 September it was rebuilt as a fantasy belt-scroller with lanes, a sword combo, a guard and telegraphed enemy attacks. By that afternoon it had a 10-stage campaign with three bosses, loot, skill books, a demon form and touch controls, and it was live on the web. The next day added a five-slot skill bar, element effects, 14 new hero moves and 14 new monsters from our own motion library. The game is 32 GDScript files and 5,815 lines in a single scene. Around it sits a generated art library of 150 equipment icons, 30 effects and 70 backgrounds that isn’t wired in yet. Not everything was tested as it went in, and this log says which parts were.

All images are the game’s own captures and our own generated assets. The captures come from the project’s test runs of 21–22 September and from bot runs on 2026-09-26.
Play it
- Address: abyss-survivor-five.vercel.app
- PC: WASD or arrows to move and change lane, J/Z to attack (hold to chain), K/X to guard, Space to jump, E for the charged ultimate, I/Tab for gear, Q for skill slots, 1–5 for equipped skills.
- Mobile: landscape recommended. Touch devices get a joystick on the left and attack, guard, jump and ultimate buttons on the right, and both hands can press at once.
- Download: about 91 MiB (uncompressed) on first load, because the engine and game data come down together.
- Saves: gear and learned skills are kept in that browser’s storage. They don’t sync to other devices and may not survive private mode or clearing site data.

At a glance
| Engine | Godot 4.6.3, GL Compatibility renderer |
| Code | 32 GDScript files, 5,815 lines; one scene file (main.tscn), everything else assembled in code |
| Campaign | 10 stages, bosses on stages 3, 6 and 10; designed for about an hour |
| Combat | Belt-scroll lanes, sword combo, frontal guard, jump, charged ultimate |
| Skills | 31 weapon definitions (basic sword, original magic, 24 element skills); five-slot skill bar |
| Growth | Gear in 3 slots and 4 rarities, skill books, gold training; gear and skills persist between runs |
| Demon form | Every 100 kills: 30 seconds at triple health, attack and defence, taking a third of the damage |
| Art | Hero and 14 monsters from our local video-model motion library; stage backgrounds from an image generator; bosses and some enemies from free sprite packs |
| Web | Static Godot web export on Vercel, first deployed 2026-09-21 |
| Tests | Regression suites of 28, 22, 24, 54 and 22 checks, plus 10 touch-input checks |
1. The week, from the backups
Before every significant change the project was copied to a timestamped backup folder, so the history is easy to reconstruct. Each timestamp is when that change began.
| When | What changed |
|---|---|
| 19 Sep | First version: side-scrolling survivor-like, automatic attacks, three stages, art, sound and skills carried over from our earlier Godot brawler |
| 21 Sep 08:08 | Belt-scroll overhaul: lanes, manual sword combo, guard, telegraphed attacks, new backgrounds |
| 21 Sep 08:42 | Hero sprites re-cut from the motion library; basic attacks from 8 to 42 frames |
| 21 Sep 08:49 | 21 element motions from the library connected as skills |
| 21 Sep 10:15 | Demon awakening |
| 21 Sep 13:10 | Loot, skill books and persistence |
| 21 Sep 13:21 | 10-stage campaign with bosses on 3, 6 and 10 |
| 21 Sep 13:43 | Web export; first public deployment |
| 21 Sep 13:55 | Touch controls |
| 21 Sep 21:29 | Combat fixes; next morning, the combat and motion-library expansion |
| 22 Sep 07:42 | Five-slot skill bar |
| 22 Sep 13:23 | Early growth path and element effects |
| 22 Sep 13:51 | Fix for the character growing at the start of attacks |
| 22 Sep 13:56 | Lightning-lance effect |
| 22 Sep 16:19 | Equipment grid and touch scrolling |
| 24–25 Sep | Generated asset library (not yet in the game) |
2. From survivor-like to belt-scroller
The first version asked almost nothing of the player: attacks fired on their own, and the job was to keep moving while hordes closed in from both sides. It was a quick way to get a game running, but it left the hero’s sword animation as decoration.
The overhaul changed the verbs:
- Lanes. Movement is left–right plus up–down across a strip of floor. Jump height is kept separate from the foot position, so the shadow and front–back ordering stay on the ground.
- A real combo. The sword is a three-hit chain you drive yourself, and holding the button repeats it. The third hit is wider, stronger and pushes enemies back. Enemies behind you or in another lane are not hit.
- Guard. Blocking from the front cuts damage to 18%. It does nothing against a hit from behind.
- Readable enemies. Enemies now show their attack area, strike, then recover. Touching them does no damage. Normal enemies stagger when hit; bosses don’t.
- Fewer, tougher enemies. The on-screen cap dropped from 150 to 16, with spawn and health curves rebalanced.
- Presentation. A bronze-and-gold HUD, a camera that shows more of what’s ahead, hit shake, pause, and floor AoE markers drawn as ellipses that match the perspective.
3. The campaign: ten stages, three bosses
| Stage | Location | Boss |
|---|---|---|
| 1 | Twilight Gate | — |
| 2 | Ashen Barracks | — |
| 3 | Black Order | Knight-Commander Kairen |
| 4 | Forgotten Crypt | — |
| 5 | Corridor of Poison Mist | — |
| 6 | Wraith Altar | Archmage Morgath |
| 7 | Burning Rampart | — |
| 8 | Frozen Palace | — |
| 9 | Stairs of the Abyss | — |
| 10 | Fallen Throne | Abyss Lord Abaddon |
Normal stages end when their timer runs out. Boss stages end only when the boss dies.
| Kairen (3) | Morgath (6) | Abaddon (10) | |
|---|---|---|---|
| Health | 3,200 | 8,500 | 24,000 |
| Melee damage | 28 | 42 | 62 |
| Damage reduction | — | — | 20% |
| Special | Frontal sweep | Magic bursts at 2 points | Chains of 2 → 3 → 4 bursts |
| Phases | — | — | Powers up at 60% and 30% health |
Abaddon has about 2.8 times Morgath’s health before his damage reduction counts. At each phase he hits harder (×1.2, then ×1.4), uses his specials more often and summons two elite skeletons, while staying within the 16-enemy cap. Every area attack locks its target and warns for at least 1.2 seconds, so moving or jumping always avoids it. There are no unavoidable full-screen attacks and no permanent invincibility phases. Beating him guarantees a legendary item.
The original plan gave the normal stages 50 minutes of fighting in total. On 22 September the early stages were shortened to 2:00, 2:30 and 3:00 so that the first boss appears after 7 minutes 30 seconds, which brings the total fighting time to 44 minutes 30 seconds. Nobody has yet measured a full run, bosses and menus included.

Ten stages currently share these three backgrounds, each stage with its own colour tint.
4. Loot, skills and growth
Loot. Every kill rolls separately for gold, gear and a skill book:
| Enemy | Gold | Gear | Skill book |
|---|---|---|---|
| Normal | 55% | 12% | 6% |
| Elite | always | 70%, uncommon or better | 35% |
| Boss | always | always, rare or better | always |
If eleven kills pass without a skill book, the twelfth is guaranteed one. Drops drift toward the player after eight seconds, and anything left on the floor is collected when a stage ends or the player dies.
Gear. Weapons raise the attack multiplier (critical hits from uncommon up), armour raises health and defence, and accessories raise attack speed and regeneration. Items come in four rarities — common, uncommon, rare, legendary — with random rolls, and later stages drop higher tiers. The inventory shows the difference against what’s equipped before you swap. Swapping keeps your current health ratio, so you can’t heal by changing armour back and forth.
Skills. The basic sword is known from the start. Everything else — the original magic and the element skills from the motion library — has to be learned from skill books. Duplicate books raise a skill’s level, or you can train it with gold at the current level × 70 G, up to level 5 (level 6 for skills with permanent mastery). On 22 September skills moved from casting automatically to a five-slot bar used with 1–5 or the on-screen buttons. Each skill keeps its own cooldown, which doesn’t reset when you swap gear or slots and stops while menus are open.
What persists. Gear in the bag and equipped, learned skills and their levels, the slot layout, gold, permanent upgrades and unlocked stages survive death. Each new run resets combat level, experience, stat cards, kill count and the demon and ultimate gauges. Saving writes a temporary file, copies the previous save to .bak, then replaces it.

The early growth path (22 September). A “sigil carrier” appears 50 seconds into the first region; killing it clears the way forward and levels up an equipped element skill. After the first region you choose one of three permanent sigils: a cooldown cut on sword finishers, healing when a burning enemy dies, or bonus damage to slowed enemies. After the second, you pick an element blade that fires a real element wave on the third and sixth sword hits. Bosses 3, 6 and 10 offer a permanent evolution of an element skill — bigger damage and range, lightning chaining to four targets, fire leaving burning ground, ice slowing and then shattering. On-screen element effects are capped at 64 at once.


5. Demon awakening
Every 100 kills in a run — boss kills count as one — the hero transforms for 30 seconds. Reaching another 100 during the transformation resets the timer to 30.
| Demon form | |
|---|---|
| Max health | ×3 of current growth |
| Current health | Same ratio as before (60/120 becomes 180/360) |
| Attack | ×3, applied to the sword, skills, magic and ultimate |
| Defence | ×3 |
| Damage taken | Reduced by the tripled defence, then cut to one third |
| Speed | Unchanged |
The multipliers are applied on top of the current stats and never written back into them, so transforming repeatedly doesn’t stack into ×9 or ×27. The transformation takes about 0.95 seconds and grants no extra invincibility. The kill gauge and remaining time sit under the health bar. The three thresholds live in one place in data.gd: 100 kills, 30 seconds, ×3.
The demon uses 252 frames from four clips in our motion library: a red awakening, two punch clips and a rage clip. The library has no demon walk, jump or death clips, so the demon reuses a hovering ready pose while moving.

6. Where the art comes from
The hero comes from our own motion library: clips generated locally with a video model from character art supplied by the project owner. The library holds 234 motions and 9,537 frames for him, counting variants and poses, so it is not 234 distinct skills. The game uses a growing slice of it:
- The first import had cut-out problems. There was white background left inside the cape, loose specks, a thick bright outline, and a size calculation that counted the sword tip as part of the body. The re-cut uses a background-removal model (InSPyReNet, via the
transparent-backgroundpackage), keeps the original colour pixels, and takes only the overlap between the old transparency and the new mask. - Size is measured from the body, not the sword. A standing height of 110 px is shown at 1.15× on screen, with one fixed scale per animation so frames don’t pulse. Cells were widened to 320 px so blades and capes aren’t clipped. Eleven sheets and 258 frame slots were rebuilt, and the basic attacks went from 8 frames to 42.
- The skills. All 24 element motions — 8 elements × 3, 42 frames each — are now connected. The 21 new skill sheets needed 882 re-cut frames.
- Fourteen more moves on 22 September: a six-hit chain, air slashes, a running slash, a downward slam and a second hit reaction. That makes 19 hero animations in the game.

The size-jump fix (22 September) shows the kind of problem generated animation creates. At the start of a running attack the hero’s body measured 162 px against 111–112 px when idle, so he grew about 45% the instant he swung. Each attack animation is now normalised to the same 110 px body height from the foot origin. The swing still rises and crouches as drawn; he just doesn’t inflate. A 54-check test covers it.
Monsters. Fourteen monsters came in from the same motion library on 22 September: goblin, kobold, gnoll, skeleton, skeleton warrior, ghoul, lizardman, minotaur, ogre, gargoyle, frost wraith, death knight, lich and spider. With the original free-pack sprites that makes 20 normal monster types, each stage with its own mix. The library has no death clips for them, so a death plays the hit motion with a fade.

Captured on 2026-09-26 with the game’s bot and god mode on stages 4 and 9.
Backgrounds. The three backgrounds in the game — twilight courtyard, forgotten crypt, fallen throne hall — were made with the coding agent’s built-in image_gen tool, and the project keeps the full prompts. Each asks for “original environment, not an existing game screenshot” and a strict side-on view with an empty floor band. The output’s wall-to-floor line didn’t land exactly where requested (about 52% instead of 60% on the courtyard), so the code aligns each background to its real floor line. Backgrounds scroll with the floor and tile by alternating mirror images. The repetition can show, and they are single images, not multi-layer parallax.
Bosses. The bosses are the free Martial Hero 2 and Evil Wizard 2 sprites, resized and recoloured.
Sound. The sound is synthesised in code, as in our earlier Godot project, with new synth effects for lightning, fire and ice.
7. The asset library that isn’t in the game yet
Between 24 and 25 September an art library was generated alongside the game. It is kept out of the game build (a .gdignore file stops Godot importing it), so none of it reaches the web download yet.
- Equipment icons: 50 weapons, 50 pieces of armour and 50 accessories.
- Effects: 30 environment, trap, boss, player-skill and feedback effects, plus 16 extra mage spell effects.
- Backgrounds: 20 stage backgrounds, two for each of the ten locations, plus 50 more for new regions such as coasts, lava fields and snowy mountains.
- Every asset has its generation prompt (
PROMPT.txt) and a role note (ROLE.md) describing what it’s for, where its anchor point is, and how to play and connect it.
The library’s rules are explicit: shapes must differ, not just colours, and no images are extracted from existing games. Its QA notes are careful about their own limits. The 180 icon and effect PNGs total 175.94 MiB. No empty images, missing alpha or byte-identical duplicates were found. A file opening with transparency doesn’t prove every animation frame is aligned, and the last three effects were added after the audit ran.


The obvious next step is visible in the two images side by side. The game currently tints three backgrounds across ten stages, and the library already has two backgrounds for each of those ten locations.
8. Web and mobile
The web build is a static export — Godot’s web platform with the GL Compatibility renderer, single-threaded — uploaded to Vercel by a PowerShell script. There is no Git auto-deploy. The first deployment went up on 21 September. After it, the browser was checked through the title, the ten-stage select screen and entering stage 1, and HTML, WASM and PCK all answered HTTP 200 without login. On 22 September six production updates followed: combat and the motion-library expansion, the skill bar, the growth path and element effects, the attack-size fix, the lightning lance, and the equipment grid.
Touch was treated as a first-class input. Ten checks cover it: starting by touch, two fingers at once, the character actually moving, touch cancel, opening and closing the equipment screen, releasing input on menu changes, pause and resume, and releasing input when focus is lost. A mobile emulation at 844×390 with five touch points confirmed the joystick and attack button working together. Performance on real phones hasn’t been measured.
9. What was tested — and what wasn’t
The docs are blunt about this, and so is this log.
- Several features went in without run tests. The 21 new skills, the demon form, the loot system and the 10-stage expansion were all added on 21 September without run tests, syntax checks or debugging, at the project owner’s request to move fast. The 28-check belt-scroll suite that passed that morning predates them.
- 22 September was tested properly:
- skill bar: 22 checks, covering save migration, keys 1–5, manual casting, cooldowns, mouse and touch, and the guardian summon;
- growth path: 24;
- attack-size fix: 54;
- equipment grid and scrolling: 22;
- touch input: 10;
- evolved skill effects: checked in real rendering.
- Bot runs, before the ten-stage expansion: an ordinary bot survived 286.4 seconds, killed 239 enemies and died at the stage-2 boss. With invincibility on, it ran 491.1 seconds, killed 611 and won the three-stage campaign. That checks that the stages connect, not that the game is balanced.
- Not yet measured: a full ten-stage run, the final boss’s real difficulty against a player with good gear and demon form, and performance on actual phones.
- Known: a harmless
ObjectDB instances leaked at exitwarning on shutdown.
Our own runs today reproduced the fast-forward to the stage-6 boss (level 75, six skills at level 5), but the run exited before its scheduled captures, so there is no Morgath screenshot in this post.
What’s next
- A full playthrough of all ten stages, timed and balanced by a person.
- Move chosen art from the asset library into the game, starting with a background per stage and real equipment icons.
- Performance checks on real phones.
- Layered parallax backgrounds in place of the current single images.
FAQ
Where can I play Abyss Survivor? In the browser at abyss-survivor-five.vercel.app. The first load is about 91 MiB.
Does it work on phones? Yes, in landscape. Touch controls appear automatically, with a joystick on the left and action buttons on the right.
What engine is it built in? Godot 4.6.3, exported to the web with the GL Compatibility renderer. The whole game is one scene assembled in GDScript.
How long is the campaign? Ten stages with bosses on 3, 6 and 10, designed for about an hour. The fighting timers add up to 44½ minutes; a full run with bosses and menus hasn’t been timed yet.
What is the demon form? Every 100 kills in a run, the hero turns into a demon for 30 seconds with triple health, attack and defence, taking a third of the damage.
Is the art AI-generated? The hero and 14 monsters come from our local video-model motion library. The stage backgrounds and the unused asset library come from an image generator, with prompts kept. The bosses and some enemies are free sprite packs.
Credits: base monsters and the bosses (resized and recoloured) — LuizMelo’s free packs “Monsters Creatures Fantasy”, “Martial Hero 2” and “Evil Wizard 2” (itch.io); font — Galmuri11 (SIL OFL 1.1); engine — Godot 4.6.3 (MIT). Our own: code and game design, the hero, demon and 14 monsters from our motion library, the generated backgrounds and asset library, synthesised sound, and all captures in this post.
← Back to all posts