STORY
![]() |
[16x16] |
Diablo has met his end billions of times in the real world, and frankly, he's grown tired of it. Fed up with the endless cycle, he's decided to send a lesser demon on a mission of revenge. This demon, fueled by rage and determination, must embark on a daring journey to the heavens themselves, seeking vengeance against those who have continually brought down its master. As the demon ventures through treacherous realms, it must confront both celestial beings and the twisted forces of heaven, proving that even the smallest servant of Diablo can ignite chaos beyond imagination.
A small bullet hell game made for Bullet Hell Jam 6 ( https://itch.io/jam/bullet-jam-6 ).
You just try and survive as long as possible as more and more bullets try to get you. You do have a bomb and get another one every 30 seconds (if you make it that far...). There are local high scores so you can try and improve over time.
It's inspired by this old game called TKKN / Crazygame that I used to play way too much like 20 years ago - the only record I can find of it is https://www.youtube.com/watch?v=T1NarRBrpmY . I've added different type of bullets and bombing, and it's a lot more cramped due to the PICO-8 resolution, so it has a bit of a different vibe.
My first Pico-8 game made in the small hours of the evening during the last week or so, so the code is pretty horrible. Major thanks to Krystman and the Lazy Devs PICO-8 shmup tutorial series!






Controls
Use the arrow keys to move "Nectra".
"X" => fire
"C" => special fire
the story
"Fly fast. Fight back. Save the Soul of the Forest"
In a world where ancient forests are ravaged by corrupted men, only one guardian remains: "You," aboard the ship "The Nectra."
Armed with pure energy nectar, Nectra unleashes a deluge of light against swarms of mechanical enemies.
Rules
Dodge chains, heavy shots and special shots in a "horizontal Shoot 'Em up", where nature and technology collide.
-- karakterin konumu x = 64 y = 64 -- kalbin konumu hx = flr(rnd(120)) hy = flr(rnd(120)) -- skor score = 0 function _update() -- karakter hareketi if btn(0) then x -= 1 end -- sol if btn(1) then x += 1 end -- saÄŸ if btn(2) then y -= 1 end -- yukarı if btn(3) then y += 1 end -- aÅŸağı -- kalple çarpışma kontrolü if abs(x - hx) < 8 and abs(y - hy) < 8 then score += 1 hx = flr(rnd(120)) hy = flr(rnd(120)) end end function _draw() cls() -- karakter sprite 1 spr(1, x, y) -- kalp sprite 0 spr(0, hx, hy) -- skor yazısı print("kalpler: "..score, 2, 2, 7) -- sevgi mesajı if score >= 20 then print("seni seviyorum <3", 30, 60, 8) end end |
Hello everybody! This is an early beta version of the adventure game "Become a King".
![]() |
[16x16] |
How to play:
arrows - move the cursor
Z - make a move
X - open menu
Updates:
0.1 - added pieces
0.2 - added map
0.3 - added text windows and dialogs
0.4 - added enemies(work in progress)
Write suggestions for the game in the comments, I will be glad to receive any comment.


PicoMayor
"Be the mayor of a tiny city and carefully plan your way to glory!"


PicoMayor is a city builder game where you have to balance seven Resources (Wealth, Labour, Professionalism, Science, Art and Culture, Logistics, and Happiness) while trying to grow your city. Each building can either consume or produce one or more resources, in addition to either requiring a yearly upkeep or generating a yearly income. Many buildings also interact with each other in ways that may or may not be beneficial, so planning is crucial for your success.







Hello everybody,
I'm trying to implement collision and knock-back(?) for the particles in my game. I've got it sort of working, but--as you can see from the gif above--some particles behave oddly. Some drip down the tiles, others get caught in mid-air.
I was hoping some kind soul could take a look at my code and tell me if there is a better way of going about this. I'm guessing my issue is a result of how I'm checking for collisions. Thanks!
parts = {} function make_px() for i=1,10 do p={} if not p1.left then p.x=p1.x+7 else p.x=p1.x end p.y=p1.y+7 p.c=4 if not p1.left then p.dx=1+rnd(2) else p.dx=-1-rnd(2) end p.dy=rnd(1)-rnd(.5) p.age=rnd(2) add(parts,p) end end function update_px() local g = .05 --check pixels left, right, above, and below. If there is a collision, add knock-back [ [size=16][color=#ffaabb] [ Continue Reading.. ] [/color][/size] ](/bbs/?pid=166778#p) |


Hello everybody! This is an early beta version of the adventure game "Become a King".
![]() |
[16x16] |
How to play:
arrows - move the cursor
Z - make a move
X - open menu
Updates:
0.1 - added pieces
0.2 - added map
0.3 - added text windows and dialogs
Write suggestions for the game in the comments, I will be glad to receive any comment.

About
I created a racing game.
Original inspiration:
https://www.mameson.com/beforeweb/gekiso_racing.html
https://www.youtube.com/watch?v=CPjtxpXzSeo
Race Mode

You can choose from practice, easy, normal, and hard.
For hard mode, I haven't been able to clear any course other than the first one (EIGHT), but theoretically, it should be possible.
If there's a course that feels absolutely impossible, please let me know.
Controls
Left/Right - Steer
X - Accelerate
Edit Mode

You can create your own courses.
Controls
Left/Right/Up/Down - Move the cursor
Finished my first PICO-8 game! A farming game heavily inspired by SpaceCat's farming game tutorial, but with my own twists, gameplay mechanics and visuals!
Update 1.1 fixes the overflowing highscore, as well as slightly changing how the score is calculated and adjusting the prices for tomatoes and tomato seeds.





Officially, you can't use multiple data storage one one program.
This feels mostly true, but very similar in spirit to statements like "pico-8 has 16 colors".
"cartdata() can only be called once per program", is already less restrictive :
You could have a game that uses 3 save slots, each with a different cartdata ID because each save requires most or all of the 256 bytes of a cartdata storage, and let the player choose his slot at start of the program. You'd only ever call cartdata once per game session, but would have three storage slots used in one program.
This would still not be great because you can't display any info about the slots before loading them so the player would have to blindly load a slot, see if it's the save he intended to use, and reset the game if he made a mistake.
Could we do that programmatically ? Turns out that yes, we can :
extcmd("reset")
Does reset the cart. Problem is, how do we remember what the previously viewed storage was, or what we were doing before triggering the reset ?
They say your first game should either be a Pong/Breakout clone, or a Space Shooter...why not both?
Here is GalaPong! A simple high-score space shooter with a twist. You have to keep the ball in play while fending off against these invaders.
There are three different difficulties to try.
Easy for a breezy playthrough
Medium for a balanced challenge
Hard for a real challenge
O fires a shot, and X increases the paddle speed.
Be careful, you can only have 2 shots out at once!
See how far you can build your score!
1 Point: The ball bouncing off the walls
10 Points: Shooting an enemy
20 Points: Bouncing the ball off your paddle
30 Points: Hitting an enemy with the ball!
Enjoy!

