Log In  
Follow
MBoffin

There's nobody else like me. I checked.

[ :: Read More :: ]

Cart #time_check-0 | 2024-03-19 | Embed ▽ | License: CC4-BY-NC-SA

Just checking web player timings. Please ignore.

(Just to note, this uses really crappy math for getting the seconds, so if it overlaps the current minute's seconds, the numbers will be overlap incorrectly. Just start it again near the beginning of a minute.)

But @zep, check these timings. The web player is running super fast.

P#143901 2024-03-19 21:41 ( Edited 2024-03-19 21:43)

[ :: Read More :: ]


load #hexpop-1
// to load from inside Picotron

This is a fun, simple wallpaper. I was trying to keep it from being too annoying, but also still look cool. At some point I may have it follow the current theme colors. But for now it just uses the spritesheet. It runs idle at around 0.3% CPU and maxes out around 4% or 5% CPU.

You can add this to your Picotron wallpapers by typing this in Terminal (which assumes you've already created a /appdata/system/wallpapers folder):

load #hexpop
save /appdata/system/wallpapers/hexpop.p64.png

If you want them, I also made three other variations: Fire, Rainbow, and one that follows your theme.


load #hexpop_fire-0
// to load from inside Picotron


load #hexpop_rainbow-0
// to load from inside Picotron


load #hexpop_theme-1
// to load from inside Picotron

P#143893 2024-03-19 20:37 ( Edited 2024-03-25 17:39)

[ :: Read More :: ]

When using Ctrl-X to cut and paste sprites, the sprite flags remain in the old sprite location. Maybe this is intentional? But it seems like maybe the sprite flags should reset back to a brand new, untouched sprite state when sprites are cut and then pasted elsewhere. Here's a GIF showing the behavior:

P#111411 2022-05-06 20:49

[ :: Read More :: ]

If you keep increasing the Y value of the cursor, things get weeeeiiird. First, the CPU usage goes out the roof. Second, there's a weird area in the corner that obscures the text. Here's a bit of code that will reproduce the problem:

function _init()
    y=110
    f=0
end

function _draw()
    cls(1)

    f+=1
    if (f%20==0) y+=1
    cursor(0,y)
    print("hai")

    print("cursor_x:"..peek(0x5f26).."\ncursor_y:"..peek(0x5f27).."\ny:"..y.."\ncpu:"..stat(1),0,0,7)
end

And this is what happens:

P#90006 2021-04-05 10:00

[ :: Read More :: ]

Cart #mb_simplefps-0 | 2021-02-23 | Code ▽ | Embed ▽ | License: CC4-BY-NC-SA
16

I made a very simple FPS controller as a sort of example cart to build off of. This is just to get you going, as opposed to a full framework around which to build a full game. Hopefully it serves as a good jumping off point for someone to make something fun.

It uses player 2's ESDF controls for moving around and SPACE for jumping.

EDIT: Here's a very heavily commented version! Probably way more comments than usually necessary, but it's intended to help you learn, rather than just briefly annotate what's happening in the code.

Cart #mb_simplefpscomments-1 | 2021-02-23 | Code ▽ | Embed ▽ | License: CC4-BY-NC-SA
16

P#88033 2021-02-23 00:50 ( Edited 2021-02-23 05:28)

[ :: Read More :: ]

Cart #mb_digdeeper-2 | 2021-02-13 | Code ▽ | Embed ▽ | No License
28

Dig Deeper

This was made for Global Game Jam 2021 with PIGSquad. The theme was Lost & Found.

Controls

⬅️➡️⬆️⬇️ - Movement
🅾️/❎ - Interact (Z/X or X/C on keyboard!)
⬅️➡️⬇️+❎ - Dig
⬆️ - Jump/Jets

Credits

Everything But Music - @MBoffin
Music - @Gruber (from PICO-8 Tunes Volume 1)

Edit: Forgot to mention, but there is a speedrun mode you can enable/disable from the menu.

Edit 2: Fixed a couple visual errors and balance tweaks. Also made the speedrun mode skip the intro cutscene, and also shows your final time on the very end message screen (after the final cutscene).

P#87544 2021-02-12 19:50 ( Edited 2021-02-13 01:40)

[ :: Read More :: ]

Cart #infinipig-0 | 2021-01-18 | Code ▽ | Embed ▽ | No License
6

You are the ghost of Cubepig, looking for a body! Can you find one on your own, or will you have to trade something... precious...

This game was made in 3 hours by the PIGSquad Twitch Chat during a mini-jam on January 17, 2021.

P#86559 2021-01-18 16:52

[ :: Read More :: ]

@zep:

I teach a LOT of students PICO-8 and lately I've been mostly teaching online classes over Zoom. I'm usually doing this webinar style where I am the presenter and the students are participants. I can't see their screen, but they can see mine and there's a Q&A chat window where they can ask questions and so forth.

It would be extremely helpful to be able to copy console error messages to the clipboard. Currently you can hit CTRL-C in the console to copy what's typed into the command prompt, but it would be even more useful, if the prompt was empty, to use CTRL-C to copy the last error generated. Like this:

This would make it so much easier to help students when they run into errors, especially the very young students. If they get an error, they can just hit CTRL-C and paste the error into the Zoom chat. This would also be helpful for people trying to get other live help online, such as from Discord.

P#84208 2020-11-13 23:11 ( Edited 2020-11-13 23:12)

[ :: Read More :: ]

Cart #mb_topdown_vox-0 | 2020-08-06 | Embed ▽ | License: CC4-BY-NC-SA
10

I had a lot of fun making this. This is the top-down adventure game tutorial I made for PICO-8, but re-written to work in Voxatron.

I had to make a few changes to how things worked, since it's in 3D, of course, and there are things that Voxatron doesn't have, like a map editor or its associated functions like mget() or mset(), or other functions like btnp() and so forth. But other than those few changes, it's basically the same code as from the tutorial.

Feel free to take it and make your own games with it. :)

P#80433 2020-08-06 22:05

[ :: Read More :: ]

I'm sure this is probably an easy answer, but why do these work differently, where co_anim1 resets to nil after completion, but co_anim2 does not?

function _init()
    co_anim1=cocreate(animate)
    co_anim2=cocreate(animate)
end

function _draw()
    cls()

    --first method
    if (co_anim1 and costatus(co_anim1)!="dead") then
        coresume(co_anim1)
    else
        co_anim1=nil
    end

    --second method, same as first,
    --but sent to a function to do
    --the work.
    resume(co_anim2)

    print("co_anim1:",0,0,5)
    print(co_anim1,36,0,7)
    if (co_anim1) print(costatus(co_anim1),75,0,7)

    print("co_anim2:",0,6,5)
    print(co_anim2,36,6,7)
    if (co_anim1) print(costatus(co_anim1),75,6,7)
end

function resume(co)
    if (co and costatus(co)!="dead") then
        coresume(co)
    else
        co=nil
    end
end

function animate()
    local a=rnd()
    for i=1,40 do
        circ(64+cos(a)*i,64+sin(a)*i,4,7)
        yield()
    end
end

This code results in this behavior:

P#77176 2020-05-25 16:54

[ :: Read More :: ]

I use Dropbox to share my PICO-8 carts, screenshots, and gifs between my desktops and laptop. It's extremely useful to use it that way. It means all my carts in are one place, they're all saved to the cloud, and I never have to worry about which carts are on which device. (Another bonus is that I only have to update PICO-8 in one place, Dropbox, when a new version comes out.)

The TL;DR is just installing PICO-8 in a folder in Dropbox, and then tweaking the config file on each device to make sure it uses the Dropbox folder as where stores the carts and images (screenshots and gifs).

I know there are probably tweaks that could be done to this guide for each person's individual setup, and maybe there are ways to improve what I have set up here, but this has worked for me for half a decade, so.... ¯\_(ツ)_/¯ Also, I primarily use Windows machines, so this setup may need tweaking to make this kind of setup work on MacOS or Linux. (It should be effectively the same process, though.)

Here are the steps I use:

1) I install PICO-8 into a folder on Dropbox. I'll call that folder D:\Dropbox\pico8 for simplicity. (My actual path to PICO-8 in Dropbox is way longer, has spaces, etc.)

