Cast deep. Dodge down. Catch up. A Three.js underwater arcade fishing game on tglgames.com.
Play now Leaderboard CollectionYou stand above the surface. Tap Cast line and the hook drops. From there the run plays out in two phases:
Each fish has a base point value (small = less, large or rare = more). Your run score is:
score = round(sum(catch.base_pts) × clamp(depth_reached_ft / 100, 0.3, 1.5))
Cast deep and catch heavy. A shallow run with mediocre catches is worth a fraction; a max-depth run with the right ten is worth 1.5× the catalog sum.
178 catchables across eight families — freshwater, ocean, tropical reef, sharks & rays, deep sea, crustaceans & shellfish, mythic creatures, and sunken trinkets (yes, you can hook an old boot — or a cursed pearl). Every species has a weight, a spawn rarity, a point value (1 to 2,000), and a depth band scaled to your line length.
Catches are graded by rarity tier:
| Tier | Feel | Examples |
|---|---|---|
| Common | every cast | Minnow, Sardine, Crab, Bluegill |
| Uncommon | regular | Trout, Cod, Salmon, Seahorse |
| Rare | a good run | Mahi-Mahi, Swordfish, Manta Ray, Piranha |
| Epic | worth bragging | Oarfish, Goblin Shark, Coelacanth, Whale Shark |
| Legendary | an event | Leviathan, Sea Serpent, Golden Fish, Baby Kraken |
Deeper water holds rarer fish — commons thin out as you sink, and the legendary dwellers only appear in the bottom tenth of a deep cast at high line levels.
Every interaction — fish spawn, hit, near-miss, catch, phase change — is timestamped and posted with the run. The server keeps the full event log forever (per the platform policy) and uses the same Mulberry32 PRNG the client uses, so submissions can be re-simulated and scored independently in the future.
Play now More games