
Let's Build a Platformer!

Let's Build a Platformer! is a course designed to not only teach anyone how to create a platformer game using GB Studio 4+, it acts as a introductory course for GB Studio itself.
Having put the question to those who are learning from the LBaP! course thus far, I have decided its best to give you the option to access lessons as I complete them rather than waiting to complete the entire paid version of the course in full. It's now up to you whether you pay now for early access or hold off until the course is completed, or pay somewhere in between when you feel its worth it.
Lessons 1 to 6 of the Let's Build a Platformer! course will remain free. However, from Lesson 7 onwards the course requires a one-time payment. This will give you access to all lessons that come out in future, so consider this an early access course for GB Studio for now. I'll do my best to keep releasing lessons as often as I can.
Check out the state of the game as of the most recent lesson by running the Let's Build a Platformer! game in your browser above.
Keyboard Controls:
D-pad >>> Arrow Keys
Start, Select >>> Enter, Shift
A, B >>> Z, X
Free Assets:
- 2 variable width fonts (see Lesson 4 Overview devlog)
- My take on the GBS sample projects platformer tileset (see Lesson 5 Overview devlog)
- A collection of variant emote bubbles (see Lesson 5 Overview devlog)
The following lesson plan is subject to change as it develops. To ensure this course remains relevant, I will do my best to update it as GB Studio changes over time.
A FULL COURSE OVERVIEW can be viewed here, detailing what concepts are covered in each lesson and acts as a glossary to help you find specific information more easily.
Available For Free (see "Download Demo" links below):
Lesson 1: Setting Up a Title Screen (Beginners PDF available in 🇬🇧 🇵🇹 🇪🇸)
Lesson 2: Preparing an Options Menu (Beginners PDF available in 🇬🇧 🇵🇹)
Lesson 3: Implementing and Tracking Options
Lesson 4: Implementing Cutsenes
Lesson 5: Player Animation States and the Platformer Scene
Lesson 6: The Platformer+ Plugin
Included in Early Access (so far):
Lesson 7: Implementing a HUD
Lesson 8: Updating the HUD
In Development:
Lesson 9: Creating a Shop
Lesson 10: Creating a Level Select Menu
Lesson 11: Creating Obstacles
Lesson 12: Creating Enemies
Lesson 13: Player Knockback
Lesson 14: Creating a Totals Screen
1. Download the latest version of GB Studio
2. Download each lesson as required.
3. Read each Lesson Overview by clicking on its respective Devlog. From Lesson 3 onwards, the Devlog Overviews are essential reading as they detail what has been added with each new lesson and will give you some direction before jumping into the project file.
4. If you are a beginner, I recommend following along with Lesson 1 and 2's PDF document to familiarize yourself with GB Studio. If you are familiar with GB Studio, feel free to skim through the PDF documents before downloading Lesson 3, you may find out something you didn't know!
5. From Lesson 3 onwards, the course has been restructured and does not include a PDF to follow along with. Each lesson instead comprises a .zip project that has been fully commented.
6. Free lessons include an accompanying "Lesson Overview Devlog" that serves to introduce each lesson. Click on the Devlog links below to view them. From Lesson 7, introductory Lesson Overviews can be found within each lesson .zip file as a PDF.
7. Feel free to share feedback regarding the lessons in the comment section below or request topics you would like me to cover in greater detail.
Happy coding!
- Tom (Gumpy Function)
Let’s Build a Platformer! course created by Tom Lockwood (Gumpy Function)
Updated | 2 hours ago |
Status | Released |
Platforms | HTML5 |
Rating | Rated 5.0 out of 5 stars (7 total ratings) |
Author | Gumpy Function |
Genre | Educational |
Made with | GB Studio |
Tags | Game Boy, Game Boy ROM, gbstudio, Tutorial |
Purchase
In order to download this game you must purchase it at or above the minimum price of $20 USD. You will get access to the following files:
Download demo
Development log
- LBaP! Lesson 7 & 8 Update1 day ago
- LBaP! An Important Update19 days ago
- LBaP! Lesson 6 Overview70 days ago
- LBaP! Translations & Additional "Follow-Along" Docs74 days ago
- LBaP! Lesson 5 OverviewOct 26, 2024
- LBaP! Lesson 4 OverviewOct 17, 2024
- LBaP! Lesson 3 OverviewOct 10, 2024
- LBaP! Lesson 2 OverviewSep 26, 2024
Comments
Log in with itch.io to leave a comment.
Hi, as I tried to implement the character dash, but the camera jerks annoyingly, in addition I can’t make it more like the dash in the demo
Hey there, the camera will follow the player as the dash occurs, which can be tweaked to your liking by editing some of the dash related Platformer+ engine variables in the Project Settings Menu.
Here are the dash settings I used in the project (check Lesson 6s project to see the others, if you like).
Dash Input: Double Tap
Dash Style: Ground
Dash Momentum: None
Dash Through...: Nothing
Dash Distance: 600
Dash Time (frames): 10
Dash Recharge Time: 10
Dash Camera Deadzone: 4
You could look into changing the 'Dash Time' (in frames) setting, in particular. Increasing that will slow down the time it takes for your player character to travel from start of dash to end of dash and reduce the erratic camera movement.
Here are Hauntologys P+ Docs if you need any more info:
https://github.com/becomingplural/GBS_PlatformerPlus/tree/main/docs
Hi, Tom. How do I implement destroying enemies using P+ dashing state?
Hey there,
There are a couple of ways to do this.
You could set a global variable to true at the start of the dash state and then false at the end using the 'Attach Script to P+ State' event. Then check that variable in the enemies 'On Hit' script. If true, then destroy the enemy, else player is hurt.
There is also the 'Store P+ State in Variable' event in the P+ plugin. That checks what state the player is in and stores it in a variable. You could use that event within the enemies 'On Hit' script. Directly after that event, you check if the stored variable is equal to the dashes value (the 'Store P+ State in Variable' event will tell what value is associated to what state) and run a script if true, else player is hurt. If you need to check for multiple states at once, you can use an 'If Math Expression' event.
I'll add this kind of functionality to the game in an upcoming lesson, in fact. I'll be adding little mini-missions to some of the houses in Peas home town to explore these kinds of mechanics and discuss how to effectively tutorialize mechanics in games.
With the latest build (lesson 6) there’s a noticable lag in the movement in the platformer section. I both tested it in the browser and with the BGB emulator. Is this just how it is with platformers in DMG mode (build with GB Studio and Platformer+) or may have something crept in the latest build that causes that lag (e.g. an unnecessary, costly check in an “on update” event) and was forgotten to comment out?! I compiled the project in Colour Mode and that’s when the simulated CPU can handle everything fine – but it’d be cool if DMG mode needs not to be abandoned for a great-feeling platformer. That being said, excellent new lesson – already learned plenty from your documentation! Thank you so much!
Whoops, you tackle that problem in the final paragraph of the Overview! Alright. So COLOR MODE it will be in forthcoming installments – got it!
All good, great to hear the feedback. I thought about enabling it for this lesson because the frame rate dips are pretty bad. But then I figure its a good opportunity to see what happens when you start adding all these plugins and features to a game in DMG mode and hold off on enabling it for learning purposes.
I'll be discussing my thoughts about DMG mode in relation to GBS platformer design in the next lesson but essentially; making a good platformer in GBS effectively requires the GBC as the P+ engine is a must IMO. While it does provide a good amount of scope and depth for designers, it is at the cost of optimized code.
When I started making Feed IT Souls for GB Compo 23, my original self-imposed challenge was to attempt to create a good platformer that runs smoothly in DMG mode within 6 weeks. By the end of week 1, I realized it would be impossible for me to implement mechanics that would make the game unique/interesting and have it run well. This is why Feed IT Souls uses a single palette - the art was made with DMG in mind and in jam conditions, I wasn't about to redo it all for color mode, instead opting to give the player unlockable palettes).
so i do not want gb studio to be my main game engine but i want catel albastru joc video on my 3ds so i chose that
That cutscene is awesome! Can't wait to get stuck in!
so ok i did not play the game and i want to compare it to another game engine, gdevelop 5. first why would you want to make a game on a game boy game. i know its cool that its possible but why... oh wait its named gb studio 4. second i tried the web mode and it freezes with 3 diffrent colored dots on the bottom right when i start the game. wait, is it loading ?. third, does it actually teach you how to make a game boy game or is it just for fun
Hey there, you can read the description above for all the details. The course is currently in development.
Hi, Gumpy. I need help with something.
Yes, what can I help you with?
Well, I'm making a Sonic fangame and I'm having trouble implementing the duck/crouch feature.
Here's the player's normal collision box;
When Sonic is crouched he should have a collision box of 16x16;
I've tried to set a different player sprite by attaching a script to the down button, it didn't work. That's why I came to you for help. Any idea of what I'm doing wrong?
You can set a new hitbox using the 'Set Actor Collision Bounding Box' event when sonic is set to his crouching state.
The GB Studio Discord is really good for fast responses to these types of questions, I'd join the discord if you haven't already.
I don't seem to have that event, is it in a plug-in?
You may not be using the most recent version of GB Studio? It's a new event that is not currently listed in the GBS docs.
Hello Tom! Would you be interested in translating the course into other languages? I'm sure plenty of non-English-speaking #gamedevs would be interested in such a valuable resource. Please let me know what you think. Cheers!!!
Hey there, feel free to contact me on discord to discuss.
Hello! Thank you so much for taking the time to make this course. I greatly appreciate it! I wanted to mention that you can get stuck on the options menu in the beginning of this game/course.
Specifically, if you keep pressing down (past Credits), the cursor will keep going down to what seems indefinitely. Additionally, I cannot go back up normally. If I press down too many times and want to go up, it does not let me. It immediately sends the cursor next to "Credits" and stays there. I had to reload the page again to start over.
Indeed, lesson 3 will complete the Options menu. The build above is the state of the Game at the end of Lesson 2.
I hope that the player movement isn’t some complex state machine.
We will be using the Platformer Plus plugin and manipulating the states within in it. It is a state machine, but we won't need to touch any engine code to create nice platformer movement.
This tutorial will really teach everything on super dasalo land??? Because there are some stuff in that game that i would LOVE to learn how to do n.n
Pretty much, yes. Let me know what you want to learn.
related to platforms like everything, the eggs that you can step but then they break and you fall.... the pissed floor that lets you slip, the "dash" and the wall slide, that game is full of great stuff
No problem.
I will be sharing how to create a breakable platform in the 'creating obstacles' lesson. I can also include the slippery puddles mechanic in that lesson, too. It will be a good example of using triggers to create unique mechanics, in fact.
There will be a very in-depth lesson on the Platformer Plus states (such as dashing) and how to tweak them to make your game more unique. The Player Move-set will likely end up being covered over multiple lessons because there is so much going on with that element of game design.
wow amazing, i'll help me a lot with my proyects n_n thanks a lot man you're priceless
Donated for Lesson #1! Hopefully I'll keep up the donations per lesson!
Thanks so much, really appreciate the support.
Do you have a timeline in mind for the next 2?
I finished writing the second lesson this evening. I will spend a day or so polishing it before I release it.
I have built the game up to lesson 4 but planned well beyond that. And have started working on gathering screenshots and writing up a draft for lesson 3.
So what I will do is release lesson 2 very soon, lesson 3 likely next week.
It's taken me around 30 hours to complete lesson 2 (including creating the assets and building the game in a way that will suit the lessons) though.
Depending on the size of each lesson and how detailed I go into various aspects of game development, the course may take quite a few months to complete in full.
But I will attempt to make a big push to get the earlier lessons out asap. That way, we can get beyond the basics and move into the more meatier aspects of creating a platformer sooner rather than later.
That is amazing. I’m really excited for the more meatier parts. This is why I asked in the first place. I really appreciate your time and work you’re pouring into this.
Don't push yourself to get each lesson out though... Bigger in-depth lessons spaced out are far more rewarding than having lots of them available which contain errors or are incomplete. Can't wait to read (and follow along) the lot!
I love your platformers. I'm thrilled for this.
Thank you, bud. I'm excited to help you learn.
Can't wait to get my teeth into this series and hopefully learn some good practices!
Super Dassal Land was a feast of quality platform tricks and implementation. Hope this shows off some of those principles!!
Cheers! I'll cover more or less everything that was implemented in Super Dassalo Land, yep.
Merci pour cette initiative !
J'espère avoir le temps dans les prochains mois de suivre votre cours car j'adorerais faire un petit jeu de plateforme sur Gameboy 🙂
Bonne journée !
Pleasure. I'll do my best to release lessons quickly. Certainly for the first few lessons so beginners can get some momentum going as they learn.
the rom playing in the web browser works? i cannot pass the options menu XD
It does, the browser version represents the project up to the most recently released lesson. At this point, lesson 1.
As the course is developed and subsequent lessons are released, the browser game will be updated accordingly.
so.... up to the title screen? XD
Correct - lesson 1.