tidewater README

The project's README from github.com/dgreenheck/tidewater. As one markdown file: README.md.

Tidewater

An island fishing game for the browser. Cast from the pier, the beach or your own boat, fight the fish, sell your catch to Joe at the fish stand, and spend it on better gear at Marta's chandlery. Around it is a real-time tropical island and ocean: swim the reef, drive the boat out to deep water, and watch a humpback breach. It runs directly on WebGPU and WGSL with its own small rendering engine, no framework.

Play it: https://dgreenheck.github.io/tidewater/

Fishing off the pier at golden hour

The beach in the late afternoon

Requirements

Features

Fishing

Ocean

Sky

World

Lighting and post

Audio

Controls

Key Action
W A S D Move
Mouse Look (click to capture the mouse, Esc to release)
Shift Sprint / boat boost
Space Jump / swim up
C Crouch / dive
E Interact: board the boat, take or leave the helm, step ashore, trade with the fish buyer or the chandlery
V Boat camera at the helm (1st / 3rd person)
R Take out / put away the fishing rod
Left mouse Hold to wind up, release to cast · strike when a fish takes the bait · hold to reel
Right mouse Reel an empty line in
I or Tab Cooler / fish hold and the fish log
F Free camera
L Flashlight
T Pause time
M Mute
H Settings panel
P Photo mode
F1 or ? All controls

Fishing

Walk the deck of the boat while it drifts, or fish from the pier and the beach. Cast, wait for the bobber to dip and strike when it's pulled under, then play the fish: keep the line tension in the green band, ease off when it runs. Different water holds different fish (the shallows, the pier, the reef, the bay and deep water offshore), and some bite best at dawn, dusk or night. Sell your catch to Joe at the fish stand on the beach by the pier, and spend it at Marta's chandlery by the boathouse: stronger line, a faster reel, a longer rod, a bigger fish hold, a larger fuel tank, a rebuilt engine, a fish finder and deck floodlights for night fishing. The boat burns diesel at the helm; fill up at the chandlery. Progress is saved in the browser.

The settings panel (H) exposes the sea state, time of day, sun azimuth, clouds, haze, post-processing and more.

URL options

Add these to the URL, for example ?fly&noAudio:

Option Effect
fly Start in the free camera
noAudio Disable sound
noClouds Skip the volumetric clouds
noHaze Skip the haze and sun shafts
noCaustics Skip caustics
noVeg Skip vegetation
noSim Skip the swash (shallow-water) simulation

Running locally

npm install
npm run dev      # http://127.0.0.1:5189
npm run build    # static build in dist/

Every push to main deploys to GitHub Pages through .github/workflows/deploy.yml.

Project layout

Folder Contents
src/game/ The fishing game: rod, bites, the fight, catch card, cooler and log, vendors and stalls, guide, minimap, HUD
src/engine/ The rendering engine: math, scene graph and geometry, GPU resources, WGSL shader composition, materials, lighting and shadows
src/ocean/ FFT ocean, water surface and material, shore waves, breakers, swash, wake, caustics, underwater lighting
src/sky/ Atmosphere, clouds, sky and environment
src/world/ Terrain, village, pier, reef, fish, vegetation, rocks, debris, wildlife, whale, boat
src/post/ Post chain: AO, underwater composite, haze, TAAU, motion blur, bloom, lens flare, droplets
src/materials/ Shared lighting: shadow filtering, bounce light, contact shadows, local lights, LOD fades
src/player/ Walking, swimming, the boat and the free camera
src/audio/ The sample-based soundscape
src/ui/ Settings panel, loading screen and HUD
tools/ Scripts that fetch and convert the characters, stall props and fishing sounds
test/ Headless engine smoke test and game-logic tests (npm test), and HUD / loader dev pages

Credits and license

The code is released under the MIT license; see LICENSE. Third-party assets (CC0 audio from Freesound, CC0 scans from Poly Haven, MIT characters from Microsoft Rocketbox, OFL / Apache fonts) and technique references are listed in CREDITS.md.

tidewater (dgreenheck/tidewater)

gpu-programming
Searching Database…

What is this?Tidewater is an island fishing game that runs right in your browser: cast from the pier, the beach or your own boat, fight the fish, sell the catch to Joe, and spend it on better gear at Marta's chandlery.
Is it a native game or does it just run in the browser?It's a pure browser game: it runs directly on WebGPU and WGSL shaders through its own small rendering engine, with no framework and nothing to install.
How do I start playing?Open the play link from the repo in a recent Chrome, Edge or Safari — every push to main is deployed to GitHub Pages automatically. Then WASD to move, mouse to look, E to interact.
Will my machine and browser handle it?You need a browser with WebGPU (recent Chrome, Edge or Safari) and a capable GPU. The target is 60 fps at 2560×1267 on an Apple M5 Pro, and dynamic resolution scales the render down on slower machines.
Anything to watch out for on first launch?The first load compiles several hundred shaders, which can take a minute or more; later visits are faster because the browser caches them. Only Chrome, Edge and Safari are listed as supported browsers.
Does my progress carry over between sessions?Progress — gear, money, the fish log — is saved in your browser, so it persists between visits without any account.
Is the code open source?MIT — free to use, modify and redistribute. Third-party assets (CC0 audio, Poly Haven scans, Rocketbox characters, OFL/Apache fonts) are credited separately in CREDITS.md.
How does the fishing actually work?You cast with the left mouse button, strike when the bobber dips, then keep line tension in the green band, easing off when the fish runs. Shallows, pier, reef, bay and deep water hold different fish — 18 Caribbean species — and some bite only at dawn, dusk or night. Sell your catch to Joe and upgrade at Marta's.
Is there more to it than fishing?Yes: you can swim the coral reef, take the boat to deep water (it burns diesel you refill at the chandlery), and watch a humpback whale breach. There's also night fishing with deck floodlights, an underwater flashlight, a free camera and a photo mode.
How serious is the water simulation?Quite serious: a four-cascade FFT ocean from Tessendorf spectra with foam and whitecaps, depth-aware breaking waves, a shallow-water swash simulation on the sand, boat wakes, seabed caustics, and a split underwater/above-water view at the waterline.
What if my GPU struggles — can I turn effects down?Yes. The settings panel (H) exposes sea state, time of day, sun azimuth, clouds, haze and post-processing, and URL flags like ?noClouds, ?noVeg or ?noSim skip whole systems at load.
Is there sound?Yes — positional audio from real CC0 field recordings: surf timed to each breaking wave, wind, birds, the boat engine, footsteps by surface, underwater ambience, whale song, and the rod and reel. M mutes it.
Why does the description say 'built with Opus 5.5'?The GitHub description credits the coastal town to Opus 5.5, an AI model. The README itself documents only the finished game — features, requirements and controls — and doesn't discuss how it was built.
Creator
dgreenheck
Size
49.9 MB
Stars
1.3K
Updated
CommitSep 25
Age
25d
Commits · 90 Days