New Game: Fishing

I was reading the Taxonomy of Fishing Mini-games article on Game Developer and it made me wonder what a Blinks fishing game might look like. I thought it would cool to make a game that’s more chill and relaxing.

No GIFs this time as most of the tiles are blue and I still haven’t figured out how to photograph them well.

Here’s the github repo. You need to build it with BGA’s custom blinklib. There’s a chance I might split this into two sketches since I have a ton of ideas yet to implement, but for now it still fits in one.

This is still WIP, but it’s at a decent enough state to show off.

After programming, all of your tiles will start as “lake” tiles. The more tiles you have, the larger a lake you can use.

There are three water depths. The tiles that touch the edge (have at least one empty neighbor) are the shallowest “shore” tiles. Of the rest, any tiles touching a shore are “medium” depth tiles and everything else is a “deep” tile. So you’ll need at least 19 tiles to get a single deep tile. You won’t need to have that many to play the game, but it’ll open up more varied gameplay.

You’ll notice a periodic wave outward on the edge tiles. This is the water lapping at the shore.

After some time you may notice fish moving around your lake. They’re easy to miss since they only appear as darker spots on the water. If you wait long enough your lake will be teeming with fish.

To hook fish you’ll need to remove one of the lake tiles and triple click it to turn it into a player fisherfolk tile. This fisherfolk tile will have one white wedge and one colored wedge. The color is your player’s color. Single click the tile while you have it alone to cycle through the available colors.

When you are ready to cast your line, attach your fisherfolk to the shore of your lake. Your tile will start oscillating back and forth between the attached lake tiles. This is like a golf meter to select the direction of your cast.

Press and hold the button to select the direction. While holding, you will see your fisherfolk tile change and start sweeping up and down, towards and away from the lake. This selects the power of your cast. Release the button to cast the line with the given angle and power.

If all is well, you should see your line cast out from your player tile and drop in the lake with a subtle ripple. Casts can go from one to four tiles, depending on the power, and there are multiple angles that you can cast out. If you cast too far, or your cast goes off the edge of the lake, then the line will reel back in and you’ll need to try again. At the moment, this can be annoying to get right. I will tweak the process to improve the UX.

Once cast, it’s a matter of waiting. If a fish swims past your hook (the last wedge in your line) then it will bite. You can tell when this happens because the end of your line will start pulsing.

That’s all I have at the moment. You can’t actually reel in fish yet. Once the fish is on the hook, clicking the player’s button will release it and retract your line. Removing the player tile will also remove your line so you can try casting from a different part of the lake.

Lots of fun stuff left to do:

  • Actually catch fish!
  • Have different type of fish that fight back or get away
  • Methods for luring the fish closer to your line
  • Have your fisherfolk keep track of the fish you successfully caught

I think the “game” part of it will be mostly player-enforced. For instance: first to catch five fish, catch as many fish as you can in five minutes, catch the “best” fish, etc.

3 Likes

Few updates. Lots of under-the-hood changes to give room for future expansion. I have plans beyond just this game.

You can reel in fish now. Long pressing the button will reel in the line one step. Keep the button down and it will eventually reel all the way in.

Then, when I started adding a way to track the fish that a fisherfolk has caught, I ran out of code space.

So I split the sketch into two: lake tiles and fisherfolk tiles. This is actually good because it gives both room to add the things I have planned. Fisherfolk especially. I want the fish to be the star of the game and want to have some really cool looking anims for different fish types.

Beyond that, I have ideas for another game I can make that share the same Lake tiles, but use a third sketch for a different type of player tile. The question then will be whether I can fit all that gameplay within the Lake tile sketch.

Sounds really intresting so far. Can’t wait to see more of it. Do you want to show the fisherfolk tiles for the “keep tracking” to be able to show of the diffrent fish they cought? You could go by points, for example each time you reel a fish in, the fisherfolk tile will blink on 1 to 6 faces, showing how many points you got for that fish and then maybe add a “showing points”-option, for when you removed the fisherfolk tile from the lake. Like long press to change to a point showing animation. Just ideas.

Yep the idea is that when you remove your fisherfolk tile from the lake you will be able to use it to inspect all the fish you’ve caught (and even throw one back if you want to make room for a better one). While inspecting, you’ll be able to see their animation and stats. I hoping I can make the anims cool enough that players want to see them all.

1 Like

I got some free time to polish this fishing game into a mostly-playable state. All the code is pushed to the repo above.

I did end up using heterogeneous sketches for the lake tiles and fisherfolk tiles. That, along with using BGA’s custom blinklib makes it more roundabout to get it installed and working.

If there’s interest I can look into getting a batch file or something whipped up to aid with installation.

If you’re a DIY kind of person, you can grab the repo and compile it yourself. There are two defines at the top. Uncomment one at a time and install them on separate batches of tiles.

#define ENABLE_LAKE_TILE
//#define ENABLE_FISHERFOLK_TILE

You’ll want one Fisherfolk tile for each player. Otherwise you want a ton of lake tiles. The more the better. In fact, to have a chance to catch all possible fish, you’ll need at least 19 lake tiles.

Instructions
Here’s some quick instructions. Note this isn’t a game. More of a chill exploration thing. Kind of like real fishing, I guess? You could gamify it, but I’ll leave that to the user.

  • Each player gets a Fisherfolk tile. While the tile is by itself, click the button to cycle through the colors. It doesn’t really matter if anyone has a duplicate color.
  • Assemble the lake tiles in whatever configuration you like. Any tile that has an empty neighbor is a shore tile. Tiles touching shore tiles are “medium” tiles (don’t really have a good name for that). Tiles inside of that are “deep” tiles. So to get a single deep tile you will need 19 lake tiles in order to encircle it in two rings of 6 medium and 12 shore tiles. The deeper the tile, the darker the blue, but different battery strengths in the tiles can make that difficult to discern.
  • Ready to fish? Attach your fisherfolk tile to the outside of the lake somewhere. If it is touching between 1-3 contiguous lake tiles it will change and start swiveling side to side.
  • Casting your line involves a “golf meter” style of input. You will first choose an angle by clicking and holding the fisherfolk tile. Then you will release at the desired power. This will cause your line to be cast into the lake, which you will see as a trail in the water.
  • If your cast leaves the lake (power too high) or tangles with another player’s line then it will be aborted and you’ll have to try again.
  • Got your line cast? Now you wait…
  • You will see fish in the lake as darker spots moving around. When one of them moves into the same face as the end of your cast then it will be hooked. The face will start blinking.
  • It’s time to reel it in! While it is blinking, hold the button on your fisherfolk tile to reel the line in one tile. You need to let go of the button once it has been reeled a tile. Otherwise you might trigger the Blinks sleep function!
  • If at any time the blinking turns red, that means the fish is trying to escape. When this happens don’t reel! Reeling a struggling fish will make it automatically break free and you’ll lose your cast. To calm down a struggling fish, give your line a gentle tug by clicking the button once. The blinking red should turn back to the normal color and you can continue reeling as normal.
  • Once you reel the line all the way back to your fisherfolk tile, you will catch the fish! Your fisherfolk tile will play a little animation to show how many fish you have in your bag. At this point you need to detach your tile from the lake. You can either reattach it to try to catch another or…
  • View the fish in your bucket! Your bucket can hold up to six fish. When you have a caught fish, detach your fisherfolk tile from the lake. Then use the button to click through to view your fish! There are over a dozen different fish animations to discover and each fish will have different colors. When you are done looking at your fish, simply attach back to the lake to catch more.

Tips

  • Fish not biting? Did your cast not land where you wanted? With your line in the water, click your fisherfolk tile to give it a little tug. This will attract fish from neighboring tiles. Don’t do it too often though! Tug too much and it will have the opposite effect and scare the fish away from your line.
  • Don’t want a certain fish in your bucket? Put it back in the lake! While viewing a fish in your bucket, long click and it will be removed. You now have room to catch a different fish.
  • Each lake depth is home to different kinds of fish. Can you find them all?
1 Like

I uploaded hex files for the two sketches you need to play the game. Hopefully this will help those that aren’t able to compile it themself.

This is the command line I used on my PC to program. Modify to suit your own path. Substitute the .hex file name when programming the other tile.

C:\Users\Scott\Documents\ArduinoData\packages\arduino\tools\avrdude\6.3.0-arduino17/bin/avrdude -C C:\Users\Scott\Documents\Arduino\hardware\Blinks-SDK-1.1.0-GM\avr\avrdude.conf  -p m168pb -P usb -c usbtiny -U flash:w:fishing_lake.hex

What if instead of using brightness to signal depth you do a combo of that and green? the more green the closer it is to the surface. This way deep water looks darker by comparison and it is easier to tell.

It sounds like a really fascinating concept to make a peaceful and soothing Blinks fishing game.I’m sure your game will be a fantastic addition to the Blinks game library, so good luck with your concept!

1 Like