So, I recently built myself a physical PICO-8 console that hangs on the wall. It switches to a screensaver mode when it's not in use, and switches to splore to play games when someone connects a joystick:
(ignore the flickering, that's just the refresh rate)
I had the idea to periodically display a weather dashboard in between the different screensaver carts it cycles through when it's not being used. So, I went searching the BBS for options, only to find none exist. When I began exploring why, I quickly learned that interacting with APIs is impossible directly, and that I would need to feed PICO-8 the weather data at runtime. For my purposes, that's actually not a problem at all, since I can set up a cron job to refresh the data in a text file, and then just feed the updated file into the cart each time it runs.
The problem really is, I'm not a lua dev. I know this about myself. I'm not good at it, and I'm not patient enough to become good at it. The moment I encounter the need for an array, my brain fuzzes over and I move on. So, I'd love to collaborate! I have the basic building blocks of what I have in mind ready to go. I have example code to work from to get data from text file into the cart. I have the weather data API and sample calls I can make. I also have an example of the dashboard visuals I'm aiming for: https://github.com/lmarzen/esp32-weather-epd
I can make the sprites (from these) and help make UI decisions. But what I can't really do (well) is sling the necessary code to turn the idea into reality.
It shouldn't actually be that complicated of a cart, honestly. The hardest part will be parsing the data fed in from the text file, and then acting on it to render the weather dashboard.
If you've been curious about learning how to pull in data to pico8 via serial/stdin and in the process help fill a gap on the bbs (especially for folks like me who build pico-8 arcade cabinets), let's work together. :)
Another quality of life improvement feature request:
Add a screensaver option to splore.
Let's say I built a PICO-8 arcade cabinet. Splore works well in that context as a frontend cart interface. But, when the machine boots into splore, it just sits static at the menu until a user interacts with it. While the cabinet is not being used, it would be amazing if splore could wait for some amount of time for user input and then display a screensaver until input is detected, at which point it just goes back to normal splore.
If I could, say, define a list of screensaver carts in a csv file, and then use something like a -screensaver commandline argument to define the filepath, then nothing custom would even need to be created. Splore would just need to randomly select one of the carts in the defined csv file, run it for some period of time (say 5 minutes or whatever) before randomly picking another one. Rinse/repeat until user input is detected.
So, an example commandline might be:
pico8 -windowed 0 -screensaver /path/to/screensaver/cartlist.csv -splore
...and an example cartlist.csv might be:
A quick quality of life improvement feature request:
Allow commandline arguments -run and -splore to be used together.
Let's say I built a PICO-8 arcade cabinet. Splore works well in that context as a frontend cart interface. But, when the machine boots into splore, it just sits static at the menu. If -run could also be used, it would allow the machine to boot into an Attract Mode cart or a visual demo. From there, the user can still use the "exit to splore" menu option to navigate and play games.