Would it be possible to port Pico 8 to iOS, PS4, Vita, and/or Switch? I tried using the browser version on iOS but touch controls are unusable. When pressing the dpad a few times, the background webpage is scrolled or selected (marked in blue), the display is not fullscreen, and I have no sound.
Is there any consensus on Pico 8 controls? It seems some games require keyboard presses that are not available on a game controller. Is this supposed to be a virtual computer or game console? If it was a console it should not require keyboard input.
If you tap the fullscreen button and enter fullscreen mode it should solve that scrolling/selecting issue. It works great on Chrome for Android (on a Pixel and Pixel 2 at least)
zep has said there will be a PICO-8 for Android and iOS, though I can't recall if it's been announced whether or not it's the full editor or just an export target for the .BIN exporter, or both, or only one...? Until then, though, someone posted a link a little while ago which wraps the web export and makes "native" versions for tons of platforms: https://github.com/torch2424/picoDeploy
As for the controls, you've hit on my pet annoyance with the PICO-8 ecosystem, even though I love PICO-8 :). (sorry, rant incoming) Yes, PICO-8 purports to have only the "D-pad + 2 buttons" on its fantasy controller, but there is a "devkit" mode which has a full keyboard and mouse (oh yeah, there's also web exports where you can do all sorts of non-standard stuff, but that stuff is not on the BBS and thus not in SPLORE). Unfortunately, many cart creators fail to clearly delineate the difference and assume everyone who plays their cart is using a full keyboard, ignoring controller or mobile web users. Even more common is the failure to realize that the four separate arrow buttons on a keyboard are different UX than a D-pad, and many things that are possible on keyboard arrows keys are impossible or infeasible on a D-pad. And then there's the confusion added by onscreen prompts often calling for "Z" or "X" or "V" or "C" instead of the standard O and X glyphs (which are not visible on the mobile web buttons so you have to have that knowledge already). It's all very confusing for people who aren't already intimately familiar with the platform, unless you're using a (US QWERTY) keyboard.
You could say it's the fault of the platform/documentation for not being explicit enough about what the target UX is, or of the API for even allowing keyboard/mouse input at all (fortunately it does display a message onscreen when entering devkit input mode), or for treating the directional input as four separate keys instead of a "hat" input, thus implicitly (though unintentionally, I assume) biasing things toward keyboard.
So there's some ways in which PICO-8 isn't 100% clear in defining itself, but the info (i.e. that the primary input of this fantasy console is a gamepad, not a keyboard) is pretty clear if you actually do your homework and read the manual, so at the end of the day it is cart developers who are responsible for making their stuff playable on every platform/input device in which PICO-8 is supposed to be accessible. If this were a real console, there would be a certification process that ensured consistent UX. When you don't have that, you have to trust developers who oftentimes either aren't aware or don't care about that stuff. I make all my carts playable with a gamepad, and test them that way, but it's become apparent to me that not everyone cares or even thinks about that :p
Anyway, welcome (though I see you've posted before), and I look forward to seeing what you create :) (I find that it's much more enjoyable to focus on creating cool carts instead of focusing on shortcomings of the platform or ecosystem, which is why I don't normally talk about that stuff above and I'm not sure why I did just now...oh well :p)
Thanks for the awesome, detailed answer. I never checked Pico-8 dependencies but if it uses SDL then a Vita port should be very easy to do. I have done some other Vita ports and the open source VitaSDK is very easy to use. I could give it a try to port it to the Vita.
Ooooh I actually have a PICO-8 game on the App Store, and for mine I avoided the whole issue around controls by keeping it to one button. Guess it's a matter of taste but I really don't enjoy using things like onscreen d-pads on mobile devices.
const up = () => pico8_buttons = 0; const down = () => pico8_buttons = 32; document.body.addEventListener("touchstart", down); document.body.addEventListener("touchend", up);
I think it's challenging but not impossible to make a full PICO-8 controller UX for mobile. Maybe with like a virtual joystick in the left half of the screen and with Z and X's hitboxes taking up a whole quarter each of the right hand side of the screen, it could even be pretty great. Would love to see that actually!
Well if there's no source, there will never be a port to the Vita. I can hardly believe it, how disappointing. This means all versions of Pico-8 are distributed in binary form only? What about that PocketCHIP handheld? I was always under the impression that the developers recompiled an optimized version of Pico-8 for their handheld.
That reimplementation of Pico-8 in Löve is quite incomplete so of not much interest. Even if it was complete, it would be useless for the Vita, since Vita will never have a port of Löve. There are too many missing dependencies, there's no OpenGL 2.1, no OpenAL, no PhysicsFS, etc.
Oh, and that fullscreen button on the browser version of Pico-8 might work on Android, but it does absolutely nothing on iOS. I tried both Safari and Chrome on iOS. Both have the issue that parts of the screen become selected if I press the touch dpad and buttons, and then a "copy/paste" dialog appears in the middle of gameplay.
Writing a compatible wrapper around the standard lua lib wouldn't really be very hard. As long as you're not relying on cycle counts and exact timing, and if you don't use PICO-8's Lua syntax hacks, you could probably write a PICO-8 emulator in a few days on just about any platform, assuming you're already competent on that platform.
(Visuals, anyway. Audio might take me a while. I dunno, I mostly did rendering in my career. Audio is similar in some respects, being 1D graphics in a way, but a different animal just the same.)
PICO-8 isn't a feat of engineering, really, but a feat of design. Replicating the design wouldn't be nearly as hard as coming up with it, as is often the case.
Afterthought: Perhaps that's an unfair thing to say. Most of my career was basically making games work on multiple consoles. So it kinda comes naturally to me at this point. It's probably unreasonable to say it wouldn't really be very hard. For the average dev, it might be.
You mean re-writing Pico-8 from scratch, just because the existing project is not open source? No thanks. Also, the more games I try in Pico-8, the more I dislike the extremely limited resolution. I wish the resolution was twice as high, and 4:3 aspect ratio. This would match real 8 bit systems a bit better, and allow much nicer looking pixel gfx. It should have at least enough resolution to replicate c64 gfx, maybe even Amiga. Those systems allowed for very cool and detailed pixel gfx even though they had a limited resolution and palette. On the Pico-8 there's not even a single hi-res mode.
eh. I dunno. I've looked at PV8, but Somehow having it more configurable makes it less interesting to me.
There are roughly a zillion ways to make retro games. If there's not a community all targeting the same immutable "system", I think a lot of the charm would go.
I agree, PV8 makes the mistake of trying to be everything to everyone, all in one package. The beauty of PICO-8 is that you're given some very strict rules, and there's no option, no negotiation, those are the rules, and your peers are under the same rules, so you know how to judge yourself and your work. It's just a good idea.
I think PV8 would have been better off making two or three products at different technological tiers, so to speak, rather than having one very-malleable product that can be any of multiple products depending on how you configure it. Like, a person can work on PICO-8, and they can work on Voxatron, but they don't have a Lexalengine that can flip features on and off to be one or the other. It keeps things nicely compartmentalized and prevents you from being in scoping hell.
(I own PV8, by the way. I'm just not so jazzed about it.)
You've clearly mistaken the purpose of pico-8 tho, trying to increase resolution, number of tokens.. would clearly create a useless platform, replaceable by anything else. The success of pico-8 is that you have to adapt your game's logic to the console, not the console to your ideas.. I'm an avid player of pico-8, and when i'm home sometimes i want to play it, because is colorful, with those low resolution games centered on mechanics.
Regarding the ports, i'm pretty sure we are close to the release of the first stable and to the port on other platforms (on twitter zep released a picture of a soft touch keyboard for android/ios)
Log in to post a comment