2) I run PICO-8 from that folder so that it creates the appropriate files and folders in my AppData folder at C:\Users\Dylan\AppData\Roaming\pico-8

3) I create a carts and images folder in D:\Dropbox\pico8

4) I create a symbolic link folder for both carts and images in the root of my C:\ drive by opening up a Command Prompt window and typing the following:

cd c:\
mklink /d pico8-carts d:\dropbox\pico8\carts
mklink /d pico8-images d:\dropbox\pico8\images

This step requires some explanation, and this step might not be necessary for you, but I do it because my full Dropbox folder path has spaces in it and that seems to not work with PICO-8's config file settings.

A symbolic link is a like a fake folder that points to a real folder. So I'm effectively making a fake c:\pico8-carts folder that, when you open it, actually goes to D:\Dropbox\pico8\carts instead.

5) Now I edit my PICO-8 config.txt file to use these new folders. Specifically, I ensure that these settings are set in the config.txt file:

// Location of pico-8's root folder
root_path c:\pico8-carts

// Desktop for saving screenshots etc. Defaults to $HOME/Desktop
desktop_path c:\pico8-images\

If the settings aren't already in your config.txt file, go ahead and add them. (The lines that start with // are just comments and can be ignored if they aren't there or are different.)

This makes sure that PICO-8 is looking at the "fake" folders created with mklink above for saving carts and screenshots/gifs. While PICO-8 thinks they are being saved to c:\pico8-carts and c:\pico8-images, they are actually being saved into my Dropbox folder.

