Based on a request for help in the Pico-8 Discord, I ended up working on a rope/string/ribbon/chain/etc. simulation:
The behavior of the rope changes substantially depending on the gravity and drag settings.
This sim tries to model the object as inelastically as possible, although it's far from perfect in that regard. The rope here has 128 segments, which is very difficult to handle without (a) instability, (b) excess springiness in the rope, or (c) tons of damping. So i ended up having to write a slightly clever constraint solver (multigrid for n log n instead of n^2 performance), and I chose a step schedule that uses almost 100% CPU at 60fps. But if you use fewer segments and tune the solver differently, going down to 16 segments or so and using a less conservative step schedule, like one suggested in the cart comments, you can get the CPU usage closer to 5% at 60fps. That might be more suitable for inclusion in a game.
The moon hangs low from above to illuminate the night and cast shadow to the lands... It's Halloween again, and time for you to visit your neighbors.
This is a version of Breakout adapted from the incredible tutorial from Lazy Devs: Pico-8 Tutorial - Breakout
Trick or Meat
Send your energy to the houses in the neighborhood to earn points and collect candy. Be sure to visit everyone to advance to the next neighborhood.
Mansion Bros
A fan game of a certain green fellow's exploits in trying to clean a mansion that is full of ghosts. Suck up ghosts, unlock doors, and find the trophy to conquer the mansion. Up to 8 players!
Disclaimer: I claim no ownership of the characters appearing in this game. This is a work of fanart, and I have no intention to profit from this work.
How to play
Arrows to move, any action button to use your vacuum. Suck up ghosts and find the trophy.
Other players can join in by pressing their action buttons. Game ends if all players run out of health. See if you can find every single diamond!
Tips
This is Letris!
A Tetrislike game.
Letris is my implementation of Tetris using Pico-8.
I tried to do it based on what I remember as a child playing those cheap Chinese Brick Games that had multiple versions of Tetris clones. (Sadly, no Game Boys were easily available in my country when I was young).
I hope you guys have fun with this game as I had when I worked on it.
Controls
Z and X: Rotate the price
Down key: Drop the price fast
Left and Right keys: Left and right movement
The pause menu could be used to toggle the music and to add the up key to rotate the pieces along with Z and X buttons.
Special thanks to:
Mario Puzzle
This is a Mario reskin of 'mapuzzle' from
@egordorichev (https://www.lexaloffle.com/bbs/?pid=67094#p).
Have fun :)
Why?
I bought pico 8 a while ago and have never really messed around with it all that much, finally I decided that I wanted to try something so I made this game :D
Programming challenges
The programming went fairly smoothly, however there were some interesting issues that I had to think of solutions for. The issue that immediately comes to mind is when trying to remove something from a object in a for loop, this seems straight forward but when you try, the for loop then tries to go to a removed value and the program gives you an error. I was able to deal with this by creating another object and storing all of the indexes of the object that had to be removed inside of it, once the first for loop had ran that added the indexes I ran another for loop that looped through the object of indexes and removed them from the original object
I was thinking about what's keeping Pico-8 from being a popular platform for scientific computing and high-end DSP ... and I realized: I can't think of a single FFT library for Pico-8! That must be the reason. So I wrote one:
There are some comments at the top of the cart code on usage, if you want to copy/paste this into a project of your own for some reason. It's not too slow: you can do about 400 length-256 real FFTs per second, which is enough to get up to some audio shenanigans. (See next cart.) You can use the left/right arrow keys to switch modes between DFT, complex FFT, real FFT, and DCT in this demo, but be aware that if you happen to switch to DFT mode - it is sloooooooow and you may have to hold a button down for a while to get out of it. (DCT is also slow but ~3x faster than DFT.)
Info about the game
This is the first game I made with PICO-8. It is inspired by Hyper Olympics, played it with my father in the late 90s on a Chinese console (https://en.wikipedia.org/wiki/Ending-Man_Terminator).
The game is very minimal, the code is quickly put together without any tought. It's purpose was just to try PICO-8 and to test posting it here.
Controls
O and X to generate power
UP to choose the throwing angle
shitposretrt
changelog:
added 1 level. idk if its possible
edit:why isnt the level working
second changelog:
i hope this works
edit:why are there 2 carts now
third changelog:
cry about it
fourth changelog:
nerfed cry about it
also added cool picture
fifth changelog:
added stupid level
sixth changelog:
i forgor💀
Colorful friends is a game loosely inspired by Big Bang Theory. In an episode of Big Bang Theory, Sheldon creates a puzzle where you must seat people at a dinner table. The color of the people dictates who they can sit next to and where they can sit. I made a game similar to that in Pico-8: Colorful Friends.
How do I play?
- Use the Arrows to control the cursor.
X
to scroll through the characters.C
orZ
to submit your answer for verification.
There are 25 levels in the game. In each level you must meet the demands of every person.
Each color of person demands a certain number of neighbours (up, down, left and right) between a minimum and maximum.
I followed a tutorial on collision and cant figure out what's going wrong. its also making another player sprite when I go to the top left of the screen. I'm pretty new to coding and just want to find a not too complicated collision system. any help would be appreciated, thanks.
wall=0 function is_tile(tile_type,x,y) tile=mget(x,y) has_flag=fget(tile,tile_type) return has_flag end function can_move(x,y) return not is_tile(wall,x,y) end |