Log In  
:: Unfold ::

Curious Fishing is an aquatic puzzle game where you move a fishing hook around in a grid, trying to catch a variety of sea creatures which each embody different puzzle mechanics. Sort of Fishing + Sokoban.

The game started way back in 2016 as a jam game on the PICO-8 called Hook, Line and Thinker. In the full game I'm still using the lovely 16-color palette and 128x128 resolution, and all the game's audio was made in PICO-8 and then exported!

It's a free browser game that works on both desktop and mobile. You can check it out here:

The game is designed to be approachable and stress-free, so there are simple controls (including support for mouse, keyboard, gamepad and mobile touchscreen), no timers, you have an unlimited undo, and you can try the levels in almost any order so you won’t get stuck.

I thought I'd share in case anyone was interested. I hope you like it :)




P#117077 2022-09-08 17:46

:: Unfold ::

Cart #51915 | 2018-04-23 | Code ▽ | Embed ▽ | No License

You are at a speedrun event. You're trying to complete an RPG as quickly as possible, skipping as much as you can.

Made solo from scratch in 48 hours for Ludum Dare 41 based on the theme 'Combine 2 Incompatible Genres'.

Ludum Dare entry page

Tweet thread

itch.io page


P#51916 2018-04-22 21:06 ( Edited 2018-04-23 12:27)

:: Unfold ::

Cart #47046 | 2017-12-04 | Code ▽ | Embed ▽ | No License

Greetings Employee #452783. You have a lot of work to do.

Made solo from scratch in 48 hours for Ludum Dare 40 based on the theme
The more you have, the worse it is.