I then do steps 2-5 on each device. Now, when I save or load a cart, or I save a screenshot or gif, it goes to Dropbox instead and everything stays in sync.

I'm happy to answer questions on this process, and if you have suggestions for improving it or changing it, feel free to comment below. Like I said above, there are probably many ways of simplifying this process or making it cleaner (like using command line arguments instead of changing the config.txt, for example) but this works for me and I thought others might benefit from its use.

P#77028 2020-05-22 19:15 ( Edited 2020-05-22 20:04)

[ :: Read More :: ]

Cart #mb_advent2019-2 | 2019-12-03 | Code ▽ | Embed ▽ | No License
14

Remember the classic Shockwave Flash snowball fight game called Snowcraft from 1998? 21 years ago! My entry for this year's PICO-8 Advent Calendar is a demake of that beloved Flash game. Huge thanks to @Gruber for helping with the sound effects!

This game uses the mouse. (Sorry, mobile users!)

I tried to make this as close to the original as possible. Have fun! :)

P#70560 2019-12-04 07:32

[ :: Read More :: ]

Cart #mb_3dboids-0 | 2019-11-10 | Embed ▽ | License: CC4-BY-NC-SA
3

❎ to show CPU usage (but I don't think it's accurate?)
🅾️ to show the follow target

This is a quick port of my PICO-8 boids cart. Nothing fancy, just some boids doing their thing.

P#69784 2019-11-10 20:30

[ :: Read More :: ]

Cart #mb_boids-0 | 2019-11-10 | Code ▽ | Embed ▽ | License: CC4-BY-NC-SA
6

❎ to show the follow target
🅾️ to show CPU usage

I've been wanting to do this for a while. This is a simple boids simulation. Most of the code was adapted from Daniel Shiffman's implementation in Processing.

Feel free to pick apart the code. Unfortunately, it's not commented much, and I'm absolutely sure there are optimizations that can be done.

P#69779 2019-11-10 09:13

[ :: Read More :: ]

Cart #mb_textflow-2 | 2019-09-18 | Code ▽ | Embed ▽ | License: CC4-BY-NC-SA
19

This is a heavily commented cart that shows one way of doing flowing dialog text with coroutines. If you have any questions on how it works, feel free to ask. Again, this is one way of doing it. :)

P#67842 2019-09-18 05:44 ( Edited 2019-09-18 06:44)

[ :: Read More :: ]

I just finished creating a tutorial for making a top-down adventure game in PICO-8. It's 10 relatively short videos (45 minutes for all 10 videos). You don't need any prior experience with PICO-8 to do the tutorial. I have done this tutorial with many, many kids and the games they create with it are always inspiring.

