Skip to content

jacobbates/finbred

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

15 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Finbred

A single-screen aquarium management game. Fill a tank with fish, earn resources, avoid disaster, and collect three Crown Fish before the days run out.



Overview

Finbred is a browser-based strategy game about running an increasingly chaotic aquarium. Each day you draw fish from your personal Ocean deck, watch them swim around your tank, and then close the day to collect earnings. Those earnings let you buy more fish and expand your tank over the course of up to 30 days.

The catch: some fish pollute the water. If ammonia builds up too fast, the tank crashes and you lose your income for the day. Bigger tanks, clean fish, and smart purchasing get you to the goal β€” three Crown Fish swimming in the tank at the same time.



Finbred Gameplay Screenshot


PLAY ONLINE: https://jacobbates.github.io/finbred/




Table of Contents

  1. Overview
  2. How to Play
  3. The Day Cycle
  4. Win & Loss Conditions
  5. Game Mechanics
  6. Scenarios & Seeded Runs
  7. Fish Roster
  8. Traits and Abilities
  9. Activity Log & Charts
  10. Player Statistics


How to Play

  1. Choose a scenario from the setup screen and press Start Game.
  2. You begin with an Ocean deck of 10 fish (4 Guppies, 4 Goldfish, 2 Crabs) and a tank with capacity for 5.
  3. Press Go Fish! to draw the top card from your Ocean deck into the tank. Fish immediately start swimming.
  4. Once you are happy with your tank for the day, press End Day to score income and move to the Hatchery. You can end the day at any point β€” if ammonia is climbing dangerously, ending early before drawing another fish could save you from a tank crash and a wasted day.
  5. In the Hatchery, spend your πŸ₯š Eggs to buy new fish for your deck and 🐚 Shells to expand your tank.
  6. The next day begins with an empty tank β€” all fish from yesterday (including any that were eaten or poked out) return to your Ocean deck and are reshuffled.
  7. Repeat until you win, lose, or the days run out.


The Day Cycle

Every run follows the same rhythm:

1 β€” Playing Phase

The tank is empty at the start of each day. Press Go Fish! to draw fish one at a time from your shuffled Ocean deck. You can draw as many fish as your tank capacity allows. Fish with active abilities (shown with a glowing outline) can be clicked to use their ability once per day.

Note: Some abilities summon Transient Fish β€” these are temporary guests that swim in your tank for the current day only and are not added to your permanent deck.

2 β€” End Day / Summary

Press End Day to trigger scoring. Each fish in the tank produces its base Egg and Shell yield plus any bonus from their special ability. A breakdown of every fish's contribution appears in the Day Summary. If the tank crashed during the day (see Ammonia), no income is earned.

A Clean Tank Bonus of +1 🐚 Shell is awarded if ammonia is at zero when the day ends.

3 β€” Hatchery Phase

After scoring, all fish return to your Ocean deck (including any that were eaten or removed during the day β€” there is no permanent fish death). The Hatchery shop opens and you can:

  • Buy fish β€” spend πŸ₯š Eggs to add a new fish permanently to your Ocean deck.
  • Expand tank β€” spend 🐚 Shells to increase your tank capacity by 1 slot (cost scales up each time).

Once you are done shopping, the next day begins.



Win & Loss Conditions

How to Win

Collect any 3 πŸ‘‘ Crown Fish in the tank simultaneously at the end of any day.

Crown Fish are the rarest and most expensive fish in the game, identified by a crown icon in their description. You win the moment you end a day with 3 or more Crown Fish in the active tank β€” this can be any combination of three different Crown Fish, or even three of the same kind.

Costs, movement, and abilities for all Fish are listed in full in the Fish Roster below.

Game Over

Reach Day 30 without achieving the win condition.

If Day 30 ends and you do not have 3 Crown Fish in your active tank, the run ends in defeat. Once the run concludes you can review your tank, consult the activity log to trace your decisions day by day, and examine the performance chart to see where your economy stalled or where crashes cost you. Use those insights to set yourself up for a stronger attempt next time.



Game Mechanics

Currencies & The Tank

Income is earned at the end of each day. Both currencies carry over between days and have a 50 unit cap.

