This is fantastic! Thanks for the shoutout and we're very glad you enjoyed our Platformer tutorial! You really took it much farther on your own and that's what we love to see! Well done!
Yeah, until this vid I thought all games using the little Pico 8 engine were re referencing Celeste’s pico 8 mode. I didn’t know it was an entire programming language
There are several ways you can address the coffee pickup issue. The easiest to implement is a cool down timer. You set a timer to count down after a pickup and until that timer is zero, you can't pick up another coffee. This works great if you can ensure that the timer is long enough to remove the coffee after pickup, but short enough that should the player reach another coffee, they are able to pick it up without waiting. If you can't ensure that, then the next fix is an id system. Generate some random number for each coffee pickup and if that number is in your list of recent pickups, then you just ignore it. You don't have to make the numbers very large, in fact you could just label them in order of placement in the level, or since there is a finite number, just label them all and track them all, but for larger levels, this might impact performance. Reasonably, tracking the last 5 pickups and giving them an id modulus 5 should be easy and sufficient. Another method is to create triggers and use them on your collisions. Basically you check for collisions on a regular interval and if a collision is detected, then you check to see if a trigger is registered for the entities that have collided. If so, then you call that trigger and wait for that trigger to return before continuing. Here, inside the trigger is where you would update the jump count and remove the coffee. This sequential check can become a bottleneck, but it does address the multiple pickup problem. I'm not sure if the Pico8 system runs slower, or if it has full cpu usage, but if it doesn't have a slowdown issue, this is actually how most modern game systems work--i.e. loop through all active objects { if collision detected and registered trigger { fire trigger } }.Another way if the removal of an object might take some time is to use a collectible flag on each collectible and before doing anything on the collision, increment the jump counter and then immediately set the collectible flag to false. if collision and collectible is true { process collectible; set collectible = false; remove collectible; }. This option is best on systems where the main game thread is running on one process while your script might be in another or the collision script might have multiple instances created. It isn't ideal because you could still get multiple collisions at once, but it has two benefits in that you are quickly setting the flag to false, so hopefully before any other script accesses the shared boolean it is set, and by putting any cpu intensive (relative) processes to the end, you ensure that the check happens as fast as possible. Hope this helps. I'm sure there are other ways of doing it, but these are the most common I've seen done.
I need to try pico-8. I've never done anything that is really that limiting other than game jams. I think the limit on pico makes some really unique things.
Oh if you've been watching lots of devlogs it happens to everybody but they just don't show it so its easy to assume they're not problem solving at times even if they do.
By this time you obviously have figured out, but you can mimic collectables by simply checking if the player "collided" with the coffee (its position overlaps the position of the coffee by a certain amount), and then making coffee nil (then it will not be there anymore) and at the same time get more jumps putting 1 plus in the jump var.
With the coffee issue I would have personally set another variable like "canPickUp" and use an if statement to check if it's already been picked up before deletion. Though I'm not 100% sure if this would work.
Pro tip: Easy way to add a variable jump is to multiply your velocity by a value lower than 1 when you release the jump button and you have a positive y velocity. That way if you hold the button until you are at your jump apex then release you won't slow down when falling. And if you release it half up your jump you will slow down.
Regarding the end and the then, this is from Lua, and Lua was made long time ago in Brazilian university in order for them to coup with technological step back they were facing that time. Turns out Lua got pretty famous over the time and it is the only programming language that have gone that far worldwide from Brazilian community.
if your coffe is in the tileset you can just do local tilepos = {x=flr(playerpos.x/8), y=flr(playerpos.x/8),} if mget(tilepos.x, tilepos.y, coffee_number) then mset(tilepos.x, tilepos.y, background_number) coffee += 1 end
if its not too much trouble, could you make a small platforming engine, but using the character from robot 64? (yes its a roblox game, but NO. ITS NOT BAD.) thanks 4 reading this :)
If Pico-8 has a built in wait function then you can do something called a debounce. This is a Roblox debounce but this might not work. local debounce = false while wait() do if not debounce then debounce = true wait(1) debounce = false end end
When you draw anything to the screen, the order of what you draw in the code matters. Whatever is drawn later is drawn on top of what was drawn already. So the draw function usually has this order: clear screen with CLS() first, then MAP(), then Objects, then Player, then Foreground objects. You can think of the draw order as layers.
At 2:27 yes, that is awful, man you can't be doing if bool === true, elseif ==false Wait you were talking about the language syntax? Seriously though there's no point in doing if x==true, elseif ==false when you can do if x else Cool video though, pico-8 definitely looks like a cool engine
@@NStripleseven You can use 1, 2, 8, 14, and then either 15 or 7, or even both for a red color palette in PICO-8. Colors naturally look different when paired together. (0 is by default transparent so 1 is better/easier to use as a black)
I love how mind boggled and surprised he seems because of the then and end in if statements. Which are very common in some languages such as Pseudocode
Dude same! But for some reason, when I load the next level, the player stays frozen in midair. All I am doing is changing the player and cam position whenever the level number increments. It's basically a state machine. Did you run into this problem?
Benbonk Logic: I took a break by making an another game in a brand new engine where the colour palette triggers me
true
Lol
True
ya
@@BenBonk ik
This is fantastic! Thanks for the shoutout and we're very glad you enjoyed our Platformer tutorial! You really took it much farther on your own and that's what we love to see! Well done!
I tried making a pico 8 game and your tutorials really helped me get started, thank you!
"Pico-8 uses a modified version of Lua"
Roblox programmers: *A blessing from the lord!*
I kinda like Lua is very easy for game development, even valve is using it with Source 2
@@TheHENOOB i mean lua is kinda good and all, but i really want my fucking curly brackets
@@lememz you would hate python
@@ncik515 i mean, i literally can't read python but using nothing is better than having to write fucking "end" and "then"
@@lememz lua has curly brackets
Pico 8 seems very interesting. The first version of Celeste was made in it
Ye i know its even inside of celeste as a small minigame/easter egg in celestial resort
Thats why i clicked ob this video XD
Wow, i've didn't knew that!! I was playing the sequel of the game in pico-8, yesterday.
Yeah I though I heard about Pico 8 before.
Yeah, until this vid I thought all games using the little Pico 8 engine were re referencing Celeste’s pico 8 mode. I didn’t know it was an entire programming language
There are several ways you can address the coffee pickup issue. The easiest to implement is a cool down timer. You set a timer to count down after a pickup and until that timer is zero, you can't pick up another coffee. This works great if you can ensure that the timer is long enough to remove the coffee after pickup, but short enough that should the player reach another coffee, they are able to pick it up without waiting. If you can't ensure that, then the next fix is an id system. Generate some random number for each coffee pickup and if that number is in your list of recent pickups, then you just ignore it. You don't have to make the numbers very large, in fact you could just label them in order of placement in the level, or since there is a finite number, just label them all and track them all, but for larger levels, this might impact performance. Reasonably, tracking the last 5 pickups and giving them an id modulus 5 should be easy and sufficient. Another method is to create triggers and use them on your collisions. Basically you check for collisions on a regular interval and if a collision is detected, then you check to see if a trigger is registered for the entities that have collided. If so, then you call that trigger and wait for that trigger to return before continuing. Here, inside the trigger is where you would update the jump count and remove the coffee. This sequential check can become a bottleneck, but it does address the multiple pickup problem. I'm not sure if the Pico8 system runs slower, or if it has full cpu usage, but if it doesn't have a slowdown issue, this is actually how most modern game systems work--i.e. loop through all active objects { if collision detected and registered trigger { fire trigger } }.Another way if the removal of an object might take some time is to use a collectible flag on each collectible and before doing anything on the collision, increment the jump counter and then immediately set the collectible flag to false. if collision and collectible is true { process collectible; set collectible = false; remove collectible; }. This option is best on systems where the main game thread is running on one process while your script might be in another or the collision script might have multiple instances created. It isn't ideal because you could still get multiple collisions at once, but it has two benefits in that you are quickly setting the flag to false, so hopefully before any other script accesses the shared boolean it is set, and by putting any cpu intensive (relative) processes to the end, you ensure that the check happens as fast as possible. Hope this helps. I'm sure there are other ways of doing it, but these are the most common I've seen done.
wow lots of words my brain cant handle it
chunky
Beginning of the video: I wanted a break from Slimekeep, so I did this.
End of the video: I wanted to stop doing this and get back to Slimekeep.
Yup
Epic
Well it worked, ge did get his inspiration back
I need to try pico-8. I've never done anything that is really that limiting other than game jams. I think the limit on pico makes some really unique things.
I would recommend giving it a try. It was a nice challenge and interesting engine.
Man it’s cool. I’m going to try to teach my kids some of this stuff too.
Coming from a Lua programmer here, didn’t know that PICO-8 used Lua and I’m actually quite interested in trying it out.
u make me realize that im not the only game dev that spends days on seemingly simple problems
Oh if you've been watching lots of devlogs it happens to everybody but they just don't show it so its easy to assume they're not problem solving at times even if they do.
2:42 "WHAT THE FRICK PICO8" 😂🤣
Take my subscription!
Remember it doesn’t matter what u upload to us as long as u are happy doing / making it or interested in it
By this time you obviously have figured out, but you can mimic collectables by simply checking if the player "collided" with the coffee (its position overlaps the position of the coffee by a certain amount), and then making coffee nil (then it will not be there anymore) and at the same time get more jumps putting 1 plus in the jump var.
With the coffee issue I would have personally set another variable like "canPickUp" and use an if statement to check if it's already been picked up before deletion.
Though I'm not 100% sure if this would work.
"What is this syntax"
"Anyways this is just personal preference"
No uhh everyone agrees with you
"though some we're border line impossible or way to complex" he says to "use a red color pallet"
2:08 Request: Make a game in Scratch
This is the first Benbonk vid where I could actually recreate the game he is making
I remember playing Just One Boss in Pico-8
Pro tip:
Easy way to add a variable jump is to multiply your velocity by a value lower than 1 when you release the jump button and you have a positive y velocity.
That way if you hold the button until you are at your jump apex then release you won't slow down when falling. And if you release it half up your jump you will slow down.
:o thanks for the tip!
@@BenBonk No problem. I had the same issue and I almost died when I figured out it was 1 line of code. Rip me.
Regarding the end and the then, this is from Lua, and Lua was made long time ago in Brazilian university in order for them to coup with technological step back they were facing that time. Turns out Lua got pretty famous over the time and it is the only programming language that have gone that far worldwide from Brazilian community.
When he said the engine uses Lua I nearly exploded with excitement.
Until he said "What in the world are those-"
0:02 oh you are tired so you give your self a brea- CHALENGE?
Yeah makes sense
I've been using pico-8 for years, I'm glad to see it get some more popularity
if your coffe is in the tileset you can just do
local tilepos = {x=flr(playerpos.x/8), y=flr(playerpos.x/8),}
if mget(tilepos.x, tilepos.y, coffee_number) then
mset(tilepos.x, tilepos.y, background_number)
coffee += 1
end
Honestly ive been learning lua in robox for a while so changing to pico would be preaty easy and i challenge you to make a game in roblox
2:08
me: laughs in backpack
when arrow keys are broken and you need them to run
i tried the game, its super fun! but ,just an idea, why not use 'wsad' or 'arrow' keys?
you cant with pico-8, at least I think
go pico, yeah yeah, go pico, yo
0:16
-Create a simple PLATOFRMER
I see you discovered what really programming is haha
2:09 Me when I make gravity in Scratch: Ok. So I will make that vertical velocity is going into minus numbers and horizontal velocity stays the same
if its not too much trouble, could you make a small platforming engine, but using the character from robot 64? (yes its a roblox game, but NO. ITS NOT BAD.) thanks 4 reading this :)
0:16 platofrmer
Alternate title: Unity user learns real programming.
Unity best
If Pico-8 has a built in wait function then you can do something called a debounce. This is a Roblox debounce but this might not work.
local debounce = false
while wait() do
if not debounce then
debounce = true
wait(1)
debounce = false
end
end
Wow i remember playing pico 8 games on cool math games
Good work
Is there any way to use a NORMAL code editor for pico?
I believe so, yeah.
Great little compact game!!
Thanks!
GO PICO YEA GO PICO YEA GO PICO
This video was great! Imma play this later
Thanks! I hope it doesn't make you rage too much.
@@BenBonk Lets hope so ;)
lol if you know C# then LUA is pretty simple. Plus you really learn how the application works when you don't use the automatic tools in Unity.
The program?
Its pico from newgrounds
I was today years old when I found out Pico-8 was a game engine and not a game developer.
I cant figure out how to get the map() function to load a map behind the player. can someone help?
When you draw anything to the screen, the order of what you draw in the code matters.
Whatever is drawn later is drawn on top of what was drawn already. So the draw function usually has this order: clear screen with CLS() first, then MAP(), then Objects, then Player, then Foreground objects.
You can think of the draw order as layers.
OMG PICO-8 YES!
pretty cool
In lua the “end”s are kind of like the “;”s in C# (I code in roblox so I know this)
I just download other games and look at code to figure out whats wrong with mine
You should make something in scratch
You could make more "I made a" videos, since this videos got more views than normal.
At 2:27 yes, that is awful, man you can't be doing if bool === true, elseif ==false
Wait you were talking about the language syntax?
Seriously though there's no point in doing if x==true, elseif ==false when you can do if x else
Cool video though, pico-8 definitely looks like a cool engine
I was talking about the syntax btw, and that code is just a screenshot off the forums. Trust me I know to never do elseif == false.
I challenge to make a game in c++ without using any game engine
*sniff* I smell memory leaks, just use Rust which is c++ but superior in every way
I heva a score 45s I love your gema make more games plzzzzzzz!!!
Lua reminds me of visual basic as in just.............huh?
Ooooh if u can get a grip on lua uncan use defold. Nice IDE using lua
Me: (hears pico-8) Celeste pico-8?
If you jump just right, you used a jump.
i love to make levels/games but i cant program at all.
ive seen these pico games on coolmath lol
CELES-
Make a pixel game? or u can't do that?
Almost every game I make is a pixel game
Well I got absouletely destroyed
Roblox Dev Know how Lua be
My name is Ian! :0
Want to make a game using Lua? Use love2D. It's way better for that.
Can you make a 3d game? (or u cant do that)
YES
71.1 here ha take that
Make a game on scratch engine also pleasee
Anyone else find some of his videos to watch by going to his page and clicking on the one that's not green
Me :)
Mabey it's because I use python but that code looks normal
what are the chances, the game's name is intern ian, my name is also ian lol
where the friction man
platformer--- I mean
platofrmer
00:48
"some ideas were borderline impossible, or way too complex"
"use a red colour pallet"
Hmmmmm
IMPOSSIBLE
u cant do it with pico8's color palette
There's only like 1-2 red
@@NStripleseven You can use 1, 2, 8, 14, and then either 15 or 7, or even both for a red color palette in PICO-8. Colors naturally look different when paired together. (0 is by default transparent so 1 is better/easier to use as a black)
M Ramsey Huh. I didn't know that.
0:17
platofrmer
I am deeply sorry for making a spelling mistake
I can’t believe your almost at 10k already! Great job 👍! Been here since 2k 🎉
Thanks dude, getting really close to 10k now.
I like how even on games I don’t work with you on, you still use my game design concepts. Cool stuff!
True
1:33 i love how the background is just not lua at all
LUL, I know Lua and that definitely isn’t
Looks like Java maybe, lmao.
@@activediamond7894 yes definitely java
i love Pico-8. though, the code editor looks quite... zoomed in to say the least!
WERTYYYYYYYYY
Yeah it is super zoomed in, and kind of a pain. But I guess that is why there are tabs that can help you organize.
Our leader werty
You can use an external editor with it
Yeah I use vscode for pico-8. Also, tic-80 is very similar to pico-8 but has an extra wide text editor so there's that too
Make a game with scratch (or you can't do that?)
:o
Wrong channel
Hehe, stock images
yes very funi
How did I miss this. I love Pico-8. Watch the grid based game tutorial.
I remember there was a pico 8 thing in celeste
Yeah the developer made the pico 8 version for a game jam and because it made him continue it and make Celeste its in the game as a Easter egg
As a Lua programmer, this was the first ever video I could genuinely relate to.
Same
Benbonk: Pico
Everyone: oh ok
Me as a Chilean: hehe, nice
Me gusta el pico, wn
Wait.....No Green. Are you really BenBonk? 😂😂
ohNOOoO
I love Pico-8
go pico, go go pico yeah
once you start hearing the lip smack there's no going back
Scratch :D
I love how mind boggled and surprised he seems because of the then and end in if statements. Which are very common in some languages such as Pseudocode
And python
@@cartermasterson9829 Python doesn't have end or then, it uses : and whitespace
I smell 2019 Reddit UA-camr background music lol. Nice video, and btw, was the intern Ian thing a nod to h3?
Thanks, I didn't actually think about it like that, but I do love h3's old content.
I'm gonna make the entirety of week 3 in pico-8
Name the first song pico-8
Damn, pico-8 is such an underrated engine, maybe because ITS PAID! THATS WHY, I DONT HAVE MONEY
there is an open source TIC-80
Lua is p easy to learn tho
Whaaa we both followed the same tutorial and both made a nearly identical next level script... weird
Dude same! But for some reason, when I load the next level, the player stays frozen in midair. All I am doing is changing the player and cam position whenever the level number increments. It's basically a state machine. Did you run into this problem?
i really want to make a pico-8 game but making the code looks borderline impossible for me...
I got the hang of Lua in like 2 days soooo...
I thought pico 8 was just in celeste
Hay no one play your games
Lol 😆