NOTE: This is a desktop app. The tools that make it interesting and its user interface (mouse/keyboard) make a web version not so useful. I've embedded it here in the spirit of general availability to Pico-8 users via splore.
Versawriter-8
Recently I released Mystery House (Remodeled), a ground-up rebuild of the first graphic adventure game. As part of the creation process, I wanted to redo the graphics using a workflow similar to the one that Roberta Williams did back in the day. Versawriter-8 was built so I could build Mystery House.
Everything in Mystery House (Remodeled) was drawn in Pico-8 using this tool. There are 45 unique "full screen" images, plus a couple of dozen objects, stored in about 10K using this tool and compression method.
I don't know if this exists, but I think it would be cool to have a thread of Stuff You Might Not Have Figured Out From Just Messing Around Making Things.
Here's two to start with, from a musician perspective:
-
If you can, leave SFX 00 through 07 empty. It will help with adding music later - be that you adding music or because those slots can be used for custom SFX instruments that give a lot of character and flavor to compositions.
- Decide how many channels to reserve for music. The 4 SFX channels of PICO-8 have to be used by both music and sound effects, and both music and sound effects benefit from having more channels - so think about which is more important to you, and which sound effects can interrupt each other. You can also, if some sound effects are only played sparsely (maybe you have a clicky sound while navigating menus!), try having one channel of music that is interrupted briefly by the sparse effect and then resumes.
How do you do fellow kids! I gladly joined the club by getting myself Pico-8. And I really wish to learn it but I don't know how. I want to get to a point where I can handle all mostly by myself, only relying on help when it's something really specific. How can I get there? I feel committing sin doing the tutorials by typing the code for a game and I sadly don't understand programming code. I know Lua is an easy programming language, but it still feels hard to read. I really love retro games and want to contribute artistically or make some of them. I chose Pico-8 because I didn't want to use game engines with visual scripting and because of its retro charm.
I am Gavin Watkins and I have made my first ever video game! This is it!
Story: A man in a blue spacesuit is selected to go on a sudden mission by the government, but has crash landed on a strange alien planet on his way to his objective. Help him to collect enough energy orbs to fuel his spaceship and escape the planet! Listen to his story and wisdom as it unfolds on the bottom chunk of the screen.
Instructions: Use the directional arrow keys to move the blue spaceman.
Use one of the buttons to show the aiming cursor. (C key on keyboards) This will help you aim and it will also speed up the reloading of your ammo (top left corner).
Use the other button to fire a laser blast! (V key on keyboards) This will decrease your ammo by 1, and if you hit the yellow enemy, it will kill it, causing him to re-spawn elsewhere.
This is a simple Breakout game with elements of Pinball. The ball falls according to gravity. When all the blocks are eliminated, a hole opens in the pop bumper. Clear the stage by getting the ball into the hole. Pressing the buttons on the bottom left and right of the screen with the paddle will trigger a guard that can bounce the ball back once. Enjoy!
NIM⁶⁴
This is a creation of the game Nim for pico8. Nim is a 2 player, mathematical game of strategy (well sort of). It includes the following features:
- Two forms of Nim are available - Simple or Single Stack Nim and Normal Nim with multiple stacks
- Beautiful chill music by @Gruber
- A campaign of sorts to work through
- Working AI and many different stack variations
- Single games. All games should be winnable.
- Low res mode because 128 is too much! 8)
CONTROLS
Should be easy to follow - Turn based game so no rush.
I'm not sure if this is a bug or a deliberate limitation, but it seems that coresume
call silently drops everything but the first argument, passed to the yield
or return
in the coroutine. When you
cor=cocreate(function() yield(1,2,3) return 4,5,6 end) s1,a,b,c=coresume(cor) s2,x,y,z=coresume(cor) |
, all of b,c,y,z
will be nil. In standard lua passing multiple values out of coroutine is widely used quirk, so it would be nice to have it on PICO-8 too.
Hi people,
I have PICO-8 around about several years now, but never published any game on it.
This year I have a concept of minimalistic choice-based adventure. and I wonder if Pico-8 requisites are capable of moving what I have in mind.
What I wonder is how many full-screen, full-color illustrations are capable Pico-8 of storing, before consuming the whole memory, or starting using any multi-cartridge solution.
Also, each illustration will have a minimal 2 frame animation on them. That could be done with sprites, but yeah, the concept is how many locations like this can I store.
Thanks!
I found some confusing behavior when trying to put multiple if/while shorthands on the same line, e.g.:
if (x1) if(x2) print('true') print('anyway') |
This prints 'anyway' only if x1 is true - whereas I would've expected it to print 'anyway', well - anyway.
It looks like line breaks only terminate a single if/while shorthand, causing the next line to be inside the other shorthand.
It used to be that this code was generating a runtime error, but now it just silently does something really unexpected instead.
Summary
Project Echidna is a short skill based RPG(?) where you explore an abandoned laboratory to recover an old prototype. In this game multiple enemies can fight you at once, so plan your battles accordingly! Lure enemies into corners and fight them one on one, or avoid them altogether. If you are very skilled, you can fight them off all at the same time! There is no Leveling system, there is no output randomness, it is just your ability to fight with the tools you have.
Overworld Enemies
Enemies can see you if they have line-of-sight or you get too close. If they touch you they will engage in a battle! Multiple enemies can engage at a time, so be careful!
Battle!
Hello Community!
I wonder if any of you can enlighten me as to the under the hood differences of loops that I am encountering.
does anyone know why this works:
function iterate(tbl,fnc) for o in all(tbl) do if fnc=='u' then o:update() elseif fnc=='d' then o:draw() elseif fnc=='h' then hit_test(player,o) end end end |
while this only works for update and draw but not for testing the collision?
function iterate(tbl,fnc) for i=1,#tbl do local o=tbl[i] if fnc=='u' then o:update() elseif fnc=='d' then o:draw() elseif fnc=='h' then hit_test(player,o) end end end |
In order for update and draw to work, the program must know that o=tbl[i] is an object with methods. So why does hit_test act like o is nil?
Any insight is greatly appreciated.
In this mod of Metrocubevania by flytrap studios, you play as Daisy! (My cat)
The evil Roborat has disturbed the peace of cat society, and Daisy is bored, so she's going to set out on a fun adventure to defeat him!
The Roborat has set up tin foil balls, grapes, water, and other traps, so it won't be easy!
Luckily Daisy's kitty friends support her mission, so they set up a few things to help her along the way! Scratching posts, litterboxes, and more were set up to hopefully make things easier!
There is also cat food scattered around the map as an optional challenge!
Good luck Daisy!
MOTION●REC
It is an action puzzle game with the concept of "recording and replaying movements."
Playtime: 5-10 minutes.
STEAM → https://store.steampowered.com/app/2602230/MOTIONREC/?beta=0
control
Press ↑+ ◯ (Z) to start motion recording. Moving during the recording will store the coordinates.
Press ◯ (Z) to play back the recorded motion.
Press ↓+ ◯ (Z) to play back the motion in reverse.
Features
Motion recording
Motion playback
this allows you to make an image in pico-8, it also allows you to use the tools in the sprite editor to make a new image, just make sure to save!
--image details w=16 h=16 palette={0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15} --init image for i=0,15 do pal(i,palette[i+1],1) end cls() spr(0,0,0,w,h) --disable console controll (untill esc is pressed) function _update() flip() end |