Currently working on a 2D platformer (Devlog)

Hey guys! I’ve been gone for 2 weeks now, and the reason for that is because I’m currently working on a 2D platformer in Godot 4.4 titled “Juicy the Orange”.

Remember Owlet and the Biscuit Tower? The FIRST ever game I ever made in Godot 4.4, and published to the world on itch.io for the Brackeys Game Jam 2025.2? Welp, I decided to take my newly found Godot skills and take it to the next level with a full 2D retro platformer.

In the game, you play as a little orange named Juicy, who can (currently, until I add more actions to his moveset) walk, jump, hover, and roll to get a quick burst of speed. I was actually pretty surprised that I got everything under control quickly throughout the weeks, like how to make Juicy move around, collect coins, reach the goal, how to make a moving platform, how to set Z-orders, how to set one-way collisions, etc.

This is really a HUGE learning experience for me, as, fun fact, I actually been wanted to do this since while I was using GDevelop at the time, before I left the engine and switched over to Godot 4.4. You see, I took a crack at multiple attempts at me wanting to use GrafxKid’s orange character for a 2D action platformer titled “Juicy the Orange”, and since I was so used to GDevelop at the time with its visual scripting language, I really desperately wanted to build a game on an engine I knew of, but all of my ideas were that I felt were too ambitious, and I’m going to be completely honest with you, I wrote so many bizarre stories for the game, because I had no idea what I was doing in terms of what the direction for this game was. I was burned out, couldn’t figure out what I was doing wrong, and I actually felt like I was forcing myself to make THAT game and release it to the world, and later on, I was making yet ANOTHER Juicy the Orange, I started to feel reluctant with GDevelop, and eventually, I decided that it just wasn’t the engine for me. And long story short, I quitted GDevelop and switched over to Godot 4, where I’ll be making Juicy the Orange there instead of GDevelop.

But here’s the thing, GDevelop actually taught me SO MUCH about the first steps of game development, and even after those failed attempts at making a 2D action platformer, I realized that I knew what the basic mechanics of platformer movement were for acceleration and friction, shooting bullets, and dashing because GDevelop provided me with a long list of built-in behaviors that I could customize it to my needs, and I decided to carry those skills over to Godot 4, and it’s currently and HUGELY paying off for me.

But, back on track with the game, for Juicy’s mechanics, I think my favorite move for Juicy is the rolling move, and here’s how it works: When the player presses and holds down the C key to roll, Juicy will do a “Roll Start” animation and will speed up, and the faster the “Roll Start” animation, the farther the roll will go, and the speed is indicated by a “Dash Meter” at the bottom right of the screen. (For example, if the Dash Meter is at Red at the start, then the roll will go at a short distance, and if the Dash Meter is at Green at its max, then the roll will go at a very far distance), and how I achieved the Dash Meter uniquely is that get this: I didn’t add any custom functions or make any changes to the script. All I did was grab a meter sprite from an asset pack on itch.io called “Basic Pixel Health Bar and Scroll bar” by BDragon1727 (Here’s the link: Basic Pixel Health bar and Scroll bar by BDragon1727), grabbed the 5 frames of the meter sprite, placed them into an AnimatedSprite2D child node under the CanvasLayer node (under the name “DashMeter”, so that it follows the player at all times), and set the FPS to 2.0, so that it looks like the Dash Meter is charging up, and also for the Dash Meter charging up animation to sync up with Juicy’s “Roll Start” animation speeding up. Oh, and I also added a Dash Meter Reset animation to the AnimatedSprite2D child node, and all I did was reverse the animation and set the FPS to 8.0.

Also, eventually, I originally wanted Juicy to implement a Kick Attack, since GrafxKid’s orange character already had one made along with the rest of its animations, but in the past with GDevelop, I had trouble implementing a proper melee attack, with the player attack attached to the player and the enemy and the collisions don’t always work as expected, or maybe it’s my personal opinion, and that I don’t really like melee attacks. So, the next thing I’ll be adding for Juicy’s main attack is spitting orange seeds at enemies to defeat them alongside his roll attack (The latter which I will implement between rolling and enemies in the future).

