Fathom - Underwater Maps for RPG Maker MZ: Caustics, Light Shafts, Kelp, Sea Life and a Dive
A downloadable asset pack
Your own maps, under the sea. One notetag, and the plugin draws the rest.
RPG Maker MZ has no underwater mode. The usual answer is a recipe of four or five plugins: a fog with a water picture, a blue tint, a particle plugin for bubbles, a displacement filter, a layer for caustics. Fathom is that whole scene as one plugin, and it draws every part of it itself. Put <underwater> in a map's note and that map, even an ordinary town, is seen through the water. No image files ship with Fathom.
⚠️ Compatibility — the question you actually have
Tested against RPG Maker MZ with the stock scripts unmodified, verified by running the plugin in the real engine rather than only in tests.
Plugin Manager order:
FathomCore.js— Fathom Core - the underwater rules: depth light, caustics, sea life species. Required by Fathom.FathomPaint.js— Fathom Paint - draws every sea creature, bubble and light shaft in code. Required by Fathom.Fathom.js— Fathom - your own maps under the sea: caustic light, light shafts, swaying kelp, sea life and a dive in.
Core methods extended — 6 by saved-original prototype extension, none replaced: Game_System.prototype.initialize, Game_System.prototype.onAfterLoad, Spriteset_Map.prototype.createLowerLayer, Spriteset_Map.prototype.update, Spriteset_Map.prototype.destroy, Scene_Map.prototype.update.
Because nothing is clobbered, Fathom co-exists with other plugins that patch the same seams, including large suites.
It also defines one method that its core class only inherited: Game_Player.prototype.realMoveSpeed (inherited from Game_CharacterBase). That touches Game_Player only, never the parent. If another plugin redefines the same method on the same class, load Fathom after it.
What it draws
- Light that reads as water. The colours are graded by depth: the reds go first, then the greens, and the light falls away. Murk sets how much of the water's own colour hangs in the scene, and your map's own rivers and ponds sink into it.
- Caustics. A network of light crawls over the floor, two layers moving against each other, brightening and fading by region. Floors catch it fully, walls, roofs and water less, read from which kind of tile each cell of your map is.
- Light shafts slant down from the surface and waver, anchored to the map so they slide past as the camera moves.
- Sea grass. Any tile with the Bush flag (grass, reeds, shrubs) sways in the current from its foot.
- Bubbles rise from every character on a breathing rhythm, and plankton motes drift through the light.
- A refraction wobble over the whole scene, as if seen through moving water.
48 species of sea life, drawn by the plugin
Every creature is built from its parts: a body plan, a body, a tail, a pattern and a palette. Fish swim in schools that part around the party and close up behind it; rays glide overhead; jellyfish drift with the current; eels and crabs keep to the floor; seahorses hang in the water. Swimmers sit above the floor in clearer water, keep more of their colour, and cast soft shadows on the floor below. Each map always holds the same life, deep maps gather more jellyfish and eels, and a life word sets how much.
Dive and Surface
Two plugin commands in place of Transfer Player. Dive: the water breaks at the party in a splash of rings and thrown drops, the screen sinks into blue, and on the new map the light clears to the water's own colour. Surface: the light rises to white and the party breaks the surface with a splash.
Optional rules
- Slower movement under water (followers follow at the same pace).
- Air: a column of bubbles on screen shows what is left. When it runs out, your common event runs, or the party loses 5% of max HP each second, never below 1. It refills above water and with the Refill air command.
- Set this map underwater or dry at run time: a flooding room, a drained cistern. Kept in the save.
One notetag, seven words
<underwater: depth 1, murk 10, current 90 1.5, life 150, shafts 5, kelp off, caustics 120>. Every word is optional and clamped to its range; an unknown word is ignored, never fatal.
Tested in the real engine
Every effect, both transitions, the air rule and a save and load were run in RPG Maker MZ's own runtime from the exact zip you download, on our own test maps and installed into a blank MZ project with the stock tileset. On the busiest of our test maps (a 36 by 26 reef with the most sea life and swaying kelp), MZ's frame gate measured 17.85 draw calls per frame, 0.003 texture uploads per frame and no display-object growth over 600 frames, three runs. The town and the hamlet in these screenshots are our own test tilesets; Fathom ships neither, and draws over whatever tileset your maps use.
In the zip
FathomCore.js(the rules),FathomPaint.js(the drawing) andFathom.js(the engine side): raw, readable, commented JavaScript.Readme_for_Users.mdandLICENSE.txt(use it in any number of your own commercial or free games).
From the same studio
- Vivarium: the small life a real place has, above the water: butterflies over grass, dragonflies over ponds, fish shadows under the surface.
- Creel: every fish your game can catch, drawn at run time from its own data.
- Cloudshadow: the drifting shadows of passing clouds over your maps, shaped to each map.
AI disclosure: this plugin's code and graphics were made with generative AI; every effect and creature is drawn by that code at run time. It ships no sounds and no story text.
Made by Core Systems Asset Factory.
| Published | 1 day ago |
| Status | Released |
| Category | Assets |
| Author | CSAF — Core Systems Asset Factory |
| Genre | Role Playing |
| Made with | RPG Maker |
| Tags | fish, javascript, ocean, plugin, Procedural Generation, RPG Maker, RPG Maker MZ, Shaders, underwater |
| Languages | English |
| AI Disclosure | AI Assisted, Code, Graphics |
Purchase
In order to download this asset pack you must purchase it at or above the minimum price of $12.99 USD. You will get access to the following files:





