Very early implementation of a weather feature in Picotron.
As Picotron's "fetch" is extremely limited, I deployed a very simple middleware on my own server (https://play.quee.org/?lat=0&long=0) to relay GPS coordinates between Picotron and Open Meteo (https://open-meteo.com).
GPS coordinates are obtained using ipapi (https://ipapi.co).
Kelvin Quee
Raycasting?
Controls:
- arrow keys to move
- mouse to look around it will eventually reach the border, you have to center the mouse again
- x for viewing map
- d for more detailed stats
about
After trying to make raycasting the wrong way, I came up with this method.
I really don't know if thats the correct way of doing it. My idea was to have rays being shot from the player, when they hit a wall the stop and draw a line in the center at the screen + index of the ray, also the further away the ray went, the smaller the line will be. So that make a pretty good illusion of 3d in a 2d space. You can poke around with the values like the field of vision, amount of samples taken (rays shot), the stretch of the screen and many other.
I know there is still so, so much yet to add in Picotron, but there are quite a few features PICO-8 has that would be so nice to also have in Picotron. I imagine a non-zero percentage of these are probably already on some official/unofficial/mental roadmap that @zep keeps for Picotron. Nevertheless, I thought I'd list some here just to get them "on paper" and not floating around in my head. Feel free to contribute your own items to this list.
Keep in mind, I have zero expectation that any of these ever actually get added, let alone added soon. So if you decide to contribute to this list, keep in mind the vibe here is more "ooh, that'd be neat if Picotron did this too" rather than "why doesn't Picotron have this feature?!"
EDIT: Wow! A lot of these got added in the latest version of Picotron! (v0.1.0h) I've updated the list below to indicate what's now been added to Picotron. Thanks, @zep! 🤩
- Having the option to show tab character indicators
- Alt-up and alt-down jumping you one function up or down at a time
This is an audio-visual representation of the harmonic series. The sine waves are in size and
frequency, integer ratios of 1,2,3,4,5,6,7,8, using bends to get as close to the exact tones as
possible. Every time the sine waves hit a peak or valley, they play the associated note in the
harmonic series and they oscillate in the same ratio.
Made by my son and me in about a week during that time I also taught him Lua.
My son is responsible on the level design that will make you suffer. (Suffer because you might reach a level in which the portal will actually kill you instead of teleport you and you will have to find another exit)
I consider the game very challanging.
There are 21 levels in this game. I was able to reach level 3 but my son has reached the end of the game countless times.
Special thanks to @matthughson for "advanced micro platformer" which we used.
Thanks Nerdy teachers for excellent tutorials.
And finally thanks Lazy devs for great tutorials.
I'm trying to figure out the alternate colors a bit so I can use them in a game. I'm not trying to get all 32 colors available at once. I'm happy with having 16 but just want to adjust which 16 I have. From what I've read, it seems like this is possible.
I put the display pal() swaps at the top of the cart which does switch out colors. And it works when drawing and with sprites. Cool.
pal(3,129,1) -- blue129 pal(5,140,1) -- blue140 pal(6,135,1) -- yellow135 pal(11,137,1) -- orange137 pal(12,132,1) -- brown132 pal(14,128,1) -- brown128 |
So I have a sprite that is drawn with original blue12 and then on the screen it displays as brown132 because of the swap. I get that and it's working.
But I want to be able to display that same sprite again in a different color.
How do you do a swap on a swap?
-- this sprite is draw in blue12 and displays as brown132 = expected spr(1,12,96) -- how do i make the same sprite display as orange137 [ [size=16][color=#ffaabb] [ Continue Reading.. ] [/color][/size] ](/bbs/?pid=147717#p) |
The response to this has been pretty positive, so I'm throwing this demo up here on the forums.
This cart is a prototype for a point and click adventure with pre-rendered 3D graphics and a custom palette.
Included in this cart are elgopher's require module and snowkittykira's error explorer module
I have discovered a pretty frustrating bug related to header.lua, resume and menuitem()
Have a look:
It seems that trying to use a menuitem after editing ANYTHING using IMMEDIATE MODE Crashes pico-8 with the error ATTEMPT TO CALL UPVALUE "_SUPERYIELD" (A NIL VALUE)
.
It says its being called in FLIP()
, so lets look at header.lua...
You can see _SUPERYIELD()
being called if the pause menu is supposed to stay open. no problem here, right? WRONG!
All of these "special" functions, like _SUPERYIELD()
Are "Jettisoned" after they have done their jobs. that means they are all set to nil
, so the user isnt able to ruin the device. We can see this at the end of header.lua. Here we can see all the original functions being reset. They still work only in header.lua though, because theyve been set to local variables for use in the header only.
This game was made for the Minigame A Month April 2024 for theme Farming!
Gameplay:
Use your tools to manipulate the field, then harvest with as many points as you can.
⬅️⬇️⬆️➡️
❎: X
🅾️: C or Y/Z
When harvesting you move along in a straight line if you have the same veggies in that direction and stop before stepping on a different one.
Harvesting a veggie gives 1 point +1 for each previous same vegetable.
Combo and movement stops on a new vegetable in the direction, or upon turning into a new direction!
Tools
- Shovel: Let's you swap two rows or columns with each other.
- Pitchfork: moves row/colum left-right-up-down
- Bomb: Upon stepping on, it harvests all neighbouring tiles (replaces one where you move so it doesn't break cool lines)
- Watering can: Replaces a 3x3 area with a crop randomly selected from that area (weighted by occourance)
Seeds:
After completing a stage (or on pressing Enter) you can view the seed of the current page. Note that number down and share it with a friend. In the Load Field menu you can enter the seed and race on who can achieve more points on the same map, with the same tools!
Development:
You can read the devlogs and watch the full development VODS if you are intersted in things like that!
Devlog Articles
Hello. I was playing around with pods, and I noticed that create_diff isn't defined. here's the code (I'm 99% sure I didn't do something really stupid):
local a = {"a", "b", "c"} local b = {"a", "c", "d"} local pa = pod(a) print(pa) local pb = pod(b) print(pb) local pd = create_diff(pa, pb) print(pd) |
@zep was the function removed? it's in https://www.lexaloffle.com/dl/docs/picotron_pod.html#POD_Diffs, but maybe that's outdated.
EDIT: Never mind, it's called create_delta!
So I was curious if picotron would be capable of running the original Lemmings game as it was on Amiga, it turns out - yes!
Well, with the exception of no halfwidth pixels for the UI. But otherwise, you could make a 1:1 clone. Which I started doing, but then I thought it would be more fun if I pretended Psygnosis had time-travelled and asked me to make a picotron port. So I added extra in-between frames to the classic walk cycle for smoother animation, climbing gloves and umbrellas to indicate lemmings with permanent skills, fast forward (an invaluable feature added after the first games), and a nicer level select.
At the moment there are only a handful of levels and only one half-finished music track, I hope to work on more and have all the levels from the first four games (Lemmings, Oh No! More Lemmings, and the two holiday packs from '93 and '94), buuuuut I don't know that I'd be comfortable posting that here (or at all) - Lemmings is somebody else's IP after all. This is a fun hobby project for me, but if you want to play classic lemmings there's a few other options for you. I'm only really sharing this so that anyone that wants to see how I've done it can check the code, and also it's a way for me to call it a milestone I can step away from - I've got other projects with my own IP to finish!
Can you take down the entire fleet?
The enemy has established a naval blockade and you're the only one that can open up supply lines. Use your mini-sub to destroy enemy ships and clear the blockade. Success will depend on a steady hand and perfect timing. But beware! There are also reported sightings of an experimental enemy sub!
- Navigate tricky minefields
- Tense periscope action!
- Avoid depth charges raining from above
- Damn the torpedoes!
- Top secret submarine boss fight
Classic action
Controls
Arrows / D-Pad = Move submarine
Hello, I have this code that circles an object around the player position.
It works well if the player stands still, but if the player moves the trajectory of the object goes a bit wonky. it sort of stops, or looks like it wants to go in the other direction for a bit.
How can I make it smoothly rotate around the player?
local player = self.game_context.player local orbit_radius = 40 -- Distance from player to orbiting projectile local orbit_speed = self.speed -- Normalized speed of orbit; consider this as fraction of a circle per frame for p in all(self.projectiles) do p.angle += orbit_speed if (p.angle > 360) p.angle = 0 p.x = player.x + (player.attributes.w / 2) + orbit_radius * cos(p.angle/360) p.y = player.y + (player.attributes.h / 2) + orbit_radius * sin(p.angle/360) -- Handle projectile duration and collision p.duration -= 1 end |
CC GENETIC ALGORITHM
If runs are taking too long, Consider disabling FLIP?
on page 3 of the settings (READ SETTINGS REFERENCE BELOW)
This is a mod of Celeste classic where you get to watch a genetic algorithm learn how to play Celeste classic.
Wiki page for the Genetic Algorithm
SETTINGS REFERENCE
Welcome to the dungeon,
The goal: Survive as long as you can.
Dev Notes:
It should be known that right now it’s only one level.
Mostly as a test bed before I wrap it all together with level generation.
There are bugs I am working out but the next up will be figuring out how to generate floors and so on.
Thanks for checking it out <3
hello
This is my absolute first attempt at making anything 3d or 3d looking.
I want to learn the math behind 3d graphics in Pico 8, not the crazy ones, but the very simple ones, I am thinking of making a game kinda like in voxatron, with a static camera and a platform. I dont even want voxels, just 2d sprites. I tried using tline, and I just messed arount until it got to something.
I would be very happy if someone showed me any sources for basic Pico 8 3d, or cool things done with tline.