NOTE: Unfortunately dragging with the mouse often causes issues with the web player used here on the forum. This has been fixed on the itch.io page courtesy of ultrabrite (https://www.lexaloffle.com/bbs/?tid=30380).

Ludum Dare page
Employee recruitment homepage

As part of your induction please enjoy this educational video on the history of Complicity Inc.

P#47048 2017-12-04 14:35 ( Edited 2018-01-26 16:10)

:: Unfold ::

I'm making a fishing puzzle game called Hook, Line and Thinker. I started it on PICO-8 in a game jam and have since ported it to Defold so I can release it on Android and iOS. I've just done some variations on the case and I'm curious what people think! What's your favorite? What would you change? Original tweet.

If you're curious here's an overview of my progress on the game so far. Original tweet.

P#44310 2017-09-18 08:19 ( Edited 2017-09-18 12:19)

:: Unfold ::

I'm working on a game with separate menu music and in-game music. What I'd like to do is cache what the current music pattern is and resume each song from there, rather than constantly starting each song from the beginning.

I know I can see what SFX are currently playing on each of the channels using stat(16)-stat(19). I could cache that then peek through the music memory for a pattern with the right SFX on the right channels, but that is obviously not guaranteed to resume at the right point (or even the right song) if that set of SFX are used together in the same way in multiple patterns.

I checked all the values of stat() from 0-127 in case it was there but none of them corresponded to the music pattern.

I could manually track the pattern since I know what pattern I start the music from. With a combination of stat(16)-stat(19) for SFX and stat(20)-stat(23) for notes I should be able to tell whenever the pattern changes. If I know how many patterns long my song is (or just check for the loop flags in memory) I'll know when to reset the tracker back to the start of the song.

I say should because while it would be straightforward to write something like this that works for most music, it might be quite tricky in cases where the same SFX are used in consecutive patterns and use looping instead of a full 32 notes. It's doable but it just seems like a lot of work for what I was expecting to be a simple stat() call.

P#33599 2016-12-17 12:22 ( Edited 2016-12-17 17:22)

:: Unfold ::

Cart #27595 | 2016-08-29 | Code ▽ | Embed ▽ | No License

It's your first day at the museum and your boss is sick. Guess you'll have to improvise!

Made in 48 hours for Ludum Dare 36 based on the theme 'Ancient Technology'.
LD entry page

P#27596 2016-08-28 21:02 ( Edited 2016-08-29 02:11)

:: Unfold ::

Based on feedback I've created several variants of the unofficial PICO-8 font file. Please note, I do not claim any copyright - I used FontStruct to make these and it automatically inserts your username for copyright purposes.

PICO-8 mono
A monospaced font which includes punctuation, uppercase and lowercase letters.

PICO-8 mono upper
A monospaced font which includes punctuation and uppercase letters. Lowercase letters are replaced with uppercase.

PICO-8 mono reversed
A monospaced font which includes punctuation, uppercase and lowercase letters. The uppercase and lowercase letters have been swapped around.

PICO-8 wide
A variable-width font which includes punctuation, uppercase letters, lowercase letters and wide characters.

PICO-8 wide upper
A variable-width font which includes punctuation, uppercase letters and wide characters. Lowercase letters are replaced with uppercase.

PICO-8 wide reversed
A variable-width font which includes punctuation, uppercase letters, lowercase letters and wide characters. The uppercase and lowercase letters have been swapped around.

For the wide characters I decided to pack them into the following unicode characters U+00C0 to U+00D9: ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙ

So for example this:

Becomes this:

Original post:

With the recently discovered smallcaps and extended characters I decided to update the unofficial font file and make a thread for it. I do not claim any copyright - I used FontStruct to make it and it automatically inserts your username for copyright purposes.

Download the .ttf file here: https://drive.google.com/file/d/0B97Um39fHXlcWUFRZlBqUndhbXM/

Edit: included ampersand, backtick and DEL missing characters.

For the extended characters I decided to pack them into the following unicode characters U+00C0 to U+00D9: ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙ

So for example this:

Becomes this:

P#24428 2016-07-03 11:44 ( Edited 2021-11-07 17:32)

:: Unfold ::

I decided to do a write-up of a little recursive algorithm I made for finding every configuration of a set of blocks in a line. While I was doing that I figured I might as well make a PICO-8 cartridge and do a little rendering.

Left and right to change the rendering size, up and down to scroll. To change the number and size of the blocks, the size of the line and the minimum number of spaces between blocks just change the appropriate values in _init().

Algorithm (full code in cartridge)

function block_char(block_id)
  local chars = "abcdefghij"
  return sub(chars, block_id, block_id)

function can_shift(line)
  return sub(line, #line, #line) == "-"

-- shifts all blocks of the given id or higher rightwards one cell,
-- leaving all blocks left of that id unchanged
function shift(line, block_id)
  local char = block_char(block_id)
  local pos = 1
  for i = 1, #line do
    if sub(line, i, i) == char then
      pos = i
  local pre = sub(line, 1, pos-1)
  local post = sub(line, pos, #line-1)
  return pre.."-"..post

function find_solutions(blocks, length, min_spaces)
  -- build and store the leftmost solution
  local line = ""
  for block_id = 1, #blocks do
    for i = 1, blocks[block_id] do
      line = line..block_char(block_id)
    if block_id ~= #blocks then
      for i = 1, min_spaces do
        line = line.."-"
  if (#line > length) return {}  -- no solutions, can't fit
  while #line < length do
    line = line.."-"
  local solutions = {line}
  find_spreads(solutions, line, 1, #blocks)
  return solutions

function find_spreads(solutions, line, block_id, num_blocks)
  local my_line = line
  while can_shift(my_line) do
    if block_id < num_blocks then
      find_spreads(solutions, my_line, block_id + 1, num_blocks)
    my_line = shift(my_line, block_id)
    solutions[#solutions + 1] = my_line

blocks = {2, 2, 2}
length = 8
min_spaces = 0
solutions = find_solutions(blocks, length, min_spaces)

P#23324 2016-06-20 18:40 ( Edited 2016-06-21 20:28)

:: Unfold ::

There is a onehourgamejam every Saturday at 20:00 UTC. Feel free to post your own entries here too!

60th jam (18 June 2016). The theme was Castle.
This was my first 1HGJ. I worked feverishly on the first idea that came into my head: archery. I was in such a rush that I spelled castle wrong in the title graphic! Didn't realise until after submission that you can just hold down fire to win.

Cart #23205 | 2016-06-19 | Code ▽ | Embed ▽ | License: CC4-BY-NC-SA

P#23209 2016-06-19 11:46 ( Edited 2016-09-25 02:43)

:: Unfold ::

Cart #19838 | 2016-04-17 | Code ▽ | Embed ▽ | License: CC4-BY-NC-SA

I made this game for Low Rez Jam 2016 where the goal was to make a 64x64 game. I figured that was too many pixels so I made a collection of 20x20 microgames instead! I made one game a day for two weeks, April 1st - 14th. Here's the itch.io page for the game.

Games get harder with each level and unfortunately a lot of them will become impossibly difficult - balancing 14 games is pretty time consuming! I used 6590/8192 tokens and a decent chunk of the spritesheets (though a lot of what's there wasn't used). The screen mode hack found by sta64 forces the resolution from 128x128 to 64x64.

Things I'd like to add when I have time:

  • Menu music
  • Level win/fail music
  • In-game music which speeds up with the gameplay
  • Sound effects for all the games
  • Practice mode for trying each game
P#19840 2016-04-17 17:33 ( Edited 2018-04-25 00:26)

:: Unfold ::

So if you have caps lock on or hold shift and start typing in the search bar it uses a 3x4 font! I'm guessing zep tried out other font sizes or tried having 3x5 for uppercase and 3x4 for lowercase or something, and some weird loophole means it accidentally uses the small font for uppercase characters but only in the search bar.

P#19802 2016-04-15 16:54 ( Edited 2017-10-10 04:49)

:: Unfold ::

Cart #18837 | 2016-02-15 | Code ▽ | Embed ▽ | License: CC4-BY-NC-SA

A simple tool to make playing around with the PICO-8 palette easier.
Arrow keys to change selection, Z or X or to pause/unpause the fade animation.
Fade charts and function by @cap_colors

P#18838 2016-02-14 19:08 ( Edited 2016-02-17 03:57)

:: Unfold ::

I've made a series of fonts for the PICO-8. Each font uses as few sprites and as little code as possible. An 'LS' version of a font uses Less Sprites at the expense of longer code.

TinyText: a lowercase font meant for use alongside the uppercase system font. Each character is just 3x4 pixels and aligns to the bottom of the system font, meaning lines of text are still 5 pixels tall and 3-pixel monospaced. The whole font uses just 5 sprites. Can fit 21 lines of text on-screen (the same as the system font).

TinyTextLS: the same font as TinyText but with just 4 sprites!

MiniText: a prettier lowercase font also meant for use alongside the uppercase system font. Character size varies and can hang below the writing line, meaning lines of text are now 7 pixels tall (but are still 3-pixel monospaced). The code is a bit longer, but the font still only uses 5 sprites. Can fit 16 lines of text on-screen.

MiniTextLS: the same font as MiniText but with just 3 sprites! [deprecated, see LRP's Mini]

LRP's Mini: the same font as MiniText but packed into just 2 sprites by LRP!! It also uses less code than MiniTextLS, so it's all-round better - use this one instead of MiniTextLS! Find it in the comments.

These fonts come with 3 text rendering functions, plus there's the system print, so we have:

  • print(str [x y [col]]) the system print function, which "PRINTS IN ALL CAPS".
  • printlower(str x y [col]) which "prints in all lowercase".
  • printfirst(str x y [col]) which "Capitalizes just the first word".
  • printevery(str x y [col]) which "Capitalizes Every Word".

3Text: this is a standalone font that replaces the system font for printing. Every character is just 3x3 pixels and the code is very short, but it uses 10 sprites and is the hardest one to read. Can fit 32 lines of text on-screen.

  • print3(str x y [col])
LRP's Mini   2      3Text       164      3Text       32
MiniTextLS   3      TinyText    245      TinyText    21
TinyTextLS   4      TinyTextLS  410      TinyTextLS  21
TinyText     5      MiniText    411      MiniText    16
MiniText     5      LRP's Mini  590      LRP's Mini  16
3Text       10      MiniTextLS  676      MiniTextLS  16

Cart #18802 | 2016-02-13 | Code ▽ | Embed ▽ | License: CC4-BY-NC-SA

Cart #18803 | 2016-02-13 | Code ▽ | Embed ▽ | License: CC4-BY-NC-SA

Cart #18804 | 2016-02-13 | Code ▽ | Embed ▽ | License: CC4-BY-NC-SA

Cart #18805 | 2016-02-13 | Code ▽ | Embed ▽ | License: CC4-BY-NC-SA

Cart #18806 | 2016-02-13 | Code ▽ | Embed ▽ | License: CC4-BY-NC-SA


Please feel free to use these for anything you like! I've tagged these with the CC license so people know immediately that they can use them, but I'm actually releasing the sprites and code under the zlib license. The zlib license is even more permissive than CC BY-NC-SA and basically means you can do whatever you want with them, but I can't be held liable. Attribution is not necessary, but I'd love to hear from you if you use them for anything!


Here's the TinyText font rendered, in TinyText 1.1 and in TinyTextLS:

Here's the MiniText font rendered, in MiniText 1.1 and in MiniTextLS:

And here's the 3Text font rendered and in 3Text (I haven't been able to do 3TextLS because of what seems to be a PICO-8 string parser error):

How the 'LS' versions work:

The Less Sprites versions use flipping and overlapping characters to reduce the number of sprites used, which requires a bit more code to setup and render.

The TinyTextLS sprites contain the following characters:


d, p and q are flipped versions of b; t is flipped from f; r is flipped from l; w is flipped from m; u is flipped from n.

The MiniTextLS sprites contain the following characters:


a overlaps d; b, p and q are flipped from d; i overlaps j; the dot of j overlaps the bottom left of s; n overlaps h; u is a flipped subset of h; t is a flipped subset of f; w is flipped from m; z is flipped from s.

Old versions:

While doing the LS versions of TinyText and MiniText I made small changes to the p and q characters, so I updated the original ones to match. Here are the first versions of TinyText and MiniText:

Cart #18768 | 2016-02-11 | Code ▽ | Embed ▽ | License: CC4-BY-NC-SA

Cart #18785 | 2016-02-12 | Code ▽ | Embed ▽ | License: CC4-BY-NC-SA

P#18769 2016-02-11 15:27 ( Edited 2016-02-14 12:49)

:: Unfold ::

Cart #17893 | 2015-12-17 | Code ▽ | Embed ▽ | No License

Direct the growth of vines to avoid lawnmowers. If you run out of seeds, fly the bee to lots of flowers to pollinate them for more. Try to survive as long as possible!

I originally made this game in 48 hours for Ludum Dare 34 with the dual themes of 'Growing' and 'Two Button Controls'. There's a timelapse of that here. This is an updated version of the game with lots of improvements based on feedback from the LD community.

===Changelog 1.1

- The next spawn point for vines is now indicated by a seed sprite. The direction the seed is pointing is the direction the vine will grow (away from nearest screen edge, like always).

  • The spawn point for bees is now indicated by a beehive sprite. Along with the seed sprites, this means you can plan ahead much more.
  • If the lawnmower hits a seed or beehive it's position is re-randomized.
  • A big particle ring now emanates from the vine/bee spawn position to draw your attention and help you quickly work out where you are.
  • There's a warning flash on the side of the screen before a lawnmower appears.
  • The bee leaves a trail of pollen behind it once it has visited it's first flower. Players were getting confused about how to acquire seeds; the first flower visited gives you nothing but every subsequent flower gives a seed, because you pollinated it.
  • Rebalanced the game in various ways. In general, games should last longer now.
  • Added some berries and flowers to the titles to make them prettier.
  • Much clearer instructions on the title screen.
  • Many, many more title screen puns (from 14 to 27).

Original LD version:
Cart #17755 | 2015-12-13 | Code ▽ | Embed ▽ | No License
P#17756 2015-12-13 18:48 ( Edited 2015-12-19 23:39)

Follow Lexaloffle:          
Generated 2023-10-01 14:06:55 | 0.122s | Q:52