Feature Details
πŸ₯š Eggs Earned from fish daily income. Spent on buying fish in the Hatchery.
🐚 Shells Earned from fish daily income. Spent on expanding tank capacity.
Capacity Start at 5 slots, max 40. Expansion cost scales with each level.
Oversized Most fish use 1 slot. Sperm Whales use 2. Amphibians use 0.
Corpses Predator-eaten fish leave fish bone corpses that float to the surface.

Ammonia & Tank Crashes

Certain fish produce ammonia when drawn into the tank β€” shown as a rising ☣️ indicator in the stats bar.

  • How it Works: Some fish add +1 ☣️ Ammonia. If it reaches 3, the tank crashes.
  • The Crash: An ALGAE BLOOM or OVERLOAD (going over capacity) alert appears.
  • The Penalty: No income is earned for the rest of that day and you cannot draw more fish.
  • Recovery: All fish survive and returned to your deck for the next day. Ammonia resets to 0.


Ammonia & Tank Crashes

Ammonia is the central danger of Finbred. Certain fish produce ammonia when drawn into the tank β€” shown as a rising biohazard indicator in the stats bar.

How Ammonia Works

  • Some fish add +1 ☣️ Ammonia to the tank when drawn.
  • If ammonia reaches 3, the tank immediately crashes.
  • Certain fish reduce ammonia when drawn (Sea Snail: βˆ’1, Pleco: clears all).
  • Ammonia resets to 0 at the start of every day.

What is a Tank Crash?

When a crash occurs:

  • An ALGAE BLOOM alert appears and the tank view darkens.
  • No income is earned for the rest of that day β€” all fish contributions are forfeited.
  • Fish can no longer be drawn for the remainder of the day.
  • You must still press End Day to continue. The fish all survive and return to your deck tomorrow.

Tank Overload Crash

A second crash condition exists β€” a TANK OVERLOAD β€” which triggers with the same result: no income that day. This happens when:

  • The number of fish in your tank exceeds your current capacity, which can be caused by:
    • A summon ability (like the Penguin) firing when the tank is already full.
    • A fish with the Double Size trait (Sperm Whale) being drawn into a tank with only 1 slot remaining.

All ammonia-producing fish are identified by a +1 value in the Ammonia column of the Fish Roster below.



Scenarios & Seeded Runs

Scenarios

Select your starting deck and Hatchery pool:

Scenario Type Description
Rogue-Sea Roguelite Total chaos. The Hatchery reshuffles fresh every single day.
Random-Draft Draft 8 fish and 2 Crown Fish are locked as your run-long pool.
Seeded-Swim Seeded Allows you to play a specific seed to retry a scenario.
Challenge Runs Specific Moby-Deck, Fish-Bones, Neon-Nights, Finding-Fish.
All-Fish Sandbox The full fish roster is available. Everything, everywhere.

Seeded Runs

Enter a 6-digit seed (100000-999999) to replay an exact scenario.

  • Even seeds play as a Random-Draft.
  • Odd seeds play as Rogue-Sea.

To share your run, switch to the Activity tab in your inventory during a game and press Copy Seed.



Activity Log & Charts

Activity Log

Every significant game event is recorded in the Activity Log, viewable from the inventory panel during a run. The log captures:

  • Fish drawn (name and current tank fullness)
  • ☣️ Ammonia changes (before and after)
  • Tank crashes and the conditions that triggered them
  • Ability activations (who used an ability and what happened)
  • End-of-day scores (total earned and per-fish breakdown)
  • Fish bought in the Hatchery (name and cost)
  • Tank capacity expansions

The log can be copied to your clipboard in full from the log panel footer.

Performance Chart

The Day Summary chart (accessible from the Chart tab in the Day Report modal) plots your run's performance over time. It tracks:

  • πŸ₯š Egg and 🐚 Shell yield per day
  • Cumulative πŸ₯š Egg and 🐚 Shell stash
  • Tank capacity growth
  • ☣️ Ammonia level and crash days (highlighted)
  • Fish drawn per day and total deck size

The chart gives you a visual read of how your economy is developing and where crashes are costing you income.





Fish Roster

All fish, their cost, base daily yields, ammonia contribution, and special abilities are listed below. Fish not marked as Crown Fish have a maximum deck limit.

Daily values marked +? are dynamic β€” the amount varies depending on conditions in the tank at the time of scoring (e.g. ammonia level, number of other fish, presence of corpses). See the Ability column for details.

