

This is a small game I made for a university game jam!
The theme I was given was "Circus Hero" with an optional modifier of "Retro Game".
I've been wanting to make a Pico8 game for a while and saw this as the perfect opportunity to get started.
Circus Hero features a series of microgames that are randomly selected, try and get a high score!
Locus is a Two-dimensional, unbounded, sparse, efficient, grid spatial hash for Pico-8.


The library uses a grid of squared cells and keeps track of which objects "touch" each cell.
This is useful in several scenarios:
- It can tell "Which objects are in a given rectangular section" quite efficiently
- This is useful for collision detection; instead of checking n-to-n interactions, locus can be used to restrict the amount of objects to be checked, sometimes dramatically reducing the number of checks.
- Given that the query area is rectangular, locus can be used to optimize the draw stage, by "only rendering objects that intersect with the screen"

Press Z or X to enable the mouse cursor when running on desktop. Use arrow keys to adjust the loop timing manually if necessary (it shouldn't be necessary, the initial test at launch should set an accurate time regardless of your platform).
Picunki is a little musical toy based off the 'Sprunki' series of apps (which themselves are based off the 'Incredibox' web-games). Drag icons onto the characters to play different layers of a musical loop. Click or tap on characters to reset them.
This is a present for the 5th birthday of my son, Hershel. It's been wonderful to discover new things while chasing his interests! If you have musically-curious young kids, my highest ambition is that they might have a few seconds of fun with this :)


BATTLE TANKS 8X - the first of more to come "fake" Intellivision games:
(2 players only)
[/https://youtu.be/ImpsTjbJWAs?si=X-YAt42R5YHE8TKi]
Take command of a fast battle tank and stalk your enemy in deadly one-on-one combat.
Use the walls for cover, as you move fast into firing position. But LOOK OUT!
During the battle shells can ricochet...suddenly - and you're both targets!
STRATEGY
Keep moving... take shelter behind walls(trees won't protect you)... figure the angles and distance.
Watch out fr bouncing shells so you don't get hit yourself.
HOW TO PLAY
Choose on of these options with the left and right buttons and press X:
1 Long-range bouncing shells



This is a particle system implemented using coroutines. The demo comes with a commented implementation of the system plus two example particle effects. The particle system itself takes 55 tokens, the two example particles take 63 tokens each.
In this system a particle is defined as a function, and its states are stored in local variables inside the function. Creating a particles means creating a coroutine using the particle's function and saving the coroutine to a table. The coroutine is resumed during every _draw callback where it draws the particle on the screen and updates its state, and yields once it is done for the frame. The particle is considered "dead" and removed from the memory once the function in the coroutine finishes running.
-- karakter konumu
px = 64
py = 100
-- kalpler listesi
hearts = {}
score = 0
game_over = false
function spawn_heart()
local heart = {
x = flr(rnd(120)) + 4,
y = -8
}
add(hearts, heart)
end
function _update()
if game_over then return end
if btn(0) then px -= 2 end
if btn(1) then px += 2 end
px = mid(0, px, 120)
if time() % 1 < 0.02 then
spawn_heart()
end
for i=#hearts,1,-1 do
local h = hearts[i]
h.y += 1
if abs(px - h.x) < 8 and abs(py - h.y) < 8 then
del(hearts, h)
score += 1
if score == 28 then
game_over = true
end
elseif h.y > 128 then
del(hearts, h)
end
end
end
function _draw()
cls()
rectfill(px, py, px+7, py+7, 8)
for h in all(hearts) do
spr(1, h.x, h.y)
end
print("kalpler: "..score, 2, 2, 7)
if game_over then
rectfill(10, 50, 118, 78, 0)


First Cart! ...the basics of collision, animation and game flow in 200 lines. Maybe it will help you get started.
-JS


Just a bunch of minigames I made for my cornmunity!
This project is more of a study to test a few ideas:
- GUI/Mouse controls (sorry, it's not fully functional with a controller yet...)
- Swapping the spritebank using different GFX files to create multiple visual themes
- Swapping the _update and _draw functions on include to create different screens with different behaviors
Still, hope you guys enjoy it!


Is there a wise, benevolent soul out there willing to explain to my feeble mind why this alpha effect doesn't seem to work with a scrolling camera? I can't seem to anchor the light circle to the center of my player character.
function _init() px,py=64,64 end function _draw() cls() map() camera(cx,cy) draw_light() --draw alpha effect print("🐱",px,py) --player end function _update() if (btn(0)) px-=1 if (btn(1)) px+=1 if (btn(2)) py-=1 if (btn(3)) py+=1 cx=px-64 --cam cy=py-64 end |
Here is the draw function for the alpha effect:
function draw_light() poke(0x5f54,0x60) pal({2}) --draw a circle for i=-24,24 do x=sqrt(24*24-i*i) sspr(px-x,py+i, x*2,1, (px-x)+cx,(py+cy)+i) end poke(0x5f54,0x00) pal() end |



Hi @zep, I still feel like a noob at Japanese so maybe I'm missing something but shouldn't
"lya", "lyu", "lyo" produce ャ,ュ,ョ in the Katakana mode?
In hiragana and Katakana input modes they both make ゃ,ゅ,ょ.
Thanks in advance.
