This game allows you to explore a fishing village and perform actions in it.
FishE runs behind a single user-interface contract, so it supports multiple front-ends: the default text/console interface, a pygame window, and a browser-based web interface. To play in the browser, run the example web app and open the printed URL:
python3 examples/web_app.py
# then open http://127.0.0.1:8000The entire game — save-file manager, fishing, shop, bank, tavern, and NPC dialogue — plays in the browser, with no extra dependencies (it uses only the Python standard library). Adding a new front-end means implementing BaseUserInterface and adding a UIType + factory branch.
Build a fortune of $10,000 in total wealth (cash on hand plus savings in the bank). Your progress toward the goal is shown in the status header, and reaching it earns a one-time victory — after which you're free to keep fishing or retire from the Home menu.
Once you can afford it, buy a boat at the docks ("Manage Boat & Crew") and hire workers. Each day your crew brings in a passive catch in exchange for a daily wage — turning saved-up money into ongoing production. If you over-hire and can't make payroll, the workers you can't pay quit, so keep enough cash on hand to cover wages.
You start Homeless — no home, and a low energy cap to show for it. From the Home menu, choose Manage Home to work your way up a housing ladder: Homeless → Rented Room → Driftwood Shack → Cozy Cottage → Sturdy Cabin → Waterfront Manor. Renting a room costs a daily fee (charged automatically each morning — miss a payment and you're evicted back to homeless) but builds no equity, so it's a bridge, not a destination. Buying a home costs money up front but is a real asset: moving to a different owned tier trades your current place in for the target one, so the price is the difference between what you get back for your old home and what the new one costs — moving up costs money, moving down (even back to renting) puts cash back in your pocket. Every rung raises the energy cap you refill to when you sleep, letting you fish longer between rests.
Separately from where you live, you can build a real-estate portfolio. At the bank, choose Manage Investment Properties to buy rental units around the village — Dockside Cottage, Fisherman's Rowhouse, Harborview Flat — that you don't live in yourself. Every unit you own pays out its own daily rental income automatically each new day, alongside bank interest and any crew wages, and any unit can be sold back for a portion of its price.
Sell your catch at the shop. The shop has a limited amount of money each day that refills overnight, so a very large haul may sell out the shop and need to be finished the next day — sell regularly, and park your earnings in the bank or reinvest them in gear and your crew.
FishE supports multiple save files, allowing you to maintain different game progressions simultaneously. When you start the game, you'll see a save file manager that displays:
- Existing Saves: each save slot is listed with a snapshot of its progress (Day, Money, and Fish count)
- Create New Save: Start a fresh game in a new save slot
- Delete Save: Remove unwanted save files
- Load: Pick any existing save slot to continue your adventure
Each save file is stored in its own slot (slot_1, slot_2, etc.) in the data/ directory, ensuring your saves never conflict with each other.
This project uses a simple, trunk-based branching model:
mainis the single long-lived branch and the source of truth.- Branch off
mainfor any change (e.g.feature/...,fix/...,chore/...). - Open a pull request back into
main. CI runs the test suite on every PR. - Once CI is green and the change is reviewed, merge into
mainand delete the feature branch.
There is no develop branch — work flows directly off of and back into main.