UPDATE 8/25: I've added a bonus step that allows you to add text to your game! :D

UPDATE 8/27: I added another bonus step that allows you have as many types of tiles as you want. You could use them for treasure, special keys to specific doors, teleporters, quest items, anything you want! 🗝️📜

You can find it on itch.io and on YouTube:

https://www.youtube.com/playlist?list=PLdLmU93eWisKpyk1WZywUSYAq5dkCPFIv

https://mboffin.itch.io/pico-8-top-down-adventure-game-tutorial

If you have any questions or need any help, feel free to let me know. I hope you enjoy it! :)

My Happy Challah Days entry for the 2018 PICO-8 Advent Calendar was created using this tutorial as the base code. (I added extra features for the jam, like dialog boxes, quests, and a larger inventory, but its foundation is this tutorial.)

Cart #advent_challah-11 | 2018-12-09 | Code ▽ | Embed ▽ | No License
19

P#66829 2019-08-21 06:45 ( Edited 2019-08-28 03:32)

[ :: Read More :: ]

Cart #mb_arcademechanics-0 | 2019-06-14 | Code ▽ | Embed ▽ | License: CC4-BY-NC-SA
7

This was a slide deck I made for a mini workshop I gave on arcade mechanics at a PIGSquad Summer Slow Jams event last night. (Following in the footsteps of @nextlevelbanana, I used a Nintendo controller as a clicker. 😄) Feel free to use the code for your own presentations.

P#65201 2019-06-14 19:01

[ :: Read More :: ]

Cart #mb_simplegame-0 | 2019-05-23 | Code ▽ | Embed ▽ | License: CC4-BY-NC-SA
9

This is a VERY simple game for very young kids to edit. This was literally coded in an hour, so it's not optimized or super clean code or anything like that. It just works and is easy for kids to edit. :) It's intended for kids to edit the sprites, sounds, and game variables.

Enjoy! :)

WHAT TO EDIT

SPRITES

Player - Sprite 1 and 2 are the player sprite.

Pickups - There are two rows of pickups. The top row gets only little_points if they are picked up. The bottom row gets big_points if they are picked up.

Baddies - These are sprites 49 and 50 (bottom-left of sprite tab 0).

Stars - The 4 pixels in sprite 48 (bottom-left) define the star colors.

SOUNDS

Sound 0 - When a top row pickup gets picked up.

Sound 1 - When a bottom row pickup gets picked up.

Sound 2 - When the player hits a baddie.

VARIABLES

little_points - Points gotten from picking up a top-row pickup.

big_points - Points gotten from picking up a bottom-row pickup.

game_speed - How fast the overall game should go.

player_speed - How fast the player moves.

animation_speed - How fast the animations change.

seconds_between_pickups - Self-explanatory.

seconds_between_baddies - Self-explanatory.

sky_color - Self-explanatory.

number_of_stars - Self-explanatory.

P#64691 2019-05-23 09:08

[ :: Read More :: ]

@zep, I've been really curious about the water feature in Voxatron. I love how it looks and how it acts. It just looks and feels so satisfying. But I've had just a hell of a time finding good articles that give me any sort of clue on how to recreate it with any sort of decent performance. (Or even to look as good as yours.) There's the classic water ripple algorithm that so many articles refer back to. But running that on 128^2 voxels just kills performance. Any clues as to what direction to look in to do water the way you do it in Voxatron? Is it something that works well because it's done "natively", so to speak, but wouldn't necessarily work well within the Lua performance constraints of the custom scripting feature?

P#64075 2019-04-30 05:52

[ :: Read More :: ]

Cart #mb_tweetcart_hourglass-0 | 2019-04-16 | Code ▽ | Embed ▽ | License: CC4-BY-NC-SA
8

A very simple tweetcart, but with the code expanded to make it easier to understand what's happening. Enjoy!

P#63598 2019-04-16 23:54

View Older Posts
Follow Lexaloffle:          
Generated 2024-03-29 11:50:49 | 0.109s | Q:84