Hi guys, I'm a new, but huge fan of Pico-8!
I'm also making a video game for learning how to draw, called Pixel Art Academy:
https://pixelart.academy
It's set in this futuristic looking skyscraper city and I thought it would be absolutely wonderful to have Pico-8 as a (virtual) console in my (virtual) world.
In the game you play as an art student, so for example, a game development student would come up to you and ask you to draw a spaceship for their game. You would then draw the spaceship and the other student would come back and show you the spaceship in the game. But even better, you can also test and play the game, since this would be an actual Pico-8 cartridge!
So in the background of course the game would need to be pre-made with just the art assets missing. I haven't dug too deep into cartridge memory setup, but I believe it should be easy enough to import graphics into the cartridge from code. Then I can use the html embed to show the game in-game (oh god, game inception).
Also, does anyone have any suggestions of available cartridges that would be a good start for beginners to start customizing the sprites? I only played with Jelpi so far, but I'm looking more for something like space invaders, where there're not so many sprites/tiles and someone can draw it out from start to finish. And it would need to be CC-BY-SA so derivatives are allowed.
I might quickly code some new mini-games to test the concept out, but I'm short on time, so if there's any available ones already for proof-of-concept, it could help speed things up. Or if anyone here would like to make in-game pico-8 games specifically for Pixel Art Academy, let me know.
I leave you with some mockups for the game (the main game, not the in-game game XD):
Ha! That seems like a really neat idea, I look forward to seeing where you go with it.
Importing graphics shouldn't be too bad; the sprite sheet is a specific and well-behaved chunk of contiguous memory, and there a few different folks have written one or another tool that reads from and/or writes to the sprite sheet, so you may be able to find some reference material there even.
I'm getting close with this, but I'm trying to figure out if there's a way to change sprite memory in real-time using the javascript Module interface.
Does anyone know where the runtime memory is stored in the JS Module?
I haven't tried writing directly into the the heap that emscripten generates called HEAPU8 (that contain's PICO-8's entire memory), but I guess it would be possible. You'd have to figure out where in HEAPU8 that data is -- perhaps by setting a magic value in the sprite data and searching for it.
Another method, if you can wait for 0.1.7 next week, would be to use the new GPIO (data transfer) pins that will also have a web implementation. Each frame, you can read and/or write up to 128 bytes of data, so around 120 8x8 sprites per second. Would that be fast enough?
Thanks for the swift reply!
1) Great idea! I'll write some sweet magic right now to figure it out!!!
2) I actually want to show this on Monday. I'm doing it at school (for my Master's) and I need it for a class demo haha. XD So I'll try 1) first, but with 0.1.7 definitely take advantage of official support. I'll only need to call it every time the user changes a pixel in the external editor, so it sounds like it will be plenty.
Some very WIP placeholder UI:
But the buttons work … which kind of means you'll be able to use a real touch screen to play on mobile? Has anyone done a mobile player/embed yet?
I didn't have time to come up with a more original design, but here's the working Pico-8 integration into Pixel Art Academy. (Menu is obviously placeholder WIP. Also the GIF recording somehow produced weird blurry pixels. It's pixel perfect in reality.)
In the storyline, you'll work in a student game dev club and do art for the team. Here's a prototype of the drawing app.
After you've drawn your art, when you go back to Pico-8, the sprites are magically updated!
Of course this is just the very first step in this storyline. Later on you would get to work on bigger games, work with an art director, maybe even vote in game design decisions. The idea is to have a context for learning pixel art and the game presents you with both challenges and also resources from which to learn.
I would love to hear your thoughts. Maybe we could even get some kind of official collaboration going? I would love for Lexaloffle to be kind of Nintendo/Sony of Retropolis (the city Pixel Art Academy is set in) and Pico-8 would be the DS/PSP equivalent with Voxatron as the more powerful Wii/Playstation. I would love to have in-game commercials around the city for the two machines and make Lexallofle HQ or virtual Pico Pico Cafe one of the locations in the city with Zep as an NPC (or PC if/when you log into the game!). In any case, I love Pico-8 and will do whatever I can to promote it.
Hey Retro,
Only just found this post of yours - looks awesome! :D
As a pending "freshman" of Pixel Art Academy, I'm certainly all for PICO-8 being represented
- but then, I'm not Zep! ;o)
All the best with the site/game!
That would be awesome to have Pico8 in Pixel Art Academy (or at least the color palette and restrictions). I'm looking forward to it even more now!
It's not mine, but the game 'Pico Monsters' (A Pokemon Clone) might be a good one to change the sprites for as you'd be able to change what the different monsters look like quite easily.
Wow! What a nice idea. And I simply love the art style in presented pictures. Good luck with your project!
2018 UPDATE!
Hello everyone! It's been a while since I made that prototype in 2016. I've been working on Pixel Art Academy full time since then and after many other parts of the game got done, I'm finally in position to bring this prototype into the game itself.
I wanted to have the PICO-8 screen bigger, so I changed the device to a horizontal orientation. Here are a couple mockups of the new form factor:
And the snake game in action:
I also recently started a YouTube series to explain more about Pixel Art Academy. Next episode will be about PICO-8 integration. I will post it here when it's out.
[Please log in to post a comment]