Hello Everyone,
I'm thinking about the Theme of the next Zine.
I have put a Poll on Twitter , feel free to vote :)
[url=Twitter Poll]description[https://twitter.com/arnaud_debock/status/725952817869950976]
Let me know if you got any feedbacks.

Short version: Whenever you leave the editor and run your thing, it should save it to a temporary file so you only lose to the last run if pico-8 crashes. Ideally, it should detect that it had crashed and offer to load this automatically so you don't overwrite it accidentally.
The story: So, I was doing the Squashy thing in PicoZine 1. Being familiar with programming concepts in general but not pico-8 specifically I was, of course, putting my own spin on parts of it, like the game over handling. Well, I made an amusing mistake that let me rack up points trivially after I died as I forgot to move the ball away from the paddle. This made me laugh, and while I was doing that pico8 crashed (possibly because I was playing a sound literally every frame? No way to know really, since it seems when I launched it again it overwrote the log file). I hadn't saved in quite some time.
No real harm done in this case, but it would be nice if there was a recovery option in the future!

Currently a work in progress. Right now, puzzles are randomly generated, but in the future I'll likely add in pre-made levels.
View on itch.io

Hi. Going through the Smoke Particle section of zine #1 and found an error I couldn't solve. If you copy paste the following code..
function make_smoke(x,y,init_size,col)
local s = {}
s.x=x
s.y=y
s.col=col
s.width = init_size
s.width_final = init_size + rnd(3)+1
s.t=0
s.max_t = 30+rnd(10)
s.dx = (rnd(.8).4)
s.dy = rnd(.05)
s.ddy = .02
add(smoke,s)
return s
end
function _init()
smoke = {}
cursorx = 50
cursory = 50
color = 7
end
function move_smoke(sp)
if (sp.t > sp.max_t) then
del(smoke,sp)
end
if (sp.t > sp.max_t15) then
sp.width +=1
sp.width = min(sp.width,sp.width_final)
end
sp.x = sp.x + sp.dx
sp.y = sp.y + sp.dy
sp.dy= sp.dy+ sp.ddy
sp.t = sp.t + 1
end
function _update ()
foreach(smoke, move_smoke)
if btn(0,0) then cursorx=1 end
if btn(1,0) then cursorx+=1 end
if btn(2,0) then cursory-=1 end
if btn(3,0) then cursory+=1 end
if btn(4,0) then color = flr(rand(16)) end
make_smoke(cursorx,cursory,rnd(4),color)
end
function draw_smoke(s)
circfill(s.x, s.y,s.width, s.col)
end
function _draw()
cls()
foreach(smoke, draw_smoke)
end
|

Another educational toy cart for my son. Not terribly interesting for the grownups here, but it shows the effect of changing the operands of a multiplication operation.
Controls:
Left/Right : Choose which operand to select
Up/Down : Increase/Decrease the selected number
Z/X : Choose a different visualization of the multiplication operation

Picomino is a block stacking puzzle game made from boredom.
Select your mode, level and music and start stacking!
MARATHON
Stack your blocks into lines as long as it's possible. Don't top out or it's game over.
50-LINE
Stack your blocks to make 50 lines as fast as possible. Don't top out or it's game over.
CONTROLS
Left and Right - move block
Up - hard drop
Down - soft drop
Z/Button 1 - rotate
X/Button 2 - start/pause
SUPPORT ON ITCH.IO
https://adrian09-01.itch.io/picomino

Version .3 update: Added attacking while jumping, double-jumping, and fixed the scores and glitches. Let me know if you find bugs!
This is still my "first game", it's a full screen, enhanced version of the Lowrezjam submission I made.
Two players versus only at the moment.
Controls are simple. left and right to move your player, up to stab upward, down to block. Buttons to jump and attack.
There's an AI in the works but it's laughably, three-stooges stupid at the moment. Graphics are still being tweaked (clouds are janky). Also, the scoring isn't displayed because I have to recode it for 4 or more characters, but you can still win by knocking the other person off the ledge 7 times.
Challenge a friend, see what you think. I'll finish the AI, recode the scoring, and maybe speed up the combat a little. Add a double-jump maybe.
Under the hood, feel free to peek. The platform collision is all done by one ground_check function. hit detection is done by the sword leaving 'hit bits' on the map. (this led to funny bugs of there being invisible 'mines' around the map when the bits didn't clear properly).
I'm being guarded and cautious. Whatever. Enjoy.

How to play
There are 10 different pieces.
You must place all of them into the frame without overlapping.
X: pick or release a piece
D-pad+Z: rotate or flip
(Please see the instruction at the bottom of window)
Release notes
0.50 (Apr 30, 2016)
- Play music.
- Tune visual of gallery.
0.30 (Apr 25, 2016)
- Initial Release.
(Older versions)
[hidden]

Hi. I'm trying to learn about collisions using the DOM8VERSE section of zine 3 but I'm getting weird error messages whenever I try and use a foreach.
For example, when I try this:
function _update()
if btnp(5, 0) then
add(objects, bulletconstruct(player1.position.x,player1.position.y))
end
foreach(objects, function(obj)
obj.update(obj)
end
end
.. I get ')' expected ( to close '(' at line 0.0003891 near 'end'
I've tried adding and taking away brackets, as well as 'end' statements but I can't get it to work. Thought it was strange as I'm copy pasting zine 3 code.
Anyone know the solution?

So I've set PICO-8 up to run from RetroPie, and it all works great, except for exiting. When I type SHUTDOWN to exit PICO-8 and return to retropie, PICO-8 just freezes. Does pico8 need to be run from within it's directory, or can it be run from anywhere? (not like move the executable, but be in a different folder when running it)

As seen being indicated on the forum, I used GamepadTool to map a Dualshock 3 on my Mac, as I wanted to use the D-Pad instead of the left stick.
After an extensive search, it seems to be impossible to map all d-pad buttons to the stick, at least by using the current SDL mapping. leftx and lefty only accepts one input, as it is not possible to create a virtual axis.
Even if the SDL2 source code actually says that "Buttons can be used as a controller axis and vice versa", pushing a button only sets a positive value to the axis. This results to be able to turn right and down, but not left and up.
So, I was wondering if it was possible to add
[b]dpleft[/b] as an alternative to [b](negative) leftx[/b] [b]dpright[/b] as an alternative to [b](positive) leftx[/b] [b]dpup[/b] as an alternative to [b](negative) lefty[/b] [b]dpdown[/b] as an alternative to [b](positive) lefty[/b] |
in a future release of Pico-8?

Hello!
Is there a good way to play cartridges in the browser with a gamepad/joystick? Is it even possible to use gamepad input with javascript?
I plan to do a local PICO-8 game jam and I would like show the outcome on a website for a larger audience to play. If this way would offer gamepad support it would be so much better.
I can use a third party software to map gamepad input to individual keyboard keys. But that is a lot of installation and config work and I would rather have the visitors "just play".
Any ideas? Thanks!

To allow more room for maps in my current project, I'm planning to use many of the sprites flipped to achieve more visual variety. While I can easily do this for sprites representing the player or enemies, I'm not sure how to implement it for the maps. I don't believe I can use the map() function, even with the flexibility of its layer flags option. I could of course store a table representing the map, with additional flags to indicate whether or not a cell should be flipped, and draw each individual sprite instead of using map(), but I'm worried this will be too slow and generally cumbersome.
Is there a good way to go about this or am I stuck using no flipped sprites for maps? Or should I instead be looking at ways to compress the map data so I can use more room for sprites?
Good day, and thank you for looking at this tutorial i put up for the convenience of developers who wish to understand
palt() and how it can be utilized.
the command is used to render colors as transparent when sprites or graphical commands are used. This command also avoids any other edits to the palette that are initiated in the code used.

syntax for palt is simple: first parameter chooses color to render transparent or not, second parameter is boolean and decides for the color to be transparent. palt( x , true ) would make the color x not render.
this should be a useful command when using another color as transparency.
I want to show you how sprite packaging [as i call it] can be utilized in pico8, to provide for bigger sprite space for sprites that containt up to 4 colors.
- Sprite Packaging for 2 color sprites -
The most efficient way i get 4 sprites from one is to stick them together and draw them as if they were different sprites.
-- a should be 1 , 2 , 4 , 8 function sssspr( x , y , w , h , dx , dy , a , c ) for i = 0 , 15 do --remove unverified colors if (i/a)%2 < 1 then palt( i , true ) else palt( i , false ) end -- turn verified colors into c pal( i , flr((i/a)%2)*c ) end sspr( x , y , w , h , dx , dy ) palt() pal() end |






47 comments