Legend: πŸ’° Cost (Eggs) | πŸ₯š Daily Eggs | 🐚 Daily Shells | ☣️ Ammonia | ⚑ Action Trait

Common Fish

Fish πŸ’° πŸ₯š 🐚 ☣️ Description Ability
Guppy Free +1 β€” +1 Free, but poops a lot? β€”
Goldfish 2 +1 β€” β€” A safe and reliable friend. β€”
Crab 3 β€” +1 β€” Digs around for Shells. β€”
Neon Tetra 4 βˆ’1 +2 β€” Eats Eggs, finds Shells. Simple. β€”
Sea Snail 4 +1 β€” β€” Eats a unit of ammonia on entry. Clean (-1)
Clamdestine 5 +? β€” β€” Rewards your unused tank capacity with Eggs. Pearl
Clownfish 5 +? -1 β€” Bonus +5 Eggs if tank is full. Not funny. Comedian
Salmon 5 +2 β€” β€” Summons ANY common, transient fish on entry. Summon Any
Shrimp 5 +1 +? β€” Earns +2 Shells per ammonia level on scoring. Scavenge
Turtle 5 +? β€” β€” +2 bonus Eggs for each Goldfish on scoring. Socialite
Ammonite 6 +2 β€” β€” Has foresight to peek the next fish. Inedible. Foresight ⚑
Anglerfish 6 +2 -1 β€” Lures a mess-free fish from the Ocean. Lure Safe Fish ⚑
Betta 6 β€” +4 +1 High Shells, but makes mess. Betta be careful. β€”
Seahorse 6 +? +? β€” Bets on a random fish, mimics it on scoring. Giddy Up
Starfish 6 +? β€” β€” Scores exponentially per Starfish in tank. Rockpool
Zombie Worm 6 +? +? +1 Eats bones on entry for instant +3 Eggs, +2 Shells. Bone Eater
Crab-Eating Frog 6 β€” β€” β€” 0 capacity. 50% chance to eat a Crab on entry! Crab Eater
Pufferfish 7 +1 β€” β€” Spikes up to poke a fish out of tank! Poke ⚑
Sea Urchin 7 +3 +2 +1 Poisons a fish on entry which dies in 3 draws. Poison
Electric Eel 8 +1 β€” β€” Converts 5 Eggs to 5 Shells... electronically? Transmute Eggs ⚑
Ghostfish 8 +? β€” β€” Gains +2 Eggs for every corpse in the tank at scoring. Haunt
Jellyfish 8 +1 -1 β€” Stings a fish to instantly score it. Sting ⚑
Pleco 8 β€” β€” β€” Guzzles all tank ammonia on entry to clean up. Clean (All)
Seal 8 +1 β€” β€” Search your ocean to draw a specific common fish. Searcher ⚑
Blue Tang 9 +1 β€” β€” Amnesia! Make fish forget they've used an ability. Amnesia ⚑
Lobster 9 β€” +3 β€” Big league Shell hoarder. β€”
Moorish Idol 9 +2 β€” β€” Escape plan for tank. Sends all fish back to ocean. Escape Plan ⚑
Octopus 10 -1 -1 β€” Telekenis! Redraw a fish or blow up crown fish. Telekinesis ⚑
Piranha 10 β€” +2 +1 Permanently shreds a fish from the tank and ocean. Shred ⚑
Arowana 10 β€” +? β€” +2 Shells per Guppy in tank. Motherly instincts. Matriarch
Flatfish 10 β€” +5 +1 Eats a random fish on entry! Bottom's up! Eat Random
Narwhal 12 β€” β€” β€” Impales a fish on entry. Ivory yields 10 Shells on death! Impaler
Manta Ray 12 β€” +? β€” Instantly scores +3 Shells per ammonia and clears it. Filter Feeder
Dolphin 12 -1 -1 β€” Necromancies all corpses as a clean transient fish. Necromancy ⚑

πŸ‘‘ Crown Fish (Win Condition)

Crown Fish are the rarest and most expensive entries. You need 3 in the tank simultaneously to win. They have no deck limit.