Plus, I feel like it would make more sense, because when you really think about it, Juicy is an orange, and oranges have seeds inside of them, so technically speaking, when Juicy “spits out” the orange seeds, he’s basically spitting his seeds out to defeat enemies, which really goes for a more “logical” attack right here.

Oh, and I will also be using a BUNCH of GrafxKid assets, plus other assets to give more versatility (like assets from Pixel Frog, for example, and also to make sure that the assets match up with the style I’m going for and not a clustered mess of various assets across the web), because from looking at games across the web, I can tell that various smaller game devs have used assets from GrafxKid, Pixel Frog, etc., and that’s what this game is based off of: Pre-made assets bundled together to make a complete and fun game. Oh, and also, depending on what I need to implement and work with, some assets will be made/modified by me, and also, I also gathered a BUNCH of NES and SNES-like music tracks for use in Juicy the Orange, and trust me, it seriously ROCKS HARD. The reason why I went with pre-made music asset packs is because I’m not really good at making music myself, so if you have any useful video game music tutorials you can recommend to me, any other music asset packs to fit with what game I’m making, or any freelance composers you can recommend, please feel free to recommend and ask.

Oh, and also, when it comes to pixel art, I saw a TON of GrafxKid’s artwork, and in reality, that’s what actually motivated me to get good at pixel art (along with Pixel Overload and Goodgis), so that I can actually improve on not only as a pixel artist, but as a game dev as a whole, and now, thanks to GrafxKid at the very start, I got a whole new other hobby that I actually like: PIXEL ART!!!

I got a WHOLE bunch of stuff I want to add for Juicy the Orange, including all the basic stuff like a health bar, other collectibles beside coins, defeating enemies with various attacks, to the more complex stuff like level design, saving progress, and boss fights.

Oh, and also also, I’m not going to post Juicy the Orange on itch.io when I’m completely finished with the game (Unless when I release it, I’ll probably want to add more features to the game.) Instead, I’ll release a Demo version of the game on itch.io, containing only the first world, and will be playable on either the web browser or as a downloadable game, and THEN, when I finish the game, I’ll release the full, completed version as a downloadable game only for Microsoft Windows, macOS, and Linux, for people who have different platforms will be able to play my game no matter what platform they use (And MAYBE iOS and Android once I figure out on how to implement mobile controls for Juicy the Orange, but I’ll have to copy my project as a mobile port of the game). Also, when I release the full, completed version of Juicy the Orange, I’m still deciding on whether I should make it free or price it at a good price.

I REALLY hope you can support and like my game (and maybe consider following me on itch.io to motivate me to keep working on my game, kind of like a Kickstarter campaign), because I want this game to become a reality, and I’m hoping I’ll get the Demo version done by the end of the year, since I’m still learning on how to use Godot 4.4. I’ll continue to update my progress on the game as time goes on. If you have literally any comments, feedback or questions to ask me on this devlog on the official Godot Forum, please, please, PLEASE, feel free to share anything you want to me, because it really means a lot.

Here’s some snapshots I took of the current progress of Juicy the Orange, plus some photos I found of GrafxKid’s works (All credit of the artwork goes to him):







8 Likes

Looks awesome. I enjoyed reading your DevLog. I’d recommend you create a page on itch.io for your game, put up screenshots, and put your devlogs there. You’re likely to find more players on itch and maybe you can get some excitement going for your game.

I’ve been creating theme songs for my game jam games using Suno. Despite that, I’m a big fan of supporting creators, and if you’re looking for great music I recommend both ELV Games on itch.io and Ovani Sound. I have almost all of their collective music. It’s all really good. I do recommend waiting for sales though. Their music is expensive otherwise.

I like Suno because I can create music that I can legally use in my games. However I’ve been sticking to making songs with lyrics using it. It’s also fun just to make songs, like all the Ad jingles I made for Fallout Pre-War packaged food and meds.

