Mox Wild West (WIP)
Story
[8x8] | |
The story about Mox unfolds in a small canyon enclave, where he's stuck and can't escape. The canyon has been overrun with bandits and other mysterious creatures. There are trains passing multiple times every day, but they never seem to stop in the small town, maybe he can find a clue? (wip)
Controls
[8x8] | |
I feels like the traditional way to load a cart is too slow, so make a FasterLoader with UI and interact by keys may be better. But the file commands like cd, load, and open are not available for coding!.
I can use load and cd in the code but it just doesn't gives any reaction feels like the code not existing. What's more, the open command is not even included in because while I tried to run it, the terminal says syntax error, which makes me feel upset. ;(
Update 4/16/24
Added sound effects! Thanks for your collection @packbat !
- Added sfx for various actions including sniffing, barking, bots and dog running.
- And Win noises! and lose noises.
Side note: the last thing is the bots don't really have pathfinding but that's a bit beyond my ability for now <_< I fix that at some point but I'm effectively done and moving on to the next project.
Thanks for looking!
Update 4/10/24
Some quick changes
- Commented in the code to help clarify what everything does
- Adjusted the menu screen's examples to help show what you're supposed to do
- Added a little "shocked" animation to show when some actions happen i.e. bot stunned when the dog barks.
How to use
Open the music editor, select the specified INSTRUENTS_ID, and then copy and paste the --[[pod_type="instrument"]]
line below.
## elec bass --[[pod_type="instrument"]]unpod("b64:bHo0AG4AAABsAAAA8F17aW5zdHJ1bWVudD1weHUAAygAAgAABAABEAYPIBABIAEgAfAAAhACDhABIA8hIAEwD0CQDxECEA8UDzAAATAPERAR4AIIIA9QYA9C8IsPKA_0CvAEBA8zDzAJ8K0P_AoP-w_AD-cPDQHwCH0=") ## metal scratch --[[pod_type="instrument"]]unpod("b64:bHo0AJUAAACTAAAA8IR7aW5zdHJ1bWVudD1weHUAAygAAgAABAABEAYPIAARIAEgAfAAAhAGDiEgDyEAD-8AAeAPEQIgDyUAATAFD9AAAgHgDxICIA8vUAUPMAACATAPLJACCKAPRvBrDygP--AGDygPXA8ZsAIQCQ8SDw8QX_kv5A--D8QPjw9qD1UPHw8P8IkP_AoP-w_AD-cPDQHwCH0=") ## buzz bass --[[pod_type="instrument"]]unpod("b64:bHo0AI4AAACVAAAA9TN7aW5zdHJ1bWVudD1weHUAAygAAgAABAABEAYPGBABIAEgAfAAAhACDyAQASAPISABIAQPfwABcA8RAhAEDycAATAiABESIgBwD-QQAeAPEx4AEA4eAPAlDBAB8AAJIA8_IA_j8E8PKA--8AUFD3EPOA808AQMD3APXw8o8JUP_AoP-w_AD-cNAfAIfQ==") |
When typing, if a key is released quickly (looks like it's only if it's released in the same frame it's pressed, but not 100% sure) after being pressed, it won't be registered. I'm running into this due to parts of my keyboard layout sending rapid press/release events that are almost always ignored. If I add a delay so the events are spaced out by ~25ms, they start registering reliably. In other words, I suspect Picotron is doing something like this each frame:
# Process key events keymap = {} for event in events: if event.type == "key_up": keymap[event.key] = false elif event.type == "key_down": keymap[event.key] = true # Now handle events if keymap[...]: do_keypress() |
Not sure whether this reproduces on other OSes, but I think this would also manifest itself as dropped keypresses when running at very low framerates. I haven't been able to validate that theory yet though.
Hello !!
I'm learning to code, but I quickly find myself getting sidetracked by trying to implement things I haven't seen in the games I've played yet, and ultimately, I end up wasting a lot of time starting over.
I would like to hear your thoughts on Pico-8, what has helped you progress the most? Was it blind development like I'm attempting without any prior experience? Did you follow tutorials or take courses? Did you look at the code of a game you like to try to understand and learn from it?
Specifically, if you were to start Pico-8 programming today with the hindsight you have now, how would you begin?
Thanks in advance.
This is a fullscreen version of Picotron raytracer, originally created by @eigenbom. It was made since the original windowed version might mess Picotron's desktop wallpaper or theme used by user. It uses vid(3) mode and draws on 1/3 of the screen, and also it draws in slightly more fps. IDK tho, how to move it to the center of the screen.
This is a general purpose geometry/vector library.
It's based on Geometric Algebra (GA) but you don't need to know what that is to use it as most of the standard vector operations you're probably familiar with are here.
I'd be happy to add additional demos (with credit obviously) so if you make something interesting that you want to include let me know.
Updates
2024-04-21
- Added 3D triple pendulum demo (based on the 2D version here: https://matthias-research.github.io/pages/tenMinutePhysics/index.html)
Hat tip to @shanecelis for this post (https://www.lexaloffle.com/bbs/?tid=54905) which made me aware of PBD and Matthias Müller.
I'm just getting into PICO-8, so this post is largely just me saying Hello World :)
Here's what I have to show (in the best way) for the past few days of learning how to develop in PICO-8 - tutorials have been super useful and I love what I've seen of the community so far!
x
to yap with a star effect
arrow keys
to walk
hold o + arrow
to zoom with rainbow effect
This cart uses snippets from @shy's blog post on animating sprites and @atzlochtlan's Particle Effects cart (thank you!)
💜
____ SPACE ROGUE! ____
Embark on a mission to destroy the enemy aliens!!!!!
Upgrade your ships weapons as you power up in this Space Invader/Roguelite mash-up!
How many enemies can you defeat before re-upgrading your ship?
UPDATE 1.3:
The new update for Space Rogue! adds more core mechanics to make the game be the roguelite that it is! This update adds replay value and provides a foundation for future upgrades & enemies!!!
-- NEW post run shop upgrades!!! Continue your run after your death with an upgraded ship!
- Triple shot!: Fire three bullets at once!
- Upgrade your maximum shield capacity!
- Unlock a power-up that will re-fill your shields to max level. Handy for long runs!
-- Balanced enemy spawns and added a NEW enemy type!!! (this one shoots back!)
-- New sprite for the ships bullets. Adds little more imagination than a yellow brick :)
-- New soundtrack!!! (This one has a bass line! :O)
Also changed up the coding for the way the game handles enemy collision, weapon collision, upgrade logic etc... This will make adding more upgrades & enemies in the future less of a task!
Have fun!
Pico-8 A-Z: A Pretty API Browser for You and Me
> A Tool by ★ iiviigames
Follow on Twitch!
∧∧∧∧∧∧∧∧∧∧∧∧∧∧∧∧∧∧∧∧∧∧∧∧∧∧∧∧∧∧∧∧∧∧∧∧∧∧∧∧∧∧∧∧∧∧∧∧∧∧∧∧∧∧∧∧∧∧∧∧∧∧∧∧
How to Use the Api Browser 1.0
∧∧∧∧∧∧∧∧∧∧∧∧∧∧∧∧∧∧∧∧∧∧∧∧∧∧∧∧∧∧∧∧∧∧∧∧∧∧∧∧∧∧∧∧∧∧∧∧∧∧∧∧∧∧∧∧∧∧∧∧∧∧∧∧
> Save this bad boy to the local unit for optimum effectiveness...
Simply 𝘵𝘢𝘬𝘦 𝘺𝘰𝘶𝘳 𝘵𝘪𝘮𝘦 𝘢𝘯𝘥 𝘩𝘪𝘵 𝘵𝘩𝘰𝘴𝘦 𝘢𝘳𝘳𝘰𝘸 𝘬𝘦𝘺𝘴, 𝘢𝘯𝘥 𝘭𝘰𝘰𝘬 𝘪𝘯𝘵𝘰 t𝘩𝘦 𝘢𝘱𝘪.
- ➡️ / ⬇️ to move forward
- ⬅️ / ⬆️ moves backwards
> NOTE: This cart saves a log to the desktop for your ♥
Featurez
T𝘩𝘪𝘴 𝘱𝘳𝘰𝘨𝘳𝘢𝘮 𝘸𝘪𝘭𝘭 𝘢𝘶𝘵𝘰𝘮𝘢𝘵𝘪𝘤𝘢𝘭𝘭𝘺 𝘸𝘳𝘪𝘵𝘦 𝘢𝘯 𝘢𝘭𝘱𝘩𝘢𝘣𝘦𝘵𝘪𝘤𝘢𝘭 𝘪𝘯𝘥𝘦𝘹 𝘰𝘧 𝘵𝘩𝘦 𝘧𝘶𝘯𝘤𝘵𝘪𝘰𝘯𝘴 𝘢𝘴 𝘵𝘩𝘦𝘺 𝘸𝘦𝘳𝘦 𝘢𝘵 𝘵𝘩𝘦 𝘳𝘶𝘯𝘵𝘪𝘮𝘦, saving directly to the desktop for easy access!
T𝘰 𝘥𝘪𝘴𝘢𝘣𝘭𝘦 𝘵𝘩𝘪𝘴 𝘣𝘦𝘩𝘢𝘷𝘪𝘰𝘳, 𝘨𝘰 𝘵𝘰 𝘵𝘩𝘦 𝘭𝘢𝘴𝘵 𝘵𝘢𝘣, 𝘢𝘯𝘥 𝘴𝘦𝘵 writeapi
𝘵𝘰 false.
A𝘴 𝘧𝘰𝘳 𝘵𝘩𝘦 𝘱𝘳𝘰𝘨𝘳𝘢𝘮'𝘴 𝘧𝘦𝘢𝘵𝘶𝘳𝘦𝘴...
- I'𝘷𝘦 𝘪𝘮𝘱𝘭𝘦𝘮𝘦𝘯𝘵𝘦𝘥 𝘢 𝘯𝘪𝘤𝘦 𝘱𝘢𝘥𝘥𝘪𝘯𝘨 𝘧𝘦𝘢𝘵𝘶𝘳𝘦, 𝘢𝘴 𝘸𝘦𝘭𝘭 𝘢𝘴 𝘵𝘩𝘦 𝘰𝘱𝘵𝘪𝘰𝘯 𝘵𝘰 𝘭𝘪𝘮𝘪𝘵 𝘵𝘩𝘦 𝘯𝘶𝘮𝘣𝘦𝘳 𝘰𝘧 𝘪𝘵𝘦𝘮𝘴 𝘱𝘦𝘳 𝘱𝘢𝘨𝘦.
- B𝘺 𝘴𝘦𝘵𝘵𝘪𝘯𝘨
itemsperpage
𝘵𝘰1
, 𝘧𝘰𝘳 𝘦𝘹𝘢𝘮𝘱𝘭𝘦, 𝘺𝘰𝘶 𝘸𝘪𝘭𝘭 𝘴𝘪𝘮𝘱𝘭𝘺 𝘴𝘦𝘦 𝘰𝘯𝘦 𝘧𝘶𝘯𝘤𝘵𝘪𝘰𝘯 𝘢𝘵 𝘢 𝘵𝘪𝘮𝘦, 𝘢𝘯𝘥 𝘵𝘩𝘦 𝘱𝘢𝘨𝘪𝘯𝘢𝘵𝘪𝘰𝘯 𝘪𝘯𝘧𝘰 𝘸𝘪𝘭𝘭 𝘳𝘦𝘧𝘭𝘦𝘤𝘵 𝘵𝘩𝘦 𝘵𝘰𝘵𝘢𝘭 𝘯𝘶𝘮𝘣𝘦𝘳 𝘰𝘧 𝘧𝘶𝘯𝘤𝘵𝘪𝘰𝘯𝘴 𝘸𝘪𝘵𝘩𝘪𝘯 𝘵𝘩𝘦 P𝘪𝘤𝘰-8 API as a whole.
Why I Made This
This tool was created to quickly scan through the pico-8 api, & has many use cases for myself, as I'm the fella' who maintains the stylish though unofficial API site at:
cast:
- change dimension of userdata buffer for 2d operations
buffer=userdata("u8",4096) -- get a 8x8 sprite out of it sprite=cast(buffer,"u8",8,8,1040) |
note: not sure how GC can track these chunks - ok to have that as weak references only.
-
matmul with stride
align with other userdata operations - all ops to allow for source index
use case: array of vectors referenced by index
big_array=userdata(‘f64’,4,500) …. indices = userdata(‘i32’, 4) indices:set(0, 3,89,0,75) out=big_array:matmul(m, indices) |
-
min/max
note: can be done with sort (but overkill) - dot:
cannot operate on partial userdata
🄿🄸🄲🄾🄿🄷🄾🄽🄴
PicoPhone is a lightweight open-source multi tool widget designed to run in Picotron's desktop2 and to use as less CPU as possible. https://github.com/369px/PicoPhone
It aims to completely replace your smartphone and give you back the focus you need while completing your gems. Just load #phone
in the Picotron terminal to get started!
Latest version: 0.5.35
NEW: Automatic updates at boot-up!
PicoPhone now checks the BBS for updates!
So you never miss the latest features.
I've made a video on how I auto-update here:
https://www.youtube.com/watch?v=88nRTLXdAGs
NEW MiniApp: Control Panel!
Do the boring stuff with a click!
A simple animated wallpaper or screensaver. Two sides locked in an eternal battle.
The two colors are taken from your current desktop theme.
Inspired by the web version by Koen van Gilst, with some code snippets being adapted from it.
Save as wallpaper
If you haven't already, create a user wallpaper directory in /appdata/system
. Changes to the system wallpapers won't persist across a reboot.
cp /system/wallpapers /appdata/system/wallpapers |
Load and save the cart.
load #pong_wars save /appdata/system/wallpapers/ |
Save as screensaver
If you haven't already, create a user screensaver directory in /appdata/system
. Changes to the system screensavers won't persist across a reboot.
(Access it from BBS with load #miditron-0
)
Miditron!
The first midi-to-picotron conversion tool!
This tool allows you to convert .mid or .midi files into .sfx files used by the Picotron synth tracker.
Just drag and drop the desired midi onto the window, and voila! Your midi is transformed into a .sfx file, conveniently placed onto your sfx folder in your current cart~
Beware!! The tool is pretty barebones though! And far, far from perfect. So you might encounter glitched tracks and have to manually adjust patterns and tracks to fit the desired results.
Some handy tips for adjusting your midi files for an optimal result would be:
- Use only 2/4, 3/4 and 4/4 meters; These meters are the most optimally supported by the tool
- Avoid odd-numbered sections of the song (sections are separated by time signature change or tempo change)
- Avoid using .midi with too many simultaneous notes/instruments (Picotron only supports 8 a time)
Want to get seasick while coding in Picotron? I got you covered! I made a Picotron wallpaper based on my latest PICO-8 game Jaw.
Make sure you have already created your personal system folder inside Picotron and copy jawpaper.p64.png to appdata/system/wallpapers/ and/or appdata/system/screensavers/
Go to the system settings inside Picotron and select "jawpaper" as wallpaper or screensaver.
Enjoy.
Update 2024-04-09: Added Icon and metadata.