My web portfolio has all the normal things you would expect from anyone: work experience, research, education, a résumé, and a free-to-play fishing game. Totally normal stuff. Well, maybe except the fishing game.
I helped develop my first game during a company hackathon at PostHog, and the experience left me wondering whether I could make a small game of my own.
I’ve always been super fond of fishing (not that I’ve actually done it a lot, I just love the concept and the few times I’ve been. I guess you could say I’m a bit of a poser in this way). The original idea was very reasonable: you cast a line, catch a fish, and add it to a little collection.
Then I added an aquarium. Then rods and bait. Then an in-game currency made of shells. Then a daily shop run by a sailor cat named Billy.
This is how my small project became less small.
My first question was whether it was actually fun.
I knew I wanted the game to feel calm and slightly silly. I didn’t want there to be any urgent missions, no energy system, and no punishment for leaving. You just stand on a dock, cast your line, and wait for something to bite. Also, you get way more bites than you do while you actually fish (or else the game would be super mega boring).
Once it does, you have to keep your pull inside a moving target while trying not to lose your line. The mechanic is quite simple, but getting it to feel good was much harder than describing it.
The fish + items needed personalities.
There are 24 things to discover (as of now, I want to add more), although “fish” becomes a fairly loose category.
Writing these fun item descriptions became one of my favourite parts of the project.
The descriptions don’t change the gameplay at all. They do not make the game more technically impressive. They do, however, make each catch feel like it belongs in this particular little world.
How can the fish have personalities but nowhere to live?
I decided to make the living catches appear in an aquarium. They swim around together, and you can tap them to say hello. The nonliving discoveries go on a shelf.
There is no strategic reason to visit the aquarium. It does not make your rod stronger or improve your odds. It just lets you see the little creatures you found.
I really love that it has no practical purpose. Growing up, I played a lot of Animal Crossing. Going to the museum and seeing all my fossils, fish and everything else and just basking in awe of all the cool stuff I found was always one of my favourite parts of the game.
Games are full of systems designed to push people toward the next reward. I wanted at least one part of this game to exist simply because it is nice and fun to look at the fish.
Should I add some sort of proper character to the game for memorability? (short answer: yes)
At some point, a tackle menu turned into an actual tackle shop. That, of course, meant it needed a shopkeeper.
Billy is a scruffy grey-brown tabby in a sailor outfit. He sells rods, bait, and decorations in exchange for shell coins. His beach finds change each day, and you can tap him to say hello.
None of this was in the sensible original plan, but Billy made the game feel less like a collection of menus and more like a place. It is much more enjoyable to buy a ribbon rod from a mildly judgmental sailor cat than from a button labelled “unlock.”
Again, took some inspo from some of my favourite games + characters here (shoutout Blathers + Gulliver from Animal Crossing, as well as Willy from Stardew Valley).
This was also where I accepted that the project was no longer a tiny fishing minigame. It had become a tiny fishing minigame with an economy, a shopkeeper, daily stock, persistent progress, and an aquarium full of pettable sea creatures. Something I kept thinking about on my own time and wanting to add “just one more thing to”.
This is a perfectly normal addition to a professional portfolio, right? 😅
I wanted it to be accessible
The game works with a keyboard, mouse, or touch screen. Every part of fishing can be controlled with one main action button, so playing does not depend on precise or complicated inputs.
The important visual information also appears as text. The game tells you when there is a bite, what part of the catch sequence you are in, and whether you should keep pulling. It can be paused at any time, and the pause screen simply says, “take your time.”
I previously worked in digital accessibility, so these details were not something I wanted to think about at the very end. They shaped the game from the beginning.
It is still a small browser game, and I am sure there are things I could improve. But making something playful did not feel like a reason to stop caring about who could play it.
I built it with help from AI
I’m not a professional programmer. Despite my brothers constantly telling me to learn how to code since the age of 10 or so, I never did. I would say I’m a bit of a “vibe-coder”, though, if that term doesn’t make you cringe too much. I made the game (and my entire portfolio tbh) with help from GPT-6 Astra.
AI helped me turn all of my ideas into working code, troubleshoot problems, and keep iterating as the project grew. It made building something at this scale much more approachable for me (someone who doesn’t really know how to code more than a loop).
It did not remove the need to make decisions.
I still had to decide what the game should feel like, which ideas belonged, what was confusing, what was technically working but not enjoyable, and when one small improvement had accidentally created three new problems.
AI could help me implement a shop; but it couldn’t tell me whether the shop needed to exist, or that it should clearly be operated by a grumpy sailor cat named Billy.
That part required judgment. Very serious judgment.
Future me: better document the process, pls
I wish I had a beautiful series of progress screenshots showing the game slowly coming together for this blog post.
I do not. That’s probably my biggest learning for whatever I want to make next. I think this post would be much nicer with an actual inclusion of how I went from nothing to the game as it is now.
This was not a project I made so I could document myself making a project. I made it because I wanted to find out whether I could create something that was genuinely fun to play.
I think I did.