4 Likes

Hey @dragonforge-dev

I already made a devlog on itch.io as a post (Here’s the link: Juicy the Orange Devlog - itch.io), and how do you actually use Suno?

1 Like

You just literally type in what you want and it makes something up. TBH it’s kind hard to describe - you just have to try it. You might try something like “SNES-style instrumental track for a platformer game with a silly cartoon orange as the main character. Music that rocks hard and keeps the adrenaline pumping but is also catchy.” Which is what I typed in and got these two songs:

Orange Rush
Orange Rush 2

Suno described them as:

rock, chiptune-driven instrumental with punchy square waves, and syncopated drum patterns, add melodic hooks and a dynamic bassline to create a sense of motion and excitement, incorporate playful staccato accents and unexpected pauses for a whimsical touch, keep it adrenaline-fueled but fun, rapid arpeggios, snes-style, high-energy

So you could feed that in to make your own. If you make your own, you can download them as mp3’s and use them in your game.

2 Likes

So it’s basically an AI music generator that you can edit yourself?

Now, me personally @dragonforge-dev, I never use any sort of AI when I’m making a game, whether it’s cover art, music, assets, etc., because I feel like I don’t actually put in the work for any of my games, and if I was going to use assets that are not created from scratch, then I’ll get a pre-made asset pack from itch.io, craftpix.net, etc.

Plus, across Steam and the Nintendo Switch eShop, I find it really annoying just looking at all of the low-quality AI shovelware that bombards the storefront (Well, mostly the Nintendo Switch eShop, but still), and it just really irks me how so many devs are making the same exact game over and over again but with a different AI-generated cover art every single time, and I feel that if I do the same thing (For the cover art), that will just steer away any customers looking to buy a game.

So no, I won’t use Suno to make music, but thanks for the info and advice, though! I already have my music already gathered from different sources on itch.io.

2 Likes

Yesterday, in my Test Room (where I will test multiple different ideas and mechanics and see how they work before implementing them into my game, and is labeled “Test World”), I was working on the Health Bar system, and how it works is pretty straightforward: You have three hearts, get hit by an enemy → lose a heart, fall off the level → instant death, lose all of your hearts → lose one life, lose all of your lives → game over. Simple and straight-to-the-point.

Well, last night, when I was going to go back to the Test World, I found an error message that said “Load failed due to missing dependencies”, and when I went over and clicked on the “Fix Dependencies” button", I saw that the dependencies were the Test World scene, and the Hearts and Lives.png asset being duplicated 4 times. I had no idea what I was supposed to do in this situation, so I said: “You know what, I’ll just make the first level already, and make that my test room in the meantime”. Besides, I already made most of my stuff in separate scenes, so I can just implement them into the first level of the game.

Now, I’m currently working on building the first level of the game, and just to be extra careful, I made an extra copy of the first level, so that when, in some shape or form, the first level gets corrupted or glitched, I’ll just move on and make use of the copy I made.

For Juicy’s moveset, I already have walking, jumping, rolling, and hovering covered, and hovering took me a really long time to figure out, but in the end, basically the code I did was: if not is_on_floor(): if Input.is_action_pressed("Jump") and velocity.y > 0 and not rolling: gliding = true velocity.y += GLIDE_GRAVITY * delta animated_sprite_2d.play("Juicy Leaf Helicopter") else: gliding = false velocity.y += GRAVITY * delta if velocity.y > 0 and not dashing: animated_sprite_2d.play("Juicy Fall") else: gliding = false
It was actually really simple and straightforward, and previously, I was having trouble implementing coin collecting and enemy movement, but like I said before, I watched a BUNCH of Godot 4 tutorials regarding to 2D platforming movement, including Brackeys’ How to Make a Video Game - Godot Beginner Tutorial, where it showed me step by step on how to collect coins and how to make an enemy move left and right, and for the coins, I edited it a bit to suit my needs: ` extends Area2D

@onready var animation_player = $AnimatedSprite2D

func _on_body_entered(body: CharacterBody2D) → void:
if body.name == “Juicy”:
print(“+1 coin”)
var counter = get_tree().current_scene.get_node(“CoinCounter”)
if counter:
counter.add_coin()
else:
print(“CoinCounter node not found!”)
$AnimatedSprite2D.play(“Coin Sparkle”)
$PickupSound.play()

func _on_animated_sprite_2d_animation_finished() → void:
queue_free()

Later today, I’m hoping that I’ll get the orange seed attack and the health bar done by tomorrow, and I really hope more and more people acknowledge my devlog and see how much progress I’ve made jumping from GDevelop to Godot 4 in just a couple of weeks.

Here’s some screenshots of my current progress (Plus the error I encountered with the Test World):



1 Like

This is the way.

Using AI of any kind takes away the discovery of the artform. With my artform being game design and programming, pretty much what makes the game a game.

It’s really fun to try something new and fail. Or see how a new concept plays out. And being able to develop your own game design lense is a must.

Your “lense” is essentially intuition that’ll allow you to determine what works and what doesn’t for your own game and every single other game in existence. I’ve grown mine for the past 5 years and now I understand/despise others’ game design choices in a heartbeat.

This “lense” isn’t really something you or I can prove, because it’s something that’s felt and perceived within. But I can FEEL it and it’s my calling.

Plus, there’s no better way to learn how to develop a game than to do it and fail. You WILL experience a LOT of dark times, but you will come out of the end of them brighter than ever! Trust me.

2 Likes

Wow, Suno looks amazing! And your tracks are brilliant! Have added Suno to my folder of tools to try out as soon as I get around to sound for my current game!

Thank you for sharing such an interesting tool!

PS I just read a few posts above that seem negative to Suno. That’s fine of course, sorry, I didn’t mean to contradict anyone directly. I personally have no problem using AI for anything, as long as you understand its limitations etc. I am old enough to recall people thinking calculators were cheating in maths classes. As if maths is just about doing number crunching. Anyway, sorry, no offence meant to anyone with differing opinions, I just thought Suno looked amazing!

1 Like

Like all new technology, AI LLMs will be accepted by some and rejected by others. My brother is a musician, and it took him a couple months before he would even try Suno with me. He immediately loved it, and was able to get more out of it than I am because of his experience. He knows how to direct it. I personally think that AI teaching people things is a bad idea, and I’ve posted about that ad-nauseum here on this forum. But as a tool to enhance one’s workflow I believe it’s here to stay and not using it will ultimately affect my ability to make money and support my family.

I get where @Joshington and @Demetrius_Dixon are coming from. I have bought ELV Games’ music pack and SFX pack on itch.io, and every time they release a new song pack, I pay another dollar or two for it - even though I can get it for free. I literally own about 99% of Ovani Sound’s library - music , voice packs, and sound effects. I have a yearly subscription to Craftpix and use a lot of their stuff when I can. I have a subscription to KayKit’s Patreon because I think their models are amazing. I believe that supporting artists of all stripes is very important.

As I mentioned above, I only use Suno music for game jam games, which means that I’m not selling them. It also means that I only use them in game jams that allow them, and I clearly communicate the usage. In fact I wrote at length about my thoughts on using AI music in games in one of my own devlogs: Post Mortem: Eternal Echoes - Eternal Echoes by Dragonforge Development

I haven’t yet decided if I will use AI-created assets in a commercial game - but probably not for my first outing. Which is why I personally have purchased dozens of courses on using Blender for game development from GameDev.tv and PacktPub. As well as why I supported music artists when I could.

Making everything from scratch is a great learning experience. But I’m not interested in making the next Stardew Valley and hand-crafting everything in the game.

As for the thought that one didn’t do the work… I’ll tell you that getting what you want out of an LLM is work - it’s just a different kind of work. I am a big fan of programming everything from scratch. When I started making games I was a kid and I was programming in BASIC. Modern languages make it so I don’t have to write my own graphics engine. In fact, there’s a lot that Godot does for me. One of the first games I distributed to others in 1999 was made in C++ and used the Direct-X drivers. I was also using Unreal 1 to edit UT levels then. I played with Unity when it came out in 2005, and Unreal when it was released for making games in 2009. Both of them were leaps forward in the stuff I didn’t have to deal with.

There are ethical considerations with LLM’s usage of copyrighted work to be sure, so it is slightly different than other technological leaps in that respect. But the 5 biggest companies to invest, have alone spent 1 trillion dollars on AI in the last three years. It’s not going anywhere. So personally, I think it’s important to learn how to use such tools ethically.

1 Like

@dragonforge-dev I don’t expect you to make the next Stardew Valley at all, because with whatever assets you use is perfectly fine with me. I completely get that AI is a last-resort option for everyone, including game jam games. For me, I just think it’s off-putting for me having to use something that I didn’t make, including music.

When I’m not a game dev at the moment, I’m a pixel artist at best, and I usually just create my own assets in Piskel (not Aseprite), whether I decide to use them or not, so I really don’t mind if I want to make my own assets than to ask AI to make them for me.

2 Likes

But anyways, back on track, I’m halfway into completing the first section of Juicy the Orange. Basically, what this level is about is that this first level will teach the player on what to expect throughout the game, including Juicy’s hovering ability, Juicy’s rolling ability, Juicy’s spitting attack (When I implement the orange seed attack, but basically, how it works is that there is a flying target that Juicy must use his orange seed spit attack to knock the target :bullseye: down and open the locked gate :locked:. Once done, the locked gate will open :unlocked:, and Juicy will continue to advance through the stage.)

I’ll also eventually implement multiple different collectibles in the game, including JUICY letters and “Juice Sprites”.

Let’s start off with the JUICY letters, which work very similarly to the KONG letters from Donkey Kong Country. These letters are scattered and hidden across each level, and upon collecting all of them and reaching the end goal will result in a 1-up. (I’m not really sure what the main reward should be, but y’all can help me decide in the comments.)

Next are the “Juice Sprites”. Juice Sprites are gem-shaped oranges that are actually required on progressing through the game (More specifically, accessing the boss stage.) Basically, there are 3 Juice Sprites scattered around each level in a world, and if you get a specific number of Juice Sprites required to open the boss gate (Let’s say, 3 Juice Sprites), then the amount of Juice Sprites in total goes to the number of Juice Sprites required to enter to boss arena.

This is something I’ll implement later on, but I’m eventually going to implement a much larger hub world known as “GrafxCity” (named after GrafxKid). Basically, it’s an open hub city to where you can play around with and talk to NPCs, and also a place to where you can practice and fully utilize your moveset without the hassle of getting to Point A to Point B. I’m also going to include an indoor shop known as “GrafxMart” (also named after GrafxKid). Basically, it’s a little shop to where you can purchase extra lives :tangerine:, extra health :heart:, and upgrades to Juicy’s moveset by paying with coins. But with the upgrade system, it’s a little different than you would have expected. You see, you have to earn a set number of coins in order to purchase an upgrade. Sounds simple enough, but when you get the upgrade, you only can keep one upgrade at a time, so if you want to choose another upgrade, you’ll have to switch them out every time, but fortunately, if that’s too tedious, I’m eventually going to add an upgrade supplier, which shows up in every world for all of your upgrades on standby, so you don’t need to keep going back to GrafxMart every time you want to switch out an upgrade.

To not overwhelm myself when making this game, I’m going to create one world at a time instead of altogether, then I’ll take a break and chill for a while, and then after that, I’ll work on the next world, rinse and repeat until I’m finished with the game.

For the level design, I really strive in aiming for creativity and user experience than just a straightforward platforming level, because there’s going to be a bunch of sections in the first level where the game requires the player to utilize either Juicy’s orange seed attack, Juicy’s rolling ability, or Juicy’s hovering ability.

Oh, and why I chose hub worlds instead of straightforward world maps akin to Super Mario Bros. 3/Super Mario World is because to not only give the player a sense of freedom and for a way to have the player practice with Juicy’s abilities before they get thrown into the game, but also, I got inspired by 3D platformer hub worlds like in Super Mario 64 or New Super Lucky’s Tale, where the player can toy around in the hub world and has the option to come or go back to the hub world, and also such as in Spawn in the hub world → Go to a level → Beat a level → Come back to the hub world → Go to the next level, so on, so forth.

Here’s a screenshot of my current progress on the first section of the first level:





1 Like

Also, I’m also currently working on adding controller support to the game, because I heard from some people online that they only use gamepads to play their games on PC. So, that’s exactly what I did, and the results were… not super great, to say the least. I mean, I already setted up all of the custom inputs for Moving, Jumping, Spitting Orange Seeds, Rolling, and Crouching, so all I did was add in controller inputs to my Input Map, and as soon as I plugged in the cord to my 8BitDo Ultimate C Nintendo Switch Controller to my laptop, Juicy started rolling everywhere and glitching out, and when I unplugged the controller, Juicy was back to normal.

Here’s a screenshot for my added controller inputs:

Just wanted to ask, do I make separate custom inputs for the controller inputs, or keep them all the same? Thanks a million in advance if you help me!

Wait @dragonforge-dev You said I can make a page on itch.io? Could you show me how to do that? Just so you know, I already made a post about my Juicy the Orange devlog, but should I delete that one and make a page for Juicy the Orange, THEN make a devlog there?

To be honest with you, I didn’t actually read the whole message, and all I read was “Make a devlog on itch.io”, so that’s what I did, but can I make a itch.io page for Juicy the Orange without releasing the demo yet?

Yes. So what I was saying is you can make a page, but not publish it. Then you can publish your DevLogs there. Then I believe you can link your devlogs on your itch profile page without publishing the game itself. Then when you publish the demo, all your DevLogs will be there and you can continue creating new logs as you iterate them.

1 Like

Thanks @dragonforge-dev

I’ll let y’all know when the first part of my devlog is done, so that y’all can view it. I’m basically transferring oer this entire devlog to itch.io, so that I can have people view and comment on not only my devlog on the Godot Forum, but on itch.io as well.

Also, I was planning to hire a digital artist for the itch.io cover art of my game, so that my game would get more traction, but 2 things: 1. I’m not really that great of a digital artist myself when it comes to extensive detail, and 2. I don’t know where to find anyone who’s willing to do the cover art for Juicy the Orange.

So, could y’all recommend some free digital artists I can meet up with? Thanks in advance!

1 Like

Look on fiverr.com - they aren’t free, but artists deserve to get paid for their work. You will find plenty of people who work cheap because exchange rates make it worth it to them.

@dragonforge-dev I completely understand that artists deserve their money and time, but I haven’t got a budget at all.

But, the way i usually make cover art for my games is actually pretty simple. Basically, I comprise a bucnh of assets from the game I made, add in a bunch of artisitc touches, and make that my video game cover art.

It’s pretty much the exact same method I used when making the cover art for Owlet and the Biscuit Tower. Plus, I usually use Microsoft Paint for my editing software, though I consider using other software for editing later in the future.

Thanks for recommending me fiverr, though @dragonforge-dev !

Also, what do y’all think about my current progress of the first section of the first level?

1 Like

I think it’s important to remember a few key things in level design:

  1. Make sure that the player has more than one chance to try out each new movement technique more than once before moving on to a new one.
  2. Make sure to explain each ability so that people know when to use them.
1 Like

With the first one @dragonforge-dev I already got that covered. I mean, this IS the first level of the game, so it definently makes more sense to ease the player in before they experience the later levels. The 2nd one, I’m going to put up signs for the player to read on what they have to do. Once they get enough practice in the first section of the first level, and move on to the next section of the level, they can take what they’ve learned and use Juicy’s moveset in fun, creative ways to fit how they like to play the game.

Also, a quick reminder, this is only a draft of what the first section of the first level is going to be, but thanks so much for the advice though!

1 Like