Hello, the release thread is a bit busy and I'd like to make it a bit more visible as it's both about a possible bug and a feature the community could use for editor or more, it's a bit more interesting than just a crash, I'd say. I think I found a possible issue with wrangle
and filenav
.
Basically, wrangle that works with the current opened file pwf() and by when creating the wrangle object you have to pass getter/setter to store/load data from the file. Right?
Inspired by the GUI code here and there, I found out that the argument intention
was mostly the thing that makes filenav acts as an open/close dialog, or supposedly. Thus, I ended up with code looking like that
sidebar:attach_button{ x=0, y=0, label="Open", tap = function() local segs = split(pwf(),"/",false) local path = string.sub(pwf(), 1, -#segs[#segs] - 2) -- same folder as current file create_process("/system/apps/filenav.p64", {path=path, intention="open_file", window_attribs={workspace = "current", autoclose=true}}) end } sidebar:attach_button{ x=32, y=0, label="Save as", tap = function() local segs = split(pwf(),"/",false) local path = string.sub(pwf(), 1, -#segs[#segs] - 2) -- same folder as current file create_process("/system/apps/filenav.p64", {path=path, intention="save_file_as", window_attribs={workspace = "current", autoclose=true}}) end } |
And somehow, it works! Or almost.
I believe there's a slight issue with the open_file
intention: it doesn't properly override the doubleclick event, as seen in 1/apps/filenav.p64/open.lua, @zep wrote that he didn't any find another intention that didn't needed the same exception than
save_file_as`; the default operation did the same expected result anyway by leaving the default editor to open the file thanks to that hardcoded* extension/editor association mapping.
Thus we end up with the situation where we can't just open a file from a non-system editor by doubleclicking with a custom file or file format. I found a workaround: if you type the file to open in the filename toolbar, it'll properly handle the event, pass the open_file event back to wrangle and your file will properly load!
So, here's my questions:
- Picotron's boundaries about what's user-accesible code or not is a bit blurry, should we allowed to use wrangle?
- Should
filenav
'sopen_file
intention get the same exception thansave_file_as
if it was called from an external program? - Was the end result intented or is it a bug? Having two contradictory results from the dialog seems like a bit unexpected.
Anyway, have a nice day!
Forgot your harmonica? No problem, use this one!
Simulates a richter-tuned harmonica (also known as blues harp or diatonic harmonica).
Controls
left/right/down/up: play notes in the current position. Two adjacent holes can be played at the same time.
O: hold down while playing a note to draw in air (instead of blowing).
X: change position.
Use the pause menu to change harmonica key and toggle note display.
Hello!
I've recently got into creating games with Pico 8 and having an absolute blast. I've been searching for a solution to my problem but I don't know if its just my inability to search using the correct terms or what.
I'm basically looking for the simplest way to embed the game as HTML or possibly on itch.io but to keep the leaderboard persistent for -everyone- so people could compete. Ideally using some sort of save function but as I understand it they are per system rather than global has anyone looked into this before?
Thanks!
Hello!
I'm looking for feedback on this game.
I'd love to hear the following from you u:
--What is your final hiscore?
--How long did you play for?
Any general criticisms are also greatly appreciated.
Thanks for playing and I hope you had fun!
Simple top-down shooter with cute characters
This is the first game I made with Pico8!
Control
Arrow keys - Move
Z or C Key - Dash
X Key - Shoot / Reload
Mastodon
I made a basic proof of concept mastodon client in picotron! All it does is fetch a single status, given an instance and status id.
I am using the text editor GUI widget to display the text and take your input. To select the instance and status id, simply type them on the given lines. To submit, type a y
at the end of the last line.
(For example: if you wanted to fetch https://mastodon.social/@zep/112095878554051090, the instance would be mastodon.social
and the status id would be 112095878554051090
)
Once a post is displayed, you can go back to the menu by typing y
at the end of the first line.
I made a different version of this earlier, but that version used a python server to handle the json and text formatting. This version does everything entirely within picotron.
Credits
JSON - https://gist.github.com/tylerneylon/59f4bcf316be525b30ab
Word Wrap - https://rosettacode.org/wiki/Word_wrap#Lua
Some little poorly-drawn cat friends!
They run around on the desktop, sleep, hop, climb the edges of the screen, and bonk their heads on the toolbar if they jump into it.
As of rev2 (BBS release), you can:
- Give them head pats. Sometimes they will go to sleep afterward.
- Pick them up.
- Place them on the side of the screen.
- Wake them up from sleep.
- Interrupt them when they jump; to catch them or make them fall.
If you made too many or want to get rid of them, you can grab them with the mouse and press [X] to send them away.
I very much want to make them interact with other windows, but I don't know if there's a way to retrieve a list of window coordinates/dimensions at the moment. If I work something out, or you do, we can add the final piece of essential screenpet functionality! (that being, sitting on windows)
If you'd like to have it autostart when Picotron opens, save the cart file somewhere, then edit or create "/appdata/system/startup.lua" and add the line:
create_process("/carts/desktopPet.p64") |
... changing the path to lead to the cart file you just saved.
This is what I've done, at least. Whether this is best practice is up in the air.
This was made mostly between pico-8 and picotron concurrently (saved in a text document) over the last month. It was really just putting the finishing touches on it once picotron was released.
Puzzles 3, 44, 45, 46, & 47 were guest contributions by Taichi on Discord.
The music hangs when you turn it off with Z (I think maybe a bug in how picotron handles music(-1)), but if you exit and start again, the music will be off until you start it again with Z.
I've learned so much from so many people but I must give a special shoutout to Krystman, whose Lazy Devs tutorials on Pico-8 were invaluable to learning the language.
Documentation at your fingertips!
This cart installs the man
terminal utility for reading documentation within picotron itself.
Something not documented? man
will intelligently search the Fandom Wiki! 😱
Installation
-
Setup yotta:
- In the terminal
load #yotta
- Press Ctrl-r
- Press x to install
- Install this package:
- In the terminal
yotta util install #man
This will install the following files for you:
appdata └── system ├── lib │ └── man.lua # The `man()` function for library usage ├── man/ # Man files live here └── util └── man.lua # The `man` terminal utility |
Usage
In the Picotron terminal, run man
.
NAME man -- format and display the manual pages SYNOPSIS man [section] name DESCRIPTION man formats and displays the manual pages. If you specify section, man only looks in that section of the manual. name is normally the name of the manual page, which is typically the name of a command, function, or file. See below for a description of where man looks for the manual page files. MANUAL SECTIONS The standard sections of the manual include: 1 User Commands from /appdata/system/util 2 System Calls such as fetch 3 Picotron Lua Library Functions wiki Wiki pages from https://pico-8.fandom.com P8SCII FORMATTING man understands most of p8scii formatting. The \a command to play audio is not supported. SEARCH PATH FOR MANUAL PAGES man searches /appdata/system/man for local manual pages in the format <name>.<section>. WIKI PAGES When section is 'wiki', or local manual pages are not found, man will return the first search result from the unofficial PICO-8 wiki: https://pico-8.fandom.com AUTHOR Created by Jess Telford <[email protected]> |
Contributing
The code is on GitHub, and I'd love help documenting more of the picotron system so everyone can benefit!
Please open PRs and issues with suggestions ❤️
hi hi
i made this to show my friends a demonstration of what PICO-8 can do. so i guess consider it a prototype or tech demo of sorts...
this was made for a 2 month game jam. never coded a game from scratch before, but i really enjoy using PICO! the game doesn't fill up the cart, barely using the graphics data and only 60% of the tokens, so a lot more can be done.
have fun with my cozy lil space game!
-Dinny
Controls / Mechanics
Up (hold): Gas / Maintain Speed
Left/Right (hold): Turning
Down (hold): Brake / Charge Boost
X (tap): Planet Finder / HUD
Down (hold) + X: Boost (blows up nearby obstacles)
Left/Right (tap): Build up a little speed
Bottom Map: You are the gold dot, collected planets are green. Nearby planets are red. Special planets are purple. Each map cell is 2048x2048 pixels. Map wraps in both directions. Layout is randomized on cart load and persists through death with your collectibles and upgrades
Health: Collecting anything restores health. Jars increase max health (although a bug leaves the max health uncapped) High speed collisions are always fatal.
Win: Collect 8 green slimes. There's way more than 8 scattered around the world, so don't worry about missing stuff.
Credit
TheRoboZ's sprite rotation
https://www.lexaloffle.com/bbs/?tid=38548
JadeLombax's infinite scrolling (modified it to work in 2 directions)
see comment in this thread
https://www.lexaloffle.com/bbs/?tid=42875
Here's a little wallpaper I made for my new Picotron system. There is a bit of irony to it, which I like.
This is intended to be used with the "moonlight" theme.
Froggo - made in a week very shortly after I discovered the wonderful Pico8!
It's a remake of the arcade game frogger, manoeuvre the frogs to cross the road and river to score points, get all five frogs across securely to complete a level. The levels increase in difficulty as you progress. See how high a score you can get.
this is a new revision of top down engine with more effective dashing and a screen lock
z to dash in any direction that you previously pressed
arrow keys for movement and hope you enjoy!
Altough I was born a little too early to call this a "childhood" game I can still appreciate it's relevance of this game as a good first game for any beginner programmer. Enjoy!
Controls:
Flap with Mouse or Up
I'd love feedback on the code if anybody is willing :)
Introduction
Hi all, this is my first game uploaded into lexaloffle, hope you enjoyed playing it as much as i enjoyed making it.
Gameplay
This game works a little like yahtzee and roguelite combined into one.
Press arrow keys to move around and o key to accept...
Features
- Progression
- Synergies
- Yahtzee
- Artifacts
- Hero Roster
- Curses
- Achievements
- Secrets
- Varying difficulties
- Frustration
and many more...
Credits
Just me...
Bugs
I'm pretty sure i tested most of the features.. but if there are bugs just drop a comment and i'll fix it.
winStay is a library that is used to easily keep window location and size persistent after closing the program. winStay has one function winStay
, which has three arguments:
name
is the name of the folder in which you want to keep the save data in within/appdata/
.width
is the default window width.height
is the default window height.
How to use winStay with yotta
After first installing Yotta, run the following commands:
> cd /ram/cart
> yotta init
> yotta add #lib_winstay-0
> yotta apply
Finally add the following code to the top of main.lua
.
include "./lib/_bbs_lib_winstay_0/winStay.lua" winStay("game", 150, 100) |
How to use winStay without yotta
Run the following commands in the console:
load #lib_winstay-0
cp /ram/cart/exports/winStay.lua desktop
Now load the program you wish to add winStay to, and move it from the desktop to the cart next to your main.lua
file.
Add the following code to the top of main.lua
:
include "winStay.lua" winStay("game", 150, 100) |
I'm sure I'm far from the first person to do this, but I recreated Flappy Bird in PICO-8:
check out this dope ass pool game
Desktop cat 1.0
This is a desktop wallpaper that lets you watch a cat run around and play! It uses up barely any cpu at all (~0.0113 as of 0.8), so dont worry about it eating up too much cpu.
Features:
Watch a cat run around and play on your desktop! It can roam around, sit or sleep, chase the mouse, or even chase a toy around!
On boot, it spawns a random amount of toys (and cats!), but the chance for a lot to spawn is pretty low.
Sometimes the cats do try and break things, so dont be discouraged if you come back to find all of the toys are missing.
To install this animated wallpaper, put the file in /picotron/drive/appdata/system/wallpapers/. then just select it from settings.