Number of boats:
Variable fish value:
Obstacles:
Clear

Goal

Send your boats to collect as many fish as possible. You have 300 turns for that.

The boats are controlled by executing commands via a update_player (i, world) function. "up", "down", "left" and "right" are valid return values (+x is right, +y is up). In case of no or invalid output the boat will wait for a turn. Each boat can carry only one fish.

World reference

World table

  • fish - a table of Fish objects (fish id is the key)
  • home - home tile position {x, y}
  • players - 1-indexed list of Player objects
  • obstacles - 1-indexed list of obstacle positions {x, y}

Fish table

  • x, y - current position
  • life - turns of life left
  • value - fish score / value
  • id - unique id (auto increment)

Player table

  • x, y - current position
  • loaded - collected Fish object or nil

Custom functions

  • debug(value) - log any Lua value to a side console

Misc.

Check https://github.com/maciekglowka/fish_bots if you're interested how the game works under the hood.

Lua compatiblity: the game uses a pure-rust Lua VM Piccolo, which is still in development and thus has limited capabilities.
From the README: A large amount of the stdlib is not implemented yet. Most "peripheral" parts of the stdlib are this way, the io, file, os, package, string, table, and utf8 libs are either missing or very sparsely implemented.

Changelog

2025-03-16
  • Fish id's
  • Spawn rate and fish life adjustment
2025-03-19
  • WebGL2 capabilities fix on mobile (attachment colours limit is now set to 4)
  • A single column layout for resolutions lower than 900px
  • Propagate Lua interpreter errors to the game console