Hi everyone, I'm ReplayCoding.
The PICO-8 community has helped me a LOT learning PICO-8, so I thought I would give something back. So, I wrote the PICO-8 advanced manual! It contains my findings about PICO-8 internals and stuff like that... I hope you enjoy it!
Link: https://www.lexaloffle.com/bbs/files/28213/PICO-8_ADVANCED.zip
zep, please let txt files get uploaded :(





Better late than never, here is a short Halloween game I had made with Wayne Kubiak (@WanyoDos on twitter) the artist.
"Hazel May heard that there was going to be a monster party on Halloween, but she didn't know that it would literally have monsters!
Help Hazel may get the monsters ready for the party.
Use arrows to move, Z to select/pick up.
Tell the mad scientist you are ready to party when you've done all that you can."
v1.2 Edit: Fixed a bug that would crash the game if you tried to use arrow keys during a monster's response.





To all of you users maintaining public Github repositories of either your games or supporting libraries for other PICO-8 users, I've just put up a repository containing PICO-8 badges.
This way you can add a Made With PICO-8 badge to your readme, alongside any other repo related badges you generally use!
Show your support for the tool and enjoy!

This works:
s = [[ ... [ ... ]] x = 0 x += 1 |
But this no longer works:
s = [[ ... [[ ... ]] x = 0 x += 1 |
** syntax error line 3(tab 0) ** x += 1 ** syntax error near '+' |
It seems that in the search/replace phase of PICO-8 parsing, when "x += 1" gets replaced with "x = x + (1)", something erroneously considers that the second "[[" was opening a nested string, and does not perform any replacements until it finds a (nonexisting) matching "]]".



An Asteroids homage with a left twist.
What a situation! You're stuck in an asteroid field, but your ship will only turn to the left! Power down on the throttle, mash your lasers, and put your reflexes to the test!
Collect all 15 ships! Every ship has its own stats: speed, spin, acceleration, drag, and laser attributes. Remember, you need to use your newest ship if you want to unlock the next one!
Controls:
Z: Throttle
X: Laser
Left / Right: Select ship on title screen when unlocked
Up / Down: Toggle palette
Alternate Controls:
ESDFWA




This is a silly thing I made just because L-Systems are cute~
L-Systems were developed by a guy named Aristid Lindenmayer, and consist of a initial string, a set of rules for transforming this string into another one, and a mechanism to translate the string into geometric structures. They are well-suited for generating cool fractals like these ones, and also for modeling plant growth! (in which I didn't delve much into in this demo, since the mechanisms for generating only fractals are slightly simpler) I'll leave the wikipedia article on them here if you want to see more cool stuff: https://en.wikipedia.org/wiki/L-system
Also, sorry for the ugly pixel art title and the silly song, these are definitely not my areas of work, haha...
Update: Added animation! I got lazy to do it yesterday because it was late, but in the end I managed to do it in like 3 minutes... (*・ω・)

Hi everyone, I seem to have coded myself into a bit of a hole and I'm hoping someone has a suggestion on how to get out of it!
What I need to be able to do is - iterate through all the subtables in a table, and delete any subtables that have identical values. Below is the setup and the two methods my researching has found, but I've tried both so far with no success:
x = {} add(x,{a=1}) add(x,{a=1}) --table x now has two subtables --that both contain a=1, and we --need to delete the duplicate! |
Method one:
index={} for t in all(x) do if index[t] then del(x,t) end index[t]=true end |
No luck with this one, it DOES work if the duplicate values live in the main table and outside of the subtable, but I'm having trouble formatting it correctly to check the subtables.
Method two:
for i=1,#x do if x[i].a == x[i+1].a then del(x,i) end end |

Hi folks,
I'm trying to get to grips with collision detection and have sussed it for simple single objects against each other, but now I'm trying to detect one object against many using tables.
I'm not sure why my code below isn't working. I think it's the final FOR-LOOP which goes through the position checking of the player and each of the blocks. The penultimate line that has RETURN TRUE is never reached (I've tried putting STOP() in there and it never executes) so is there something wrong with the IF statements above it that return false?
Note: If I place the RETURN TRUE within the loop directly above it (immediately following the position checks), collision with the first block works fine, just no others!
In my head, this should work - it just doesn't!
What am i doing wrong please?
function _init() initblocks() initplayer() end function _update() -- if btn(4) then updateblocks() end moveplayer() if colcheck() then pl.col=11 else pl.col=7 end end function _draw() cls() drawblocks() drawplayer() end -- user functions -- function initblocks() block={} for n=20,80,30 do for f=20,110,30 do add(block,{x=f,y=n,w=10,h=10,col=7}) end end end function updateblocks() for f in all(block) do f.col = flr(rnd(15)+1) end end function drawblocks() for f in all(block) do rectfill(f.x,f.y,f.x+f.w,f.y+f.h,f.col) end end function initplayer() pl={} pl.x=10 pl.y=110 pl.w=10 pl.h=10 pl.col=7 end function drawplayer() rect(pl.x,pl.y,pl.x+pl.w,pl.y+pl.h,pl.col) end function moveplayer() if btn(0) then pl.x-=1 end if btn(1) then pl.x+=1 end if btn(2) then pl.y-=1 end if btn(3) then pl.y+=1 end end function colcheck() for f in all(block) do if pl.x>f.x+f.w then return false end if pl.x+pl.w<f.x then return false end if pl.y>f.y+f.h then return false end if pl.y+pl.h<f.y then return false end end return true end |


I am proud to release PlusWave, a game I have been working on for a few months. The game is a multiple choice puzzle with randomly generated waves. It teaches the concept of wave interference. You can go to the game's "main" page on itch.io, where you can download an extensive document of the development process that may be of interest to fans of the game or game developers. A big part of the game is the story, which is conveyed through Pico-8 in a bit of an eye-strainy way. Nevertheless, the story and game mechanics combine and work toward the same themes. The unabridged story can be read in the aforementioned document.

Hello all, I have a problem with installing Pico8.
I've already worked with Pico8 in the past, and it has worked just fine, but recently, I can't open it. When I try to open it, it says that "this shortcut has been changed or moved, so this shortcut will no longer work." I redownloaded Pico8 with the file directory open, and to my surprise, the application startup file immediately deleted itself after downloading. I have done this a few times so far, but with no luck. Does anyone know how to troubleshoot this issue?
