PONGA
This is a fast-paced arcade game made in PICO-8, inspired by the classic Pong, but with a modern twist.
The goal is simple: keep the ball in play and outsmart your opponent, but be careful, every hit makes it faster!
Features:
- Smooth and responsive controls
- Gradually increasing ball speed for extra challenge
- Simple but dynamic AI opponent
- Particle effects on every bounce
- Classic 8-bit look and feel
How to play:
- 🕹️ Move your paddle using the arrow keys
- 🅾️ or ❎ to start or restart
- First to miss loses — but you can always try again!
Notes:
I wanted to capture that retro vibe while keeping the gameplay intense and satisfying.
Any feedback or suggestions are welcome.
I’d love to hear what you think!
Enjoy!
Guesball | A Guess-Based Baseball Game
Guesball is a guess-based baseball game that aims to capture the thrill and unpredictability of real baseball. It features four distinct opponents, each with their own tendencies and a touch of luck.
The tension of the later innings and the challenge of reading your opponent are at the heart of the experience Guesball tries to recreate.
I hope you have fun.
Play ball!
How to Play
Use the arrow keys to move between buttons, and press (X) or (O) to select.
As the pitcher (top side), your goal is to avoid being predictable.
As the batter (bottom side), your goal is to predict the opponent’s number.
There are four different opponents, each with unique behavior. They have an element of randomness but also show certain tendencies. Your goal is to recognize these tendencies and exploit them.

About
Finical Choir is a short rule discovery puzzle game made for a theme "Out of Sync"
Controls
X - to select a pip and then again to swap with the selected one
Z - swap with reserve slot
Right and left arrows - move the cursor
Rules
The goal is to reach the same tempo for each pip, and they all have to be on the stage. Each has its own rules that you have to figure out.
Reach your monthly targets through fiscal year 2026 and beyond in this fast-paced, arcade game.
The goal is to perform as long as possible using a simple one-button mechanic to flow through a side-scrolling, endless series of bar chart obstacles.
The game's simple, repetitive, and highly replayable nature is designed for quick play sessions and maximum good times! Just try not to let it get in the way of actually achieving your workplace performance goals.







In a recent update, fetch()ing a .png file will now return a paletter-fitted u8 userdata, instead of the i32 we had before. Unless I've missed something, this means it's now no loner possible to get the actual colours in the image? Maybe an extra argument to fetch could resolve this, as we still have the ability to pass true to userdata :convert to get the palette alongside a u8.

I made a 206 token eval function for PICO-8.
I forgot the code but I know how the code works.
How it works
How to use it
[hidden]
Functions use a function name, parenthesis, and comma-separated values: name(p1, p2)
Functions can even be symbols: =("x",0)
Variables are simple: var
Numbers can be decimal, negative, binary, or hexadecimal: 1, -1.2, 0x123, 0b101
Strings use ONLY quotation marks: "hello world"
Strings don't care about newlines
Strings can use a lot of backslashes, just look at that code below me
--(vars)
=("x",0)
=("y",0)
while("true","
--(moveplayer)
if(btn(0),\"
=(\\"x\\",+(x,-2))
\")
if(btn(1),\"
=(\\"x\\",+(x,2))
\")
if(btn(2),\"
=(\\"y\\",+(y,-2))
\")
if(btn(3),\"
=(\\"y\\",+(y,2))
\")
--(draw)
cls()
print(\"what you are seeing right now
is being ran from evalmini
you can control the x with ⬆️⬇️⬅️➡️\",0,0,1)
spr(0,x,y)
flip()
") |
Hi all, so I've been working on my table that adds bread slices to my duck game. It's working fine now and I can add the desired amount of bread. But there is a strange oddity - I have a little animation of the water rippling under the bread slices, but for some reason the more bread slices there are, the faster the animation goes, so if there's a lot of bread it's just a crazy flickering. I can't really get my mind around why this would be happening, so would appreciate any thoughts.
Here is all the code relating to the bread and ripple animation (rip stands for ripple):
--bread
--contents:
--init bread (empty table)
--breadset
--update bread
--draw bread
--ripple animation
function initbreadslice()
bread={}
breadtime=true
end
function breadset()
add(bread,{
sp=42,
x=20+rnd(75),
y=20+rnd(75),
act=true,
dis=4,
draw=function(self)
if self.act==true then
ripples(self)
spr(self.sp,self.x,self.y)

Hey all! New to Pico 8 and coding, here's my first game! Putting it up to have friends play test, still lots of kinks to iron out, but give it a play and let me know what you think!
--UPDATE 01--
Added main menu (will add game over loop soon)
Fixed issue where baby quails spawned in fox's path
Fox speeds up as score increases

When I'm drawing i dont' want to accidentally bleed into another image, so I select the sprites and zoom level I want. But when I hit CTRL+Z, not only does it properly undo the last action I did, but it unfortuantely skips back the zoom to default.
This is super annoying. I'm not sure if it's a bug, but it makes drawing super frustrating in Pico8 when using non-standard sizes with the sheet selection tool.

Mondrian
Combines the style of Piet Mondrian with this recursive squares thing-I-don't-know-the-name-for-but-I've-definitely-seen-before, all in 296 characters. It's also a one-liner, although I wasn't trying to make it one originally. One line just happened to save the most characters in this case.
Requires mouse controls, so check out the actual cart here: https://www.lexaloffle.com/bbs/?tid=152064
(296 chars)
poke(0x5f2d,1)p={x=0,y=0}pal({8,10,-4,7,7,7},1)function s(x,y,w)srand((x-m)/(y-n))rectfill(x,y,x+w,y+w,rnd(7))rect(x,y,x+w,y+w,0)if(p.x>=x and p.x<x+w and p.y>=y and p.y<y+w)w/=2s(x,y,w)s(x+w,y,w)s(x,y+w,w)s(x+w,y+w,w)end::a::cls()p.x=stat(32)p.y=stat(33)m=-(t()*8%256)n=m/2s(m,n,512)flip()goto a
|





3 comments