Fish πŸ’° πŸ₯š 🐚 ☣️ Description Ability
Sunfish 30 β€” β€” +? Fickle... may or may not secrete ammonia? Fickle
Kraken 32 β€” -3 β€” Eats into your Shells, but can double them! Gambler ⚑
Penguin 34 β€” β€” β€” Summons a random ocean fish on entry! Summon
Axolotl 35 β€” β€” β€” 0 capacity. Regenerates when attacked, leaving a corpse. Autotomy
Great White 36 -2 β€” +1 Eats a random fish on entry! Inedible, inevitable. Eat Random
Sperm Whale 38 β€” β€” β€” Uses 2x tank capacity. Who says size matters? Double Size
Sea Dragon 40 β€” -2 +1 Search for ANY common, transient fish. Finder ⚑


Traits and Abilities

Name Function Description
Amnesia ⚑ Click to target a fish. Reactivates a consumed active ability, otherwise does nothing. Lets you reuse a clickable ability that a fish has already spent today.
Amphibian Does not consume tank capacity. A free draw! This fish takes up zero space in your tank, letting you draw it without using a capacity slot.
Autotomy Survives predation. Sheds a corpse when attacked but regenerates. When targeted by a predator, this fish drops a corpse as decoy bait but survives the attack and keeps on swimming.
Bone Eater Consumes a fish corpse upon entry, instantly scores +3 Eggs and +2 Shells. Cleans up a floating fish bone from the tank when drawn, immediately rewarding you with Eggs and Shells.
Clean (βˆ’1) Reduces tank ammonia by 1 unit on Entry. Purifies the water when drawn, giving your tank a bit more breathing room from an ammonia crash.
Clean (All) Instantly clears all tank ammonia on entry. Completely filters the entire tank, wiping out all accumulated ammonia the moment it hits the water.
Crab Eater 50% chance to eat a Crab in the tank on entry. Gobbles up a random Crab when drawn, turning it into a corpse -- but only half the time. A risky gamble for Crab-heavy decks.
Comedian Bonus +5 Eggs if the tank is full on scoring. Brings in a big crowd, earning a massive bonus of Eggs at the end of the day if every single capacity slot in your tank is full.
Double Size Fish consumes an additional unit of tank capacity. Takes up far more space than a normal fish, requiring two tank capacity slots instead of one.
Eat Random Eats a random fish upon entry and removes it. Fish resurrect next day. Devours another random fish as soon as it enters the tank, leaving behind a fish bone corpse.
Escape Plan ⚑ Empties all fish from the tank back into your deck for a redraw. Does not refresh used active abilities. Evacuates your entire tank back into your deck so you can safely draw a fresh batch of fish without ending the day.
Fickle Random selects if adds or removes to Ammonia level on entry, paired with AMMONIA Trait. Unpredictably decides whether to pollute your tank with ammonia or keep it perfectly clean when drawn.
Filter Feeder Clears all ammonia and instantly banks +3 Shells per unit cleared on entry. Vacuums up all the dangerous ammonia in your tank, converting every unit cleared directly into Shells.
Finder ⚑ Select any available non-crown fish to draw as a transient. Lets you choose and draw any common fish from the entire roster for today, which then vanishes without cluttering your deck tomorrow.
Foresight ⚑ Peek at the next fish in the deck. Choose to draw it or reshuffle the ocean. Lets you peek at the very next fish in your deck and choose whether to draw it or reshuffle the ocean.
Gambler ⚑ Gamble all stashed Shells on red or black. Win doubles them, lose resets to zero. Bets your entire stash of Shells on a coin toss, either doubling your money or losing it all.
Giddy Up Copies the scoring potential of a randomly selected fish in the tank. Copies the exact daily earnings of whatever fish it decides to team up with when drawn into the tank.
Haunt Gains +2 Eggs for every fish corpse in the tank on scoring. Thrives on disaster, earning extra Eggs at the end of the day for every fish bone corpse floating in your tank.
Impaler Impales a random fish on entry. Fish resurrect next day. Skewers another random fish as soon as it enters the tank, leaving behind a fish bone corpse.
Ivory +10 Shells when this fish is removed from the tank. When this fish is killed or removed by any means, you receive a bonus payout of Shells from its valuable ivory.
Lure Safe Fish ⚑ Lures a random safe fish from the ocean to the tank. Safely pulls a clean fish out of your deck into the tank, completely avoiding the risk of accidentally drawing an ammonia producer.
Matriarch +2 bonus Shells for every Guppy on scoring. Rewards a Guppy-heavy strategy, earning extra Eggs for every Guppy swimming in the tank at the end of the day.
Necromancy ⚑ Click to replace all Fish Corpses in the tank with ANY random safe common fish. Resurrects every floating fish bone in your tank, transforming them into a random assortment of clean, temporary fish.
Pearl Earns +1 Egg for every completely empty capacity slot on scoring. Rewards a minimalist approach, earning bonus Eggs for every empty spot remaining in your tank at the end of the day.
Poison Poisons a random tank fish on entry. The poisoned fish dies after 3 more fish are drawn. Infects a random fish in the tank, causing it to die and leave a corpse after three more fish are drawn.
Poke ⚑ Pokes fish from tank and removes it. Fish resurrect next day. Harmlessly ejects a problem fish from the tank back into your deck for the rest of the day.
Rockpool Scores exponentially per Starfish in tank on scoring. Scales up its earnings based on how many friends it has, multiplying its payout for every other Starfish on the board.
Scavenge Earns +2 Shells per ammonia level on scoring. Feeds on grime, bringing in extra Shells at the end of the day for every notch of dangerous ammonia in your tank.
Searcher ⚑ Select any fish from your ocean deck to draw. Lets you dig through your deck and pick the exact fish you need right now to avoid risking a random draw.
Shred ⚑ Target a fish to permanently exile it from deck, leaves behind a corpse. Permanently tears a weak or unwanted fish out of your deck forever, leaving a bone corpse behind in the tank.
Socialite +2 bonus Eggs for every Goldfish on scoring. Loves swimming in a crowd, generating an extra Egg for every Goldfish happily swimming alongside it.
Sting ⚑ Pick a fish to bank its score instantly. Target also scores at end of day. Jolts another fish to instantly collect its daily earnings right now, while still letting it earn again at the end of the day.
Summon Summons another random fish on entry. Immediately drags the next fish off the top of your deck into the tank alongside it for free.
Summon Any Summons any random transient common fish on entry. Magically pulls a completely random fish from outside your deck into the tank for today only.
Telekinesis ⚑ Click to target a fish and retrigger its entry ability. Targeting itself creates a corpse. Hurls a fish around the tank to re-trigger its entry effect, or forcefully explodes its mind to remove it entirely.
Transmute Eggs ⚑ Activate to instantly transmute 5 Eggs into 5 Shells. Instantly melts down a pile of stored Eggs and converts them directly into valuable Shells.


Player Statistics

Finbred saves your career statistics automatically to your browser's local storage. These persist across runs and sessions and are viewable from the Player profile button in the top navigation bar.

Statistic Description
First Played The date of your very first game session.
Last Played The date of your most recent session.
Total Games Played Number of runs started.
Total Games Won Number of runs where 3 πŸ‘‘ Crown Fish were collected.
Total Games Lost Number of runs that ended in defeat on Day 30.
Rogue-Sea Wins Wins specifically achieved in Rogue-Sea mode.
Random-Draft Wins Wins achieved in Random-Draft mode.
Scenario Clears Individual cleared/uncleared status for each Challenge scenario.
Highest EoD Yield Your record single-day πŸ₯š Egg and 🐚 Shell earnings.
Largest Ocean The largest total deck size (tank + ocean + removed) reached in a single run.
Total Fish Bought Cumulative fish purchased across all runs.
Total Fish Drawn Cumulative fish drawn into the tank across all runs.
Total Fish Removed Cumulative fish evicted or eaten across all runs.
Total Tank Crashes Total number of ☣️ ammonia or overload crashes across all runs.

Statistics are not recorded and are invalid for any runs played with Debug Mode enabled.



Credits & Attributions

Icons

Icons in Finbred are delivered via Iconify and include assets from the following creators who require attribution:

  • Boxicons by Atisa (CC BY 4.0 License)
  • EmojiOne Monotone by JoyPixels (Attribution Required)
  • Font Awesome 6 Solid by Fonticons, Inc. (CC BY 4.0 License)
  • Game-Icons by Game-icons.net contributors (CC BY 3.0 License)
  • Hugeicons by Hugeicons (Attribution Required)
  • Streamline by Streamline (CC BY 4.0 License)


About

A deck-building strategy game... with Fish 🐟

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages