Tackle Box, a fishing adventure -- now available!

(Simon) #41

Although I like @drummyfish’s idea, I wonder how much code it would generate?

RLE is not very efficient if you cannot expand the data out and have to walk through the process every time you want a value.

You could look at RLE for each row (or col) and have an array of these encoded values represeting the cols. In this way, you are decoding a relatively small amount each time.

You seem to have 43 tile (6 bits). A simple RLE could use the top two bits to indicate length with 00 = 1, 01 = 2 … 11 = 4. However you have some longer runs so I wonder if you could have byte with its high bit set indicating that this is a run of more than one tile followed by the run length. Where the byte’s high bit is low, it indicates a single run.
A simpl

(Matt) #42

I can also change the map to make it more compress friendly. The map really isn’t that important, as you just walk between bodies of water to fish.

I think what I’ll do is implement the museum first and see how many bytes I need to shoot for and go from there. I suspect I can get most of the needed bytes from map compression, and then may need to scrounge for the rest. But on the surface it feels doable.

(Matt) #43

@filmote did your comment get cut off?

(Simon) #44

Err … no but I authored it at work and had to swap to more ‘work like’ stuff a few times when the boss walked past !


In my version of this that’s been floating around in my head I envisioned more of a mapless game. I imagined a menu with different locations to pick form like beach lake steam etc. Instead of walking there would be a cursor of where you were aiming the lure.

That’s pretty different mechanically but maybe some aspects from that could work out? Like keep a walk able town area and then have each fishing spot its own little rectangle area. That way all the map data is just the significant parts.

(Matt) #46

That’s an interesting approach @Freezingsnail. It would change the feel of the game a lot, but maybe for the better.

The more I think on the museum the more I’m unsure. For example, you would still want the fish collection in the menu, otherwise you’d have to go to the museum to see how many fish you have. Which would be pretty weird. Having it in the menu isn’t all that expensive, but the museum would likely be very expensive so would want to grab any byte possible.

I’m also thinking maybe instead of the museum, having a better “received fish” sequence. Like show it getting pulled out of the water and the player holding it up.

Also considering just leaving the game as-is. I’m pretty happy with it, and am also interested in moving onto my next project.

There is one bug I plan to fix: if you buy more than 255 baits, it overflows and you end up with zero bait :astonished: ugh

(Matt) #47

ok version 1.1.1 fixes the bait bug: https://github.com/city41/tacklebox/releases/tag/1.1.1

This might be the final release of the game.

(Pedro) #48

I like the game as is without the museum and it’s fun walking on the map. Great job!

(Andrew Dent) #49

Sorry for the dumb question… I couldn’t figure out how to fish!? Do I need to find a rod first?

… Ok. Figured it out! In the next revision it would be great to add a sign near the start saying; “You can’t go fishing without bait”, or similar. Perhaps replacing the website link…

The game looks lovely but the menu / text boxes would be so much clearer with a border, if space allows.


It’s ok we can save it for my fishing game I never make lol


It look a lot like the old pokemons game, and i love it!

(Matt) #52

I think I’ll look into a way to make sure when you start the game, there’s always one or two worms right there. Maybe also do the buzz sound effect if you try to fish without bait.

(Nicole Birgel) #53

I really have to try this…

(Holmes) #54

An alert would be nice. Just fire the sign functionality if there’s no bait when looking at the water.

(Matt) #55

That’s a great idea. I think I’ll do that.

(Matt) #56

Version 1.2.0 just released with these changes:

  • if you try to fish without bait, you get a warning
  • after you cast, the player turns and faces the cast (a minor cosmetic improvement)


This addresses @acedent’s feedback

(Nicole Birgel) #57

Wow i have to say this is impressive! I want to play this a lot to find out all it has to offer!

(Andrew Dent) #58

That’s neat- and will surely help newbies like me :wink:
If I may suggest a tiny tweak(?)… I think the message would have a better tone of voice, with something like “Hmm? No bait!”, rather than being in the third person.

My comment about on screen menus, etc. actually only effects night-time when the colours are inverted. The black menus on a black background would look a lot better with 1px white border.

(Matt) #59

I do like that tone better, it’s more friendly. But then this would be the only message in the game that was first person.

I’ve been toying with the idea of adding another NPC. I was thinking they could sell lures. So if you had the worm lure, you effectively have infinite worms. Granted running out of bait isn’t really a problem, but they’d be added more to just add a tad more flavor to the game.

(Matt) #60

Trying out @drummyfish’s compression idea. I wrote some JavaScript to generate the code against the map. It’s not picking the ideal rectangles, as I just did a simple algorithm. But with the map as it is, it increased the sketch size by about 5k :sweat_smile:

By simplifying the map to this, I was able to save 250 bytes

It generated this code: https://github.com/city41/tacklebox/blob/compressMap/src/world.cpp

Again I could improve the algorithm to be more greedy and there’d be improvements, but not hopeful enough to make a difference.

So it’s a neat idea and can work in some scenarios, but maybe not for this game.

I’m gonna try @filmote’s simple RLE idea next.

EDIT: two optimizations to make on the @drummyfish algorithm: if a rectangle is 1x1, just do if (x == foo && y == bar) for two fewer comparisons. And for the most common tile in the map just return that as the final “else”. I’ll try those.