Institute of Computer Science
  1. Courses
  2. 2025/26 fall
  3. Game Engines (LTAT.02.018)
ET
Log in

Game Engines 2025/26 fall

  • Main
  • Schedule
    • PICO-8
    • Godot
    • Unity
    • Unreal
    • Unreal Networking

PICO-8

PICO-8 is a fantasy console for making and sharing tiny games. It feels like a regular console but runs on Windows/Mac/Linux. You can also browse and play PICO-8 games in Browser.

Limitations

  • Display 128x128 16 colors
  • Input 6 buttons (up,down,left,right,x,o) + optional mouse
  • Cart Size 32kB
  • Sound 4 channel chip
  • Code Lua (8192 tokens or 65535 characters)
  • CPU 4M vm insts/sec
  • Sprites 256 8x8 sprites
  • Map 128x32 tiles

Useful video essay overview of PICO-8

How to use PICO-8

PICO-8 educational edition is usable for free in a web browser: https://www.pico-8-edu.com/

It has all the required features to make a game, except the ability to export game cartridges and use the Splore game browser. The user can still save and load the .p8 file that contains the project code. For really small games and samples, it even allows you to save a URL game (a URL that fits the entire game as long as it fits within 2040 characters), you can find an example from here.

Some other materials for learning:

  1. Pico-8 Wiki
  2. beginner tutorial
  3. pico-8-shooter in 16 gifs

Pico-8 cheat sheet source

Steps

  1. Press esc to switch to project edit mode, then open cmd again with esc and save your project.
  2. Add _init(), _update() and _draw() functions, draw a circle with circfill command.
  3. Add global variables x,y. Change x,y with directional buttons. Use x and y to change where the circle is drawn.
  4. Draw a character, and use its sprite instead.
  5. Use ovalfill to draw a shadow under the character. And fillp to give it a cool pattern.
  6. Draw a few more character frames, animate them when the character moves. Flip it based on direction.
  7. Create a few more sprites for the environment and collectable loot items. Add them to the map and draw the map in code.
  8. Set flag 0 for solid objects. Restrict the player's movement when trying to move inside a solid tile (use mget andfget to get a tile flag)
  9. Set flag 1 on the collectable items. When the player moves, find the cell it touches and remove it if flag 1 is set (mset function to clear a tile).
  10. Create a sound effect and play it when a coin is collected.
  11. (Optional) Use pal to change blink the player's primary color for a frame it collects the coin.
  12. Add a coin counter to the top left side of the screen. Increase it when a loot is collected.
  13. Create a camera to allow the player to move outside the visible area.
  14. Add one more complex gameplay feature to your liking. Some suggestions:
    1. Enemies that move between two certain tiles and reduce the number of coins.
    2. Shopkeeper who exchanges money for items.
    3. Timer for the level.
    4. Add the ability to jump over the solid blocks with x, but it takes one coin.
  15. (Optional) You can try to save it as URL game (use save @url command). But it will lose the sound and map data, unfortunately.
  16. Create a screenshot of your game and submit it to CGLearn to get an extra 5 points.

Lab videos.

Mini introduction lecture to PICO-8: https://youtu.be/RUg0_AEzgCY

PICO-8 lab: https://youtu.be/dmf2TOARRx0

  • Institute of Computer Science
  • Faculty of Science and Technology
  • University of Tartu
In case of technical problems or questions write to:

Contact the course organizers with the organizational and course content questions.
The proprietary copyrights of educational materials belong to the University of Tartu. The use of educational materials is permitted for the purposes and under the conditions provided for in the copyright law for the free use of a work. When using educational materials, the user is obligated to give credit to the author of the educational materials.
The use of educational materials for other purposes is allowed only with the prior written consent of the University of Tartu.
Terms of use for the Courses environment