Inspiration
You cannot avoid the final fight. You can only decide how prepared you are when it begins.
Abysswake began with one image: a shipwrecked sailor stepping onto an island, only to discover that the island itself is a sleeping Kraken.
That image led to the game's central question: what if preparation were dangerous? Most survival games give players somewhere safe to stop and optimize. Abysswake does the opposite. Comparing routes, salvaging cargo, resolving encounters, and crafting all consume time while the Kraken closes the distance.
The result is a game where preparation is not a checklist before the real challenge. Preparation is the challenge.
What it does
Abysswake is a portrait-first 3D survival and resource-management game about building a ship for a battle that cannot be avoided.
Each run begins with a Voyage Oath. Players can keep a standard run or accept a modifier that changes how salvage, Noise, crafting, or Kraken pressure behaves in exchange for a higher score multiplier.
The player then escapes across a finite, seeded archipelago. At every leg, two destinations offer different combinations of resources, Fuel cost, travel time, and threat. Choosing one permanently abandons the other.
- Choose a route — Compare each island's reward against its true sailing cost and the time the Kraken will gain.
- Land or keep moving — LAND opens an encounter and salvage opportunity. SKIP preserves time and distance when a shore is no longer worth the risk.
- Read the Tide — Quick, Heavy, and Cursed salvage targets trade cargo for Island Noise. The favored type offers a better return, alternating types builds a Route chain, and repeating a type creates a costly Echo.
- Know when to leave — Reaching 100% Noise causes Hull damage, destroys unprotected bonus cargo, and forces a retreat. Leaving voluntarily at 90–99 Noise with a valuable haul earns a Perfect Escape.
- Shape the build — Wood, Metal, and Oil become supplies and permanent Engine, Hull, and Cannon upgrades. The first upgrade to each system locks one of two run-defining perks, so two ships with similar levels can still play differently.
- Face the Final Hunt — Turn and fight voluntarily, reach the Point of No Return, or let the Kraken catch the ship before it is ready.
Being caught does not end the run. It ends the preparation phase.
The voyage always flows into a three-phase pursuit battle. The ship keeps its bow pointed away from the Kraken while its rear cannon fires back. Players evade coral locks, attack lanes, whirlpools, and charges; a successful dodge exposes the Kraken's eye and creates a brief counter window. Engine, Hull, Cannon, supplies, and locked perks all change how survivable that fight becomes.
After the battle, the game scores completion, banked cargo, route progress, Hull survival, tempo, and combat mastery. Players receive a grade, review their Oath and build, then either retry the same seed or begin a new voyage. Retry preserves the route and encounters while resetting cargo, upgrades, perks, and statistics, creating replayability without permanent currency or grind.
How we built it
Abysswake was built with JavaScript, Three.js, HTML, CSS, and the Web Audio API.
Six systems shaped most of the technical and design work:
- Persistent pressure across decisions — The Kraken advances during route selection, sailing, encounters, salvage, and the workshop. Title, intro, pause, and result states are safe; once battle begins, global distance becomes a live pursuit gap.
- Deterministic seeded voyages — One 32-bit run seed drives route generation, encounters, and salvage outcomes. This makes Retry Seed repeatable while keeping a new voyage genuinely different.
- 3D navigation for a portrait screen — Sailing routes evaluate curved paths around island geometry and approach different shorelines without cutting through land.
- One preview path for real outcomes — Route, salvage, Contract, perk, and recipe previews use the same calculations as the actions they describe, reducing the gap between what the interface promises and what gameplay applies.
- A contextual mobile interface — Navigation, salvage, crafting, and combat expose only the controls needed in that state. Reserved screen zones keep the world, mission, threats, and touch controls readable on narrow displays.
- An offline procedural presentation — Islands, ocean motion, ship behavior, particles, impacts, camera feedback, and audio are produced at runtime. The Kraken combines procedural animation with locally bundled low-poly models and textures. Everything required to play ships with the submission.
The complete game is packaged as a self-contained offline build. Project-owned HTML, CSS, and JavaScript are assembled into a readable index.html, Three.js is bundled locally, and the game requires no backend, external account, or runtime network request.
Challenges we ran into
The hardest challenge was creating urgency without making the player feel rushed from the beginning. If the Kraken moved too slowly, gathering and crafting became obvious optimization exercises. If it moved too quickly, route choices stopped feeling meaningful. The final threat curve accelerates both as the Kraken approaches and as the voyage enters later acts, allowing early decisions to feel deliberate while late decisions become desperate.
Another challenge was communicating two simultaneous dangers. Island Noise is the immediate risk of greed on one shore; Kraken distance is pressure across the entire expedition. Early versions made them feel like competing versions of the same timer. Giving them separate visual languages, labels, and consequences turned leaving an island into a strategic decision instead of an arbitrary punishment.
The branching upgrade system created a different clarity problem. Players needed to inspect both perks before they could afford an upgrade, make a temporary choice without accidentally locking it, and understand exactly when materials would be spent. Separating preview, selection, and INSTALL & LOCK made that commitment readable.
Portrait presentation was equally demanding. Route information, resources, tutorials, boss status, combat controls, and a large 3D creature all compete for limited vertical space. The HUD had to reserve safe areas, change by state, and keep the Kraken's weak point and incoming attacks visible throughout the Final Hunt.
Finally, Retry Seed forced us to separate gameplay randomness from visual randomness. Routes, encounters, and salvage must repeat exactly, while spray, debris, and other effects still need to feel alive.
Accomplishments that we're proud of
We are most proud that every major system feeds the same pressure loop instead of behaving like a separate minigame.
The Voyage Oath changes the risk profile of the run. Route choices determine available materials. Salvage trades safety for cargo. Perks turn those materials into a specific build. That build changes the final pursuit, and the result screen turns the whole voyage into a score the player can immediately challenge on the same seed.
We are also proud that replayability comes from decisions rather than grind. There is no permanent power, unlock currency, or backend economy—only different routes, Contracts, builds, execution, and the desire to improve a run.
The full 3D voyage, procedural audio, navigation, mobile UI, local persistence, and boss encounter run entirely offline in a compact browser submission.
What we learned
- Pressure must continue through decisions. Pausing the chase during planning removes the cost of careful play.
- Meaningful choices need honest previews. Players must understand Fuel, time, cargo, Noise, and threat before committing.
- Local greed and global pursuit need different stories. Island Noise and Kraken distance should reinforce each other without becoming interchangeable.
- Build choices become meaningful when they change behavior. A locked perk is more memorable than another small numerical increase.
- Retry is strongest when failure teaches something. A repeatable seed lets players test whether a different route or build would have changed the outcome.
- Tutorials need context, not only instructions. Showing where to tap matters less than explaining why the action matters.
- Mobile UI works best when it is contextual. Removing irrelevant controls creates more clarity than shrinking everything to fit.
- Game feel communicates rules. Movement, sound, shadows, water, and impact feedback can express danger faster than more text.
What's next for Abysswake
- Blind playtesting and balance tuning across all Voyage Oaths and perk combinations.
- More encounter variety and stronger island-specific storytelling without adding permanent grind.
- Continued refinement of touch controls, accessibility, and performance across mobile devices.
- Additional audio, haptic, and combat feedback for the highest-skill counterplay moments.
Built With
- css3
- html5
- javascript
- python
- three.js
- web-audio-api
Log in or sign up for Devpost to join the conversation.