Skip to main content

On Sale: GamesAssetsToolsTabletopComics
Indie game storeFree gamesFun gamesHorror games
Game developmentAssetsComics
SalesBundles
Jobs
TagsGame Engines

I learned a lot - how about you?

A topic by ximossi created Jul 21, 2025 Views: 374 Replies: 12
Viewing posts 1 to 8

Heja! This was my first game jam and also my first published game so far. Doing that in two days leaves me with a proud feeling - not of the game itself, but of managing to produce something in such a short time. I started coding just a few months ago and did not think it possible to get into it so quickly. And I bet this is true for a few people around here.

So, my question is: what did you learn from this?

Here are a few of my thoughts right now, while going through my (Godot) project files:

  • Controls are about feeling. I have spent a lot of time tweaking little numbers on my control mechanics and it was worth it. My main control is a “pull” movement with the mouse that calculates from drag distance and angle. There is a threshold as well as a progressive effect to it. At first I kind of winged the numbers but quickly realized I had fine-tune them. So I put them all in variables, added some slider and a quick debug panel and played the game while adjusting the values during runtime. That was very helpful to actually feel the difference between various values!

  • Thinking in Globals: in the beginning I had a lot of variables/data in individual scenes to manage all of it in understandable “chunks”. After a few hours I realized, that I need to access a lot of data in other parts of the game, too. One question I started asking myself was: Is this thing here important to others? If so, I would put it in a global singleton and use that. I do this not only for individual variables, but for whole scenes, too. I’ve got a singleton keeping track of important scenes and giving them shortcuts, so I can always just address those. Need the space gun? -> Global.spacegun! Need the lower HUD bar? Global.buildHUD! This brings me to the next one…

  • Separation of interest is not a joke. I mean, the concept is taught in every course, book and video about object-oriented programming - but I now started to understand what it actually means. To think about where a function belongs and what its scope is, was a bit hard in the beginning, when I did not know, what the structure of the game would look like, but it surely paid off! My main game loop is fairly organized through this, because most elements have their own “live” outside of it - while I still can call them from everywhere. This is some esoteric brain tofu but sometimes it feels like my game performs better by doing this clean :D So, as a general rule, I started to begin every new scene/object by thinking about its input and how to get/set that input. Combined with globals this gives every new item a solid beginning.

  • Think ahead of inheritance! This I will have to learn better. I started with the Waste Box as the first space object you fling out. I added all the functionality it needed - orbiting, collision, damage calculations, debris spawning, little animation elements and so on. And then I added the next object based on it: the satellite. And realized, I needed to overwrite a lot of functions, because some minor details in behaviour were different. So, I kinda thought about inheritance, but not abstract enough. In this smaller scale this was manageable in the end, but I’d hat to have more objects to handle at the moment.. :)

  • Time doesn’t care about your standards. I needed “just a few more minutes” on about every feature in my game. I knew, I had 6 hours to go. I set myself time blocks to work on specific elements. And in the end, I spend the two hours I planned for sound design and music on adding transitions for game start and game end that turned out buggy like a drunk monkey. And to be honest: I think this was a mistake. I should not have traded those two elements. For one, I know that music/sounds is just as important as graphics and heavily supports player experience and every other system in game. All of it. This might be the biggest take away for me: stick to blocks and parts of the game that need to be there first. Polish later. And I think I will start with making some music first next time. I missed having a soundtrack on during development.

  • Technology is weird. I mean, every piece of software has its quirks and knowing them is part of learning, I know. Still I’m surprised how messed up everything is. I don’t want to go into too much detail here, as I am sure you have that one or two things that come to mind. My take away here is: Test everything at least once quickly before diving in. I should have tested GPU Particles in web exports with Godot, for example. GPU Particles sounds faster than CPU Particles. It sure is on my machine… Well, now my game freezes for a second when having an explosion for the first time to initialize the particle system. Great :D

I’ll keep breeding on this a bit more. Thank you for your time and I hope you had a sweet weekend!

In case you want to take a look: https://ximossi.itch.io/waste-no-space

I intend to work on it a little bit more to fix some bugs and add a proper sound design. But I like how it turned out - despite the obvious last-minute bugs. In case you got time, feel invited to test it and give feedback. How do the controls feel like? Was it quick to understand? Did it meet yous skill?

Submitted

Not when making the game, but I learned that Godot already got built in support for in game pausing (I made a custom pause system that freezes the timers and the character movement) only after I had submitted the game.

Submitted

learned not to waste time trying to make a team, unless the team is ready to go a week in advance.

That sounds sad. Sorry for your experience :/

Submitted

it's ok i had a good time solo, just wasted a few hours trying to make tools for friends to use

Submitted

Indeed. It seems to me 48h is too short to assemble a team, agree in the ideas and also develop something. A completely different case if this team already works together in any manner.

Submitted

I feel like these 48 hour jams are basically a massive learning experience. In 2024 I learned SOOOOO much making NEXIFY and the same this year with SparkNoids. I think it just forces you out of your box and into an uncomfortable zone... which is kinda stressful, but also helps so much with learning new things, at least for me. The last two jams for Kenney I made things I never thought I could.

Submitted

FIRST LESSON
I learned a few really important things. One of which I just learned TODAY the hard way. Apparently an entire function I built into the game doesn't work correctly in web browsers because of a security concern. Fun!

So the issue is caused by me trying to lock the players view in place in a certain way whenever they interact with this wheel. Sadly this is not supported by browsers. Big sad. I DID find a workaround though it's janky af.

When you click and hold on the wheel, if you hit the escape key also (still holding left click) your mouse will become visible and you'll be able to crank the wheel! Yay! This does definitely mess up the flow big time  and kind've makes it impossible to play full screen BUT it is at least playable.

SECOND LESSON
Working with placeholder 3D models and then later replacing them  is a lot harder than you might expect. Especially if it's your first time trying that sort of swap. I'm not sure how much is a limitation/issue with the engine I was using and how much was an issue with me being unfamiliar with importing premade 3D assets but it was rough. And I spent way longer reworking animations and scripts to transition from MeshInstance3Ds to Kay models than I ever expected it would take. If it weren't for this issue I would've been able to add voice lines into my game like I wanted--it seriously took me like 5 hours to sort out the models

THIRD LESSON
PIVOT SOONER. I had maybe 4 other issues that I sunk multiple hours into. All 4 of them felt like I was so close to figuring out the solution. When I finally did pivot to doing something else, most of the time I was able to create a new solution in under an hour. My instincts for how close I was to successfully debugging an issue are apparently terrible. But at least now I know! Lol.

All in all I learned a ton finally taking a project from beginning to end. Even though a lot got left on the cutting room floor, I'm most proud that I was able to craft a complete game loop with a beginning and an end.

I can fully relate to lesson 3! Especially in the last few hours I kept on sinking time into problems I could just not assess anymore instead of pivoting to something else. Very important, indeed :)

And to lesson 2: This is probably one of those things that need to be learned by hard. Because in a professional environment this is very usual. I don’t know much about the 3D-pipelines of other engines but in Unreal it usually is not a big problem, once you know where the limitation of pre-viz are and how to keep world scale throughout the whole thing. I guess for Unity it should be the same. Can’t think of a reason why it should not be in Godot, too. What have you been using? And maybe that is something to give Kay feedback about :)

Submitted

I'm sure it was absolutely just a skill issue on my part. This was literally my first time trying to use that workflow (all of my other personal projects are still in the greybox phase) so I underestimated everything about it haha. I knew that working that way is fairly "industry standard" so I think I just assumed it would be as simple as just dropping the new asset in. The problem in Godot (at least as I was running into it) was that it was importing the object as an inherited scene. So it wasn't a simple process of editing the pieces of the model or its children pieces because I was innately locked out. And I couldn't figure out how to have this not happen on import nor could I find a simple way to just batch "clear inheritance" on the entire model. So that meant I couldn't create custom animations (at least not reasonably) because that would require manually going through the entire tree and finding the special place to "Make Unique" on every bone and limb that I'd want to manipulate. This just didn't feel worth it in the context of a jam (and luckily the model already had animations built in).

This was a bigger problem when replacing my placeholders for effects and in world UIs. Like using a cylinder as a placeholder for a laser is simple. But then when swapping that I had to completely change up my code to work in a different way. With a cylinder I could just stretch it simply along an axis to give it a "shooting" effect. I think the object I tried to swap it with was like a mushroom? And just stretching it along an axis wasn't working the same way for me. 

All in all I'm sure there's a better and more correct way to do it. The real issue was that I left this for last when I only had like 6 or 7 hours until deadline. Once I started hitting issues I was torn between just trying to bruteforce things or taking the time to slowly learn an entirely new process. And doing anything slow at that point felt like the wrong choice. Especially when, at that point, I still had the starry eyed hope that I'd have time to add voice lines in!

Submitted

Learned a ton. I always do in these short jams. I cut it very close on my upload, and I 100% could have bricked my game by uploading an untested version with a changed animation. That change affected the hitbox on some frames, which made jumping in one puzzle really hard. One millimeter off, and the puzzle would be impossible, pretty much ending progress on the third puzzle. And if I had just tested it once, I would have caught it and could have fixed it instantly. Always test the upload that's on Itch through the browser, and don't make updates 10 minutes before the jam ends. :P

Other than the obvious things, I learned a ton about animating in 3D with Construct. I didn’t actually think it was possible. Before, I was just using the sides of a cube and rotating them instantly to get a four-frame animation. But apparently, I can just animate a sprite and map that onto the 3D cube object, which will help massively with updates. I can do so much more with this knowledge.

I honestly also feel like, for retro games—3D retro-style PS1 games—Construct is pretty much all I’m going to need. This feeling of needing to learn code to make a good game just isn’t as true as I believed it to be. I think it's really good to work within set limitations. I've done my best work when limited to the Kenney assets, probably because I can focus in and not worry so much about the endless things I could make.

Such a wonderful jam :)

Submitted (1 edit)

My main learning from this jam was to pivot and cut scope as soon as possible and accept what I had to complete it. Per example, I don't like how my game looks in terms of lighting but I knew I'd spent a lot of hours trying to fix whatever I had and put it on the side. 

Other examples of scope I cut were split screen and web build. For web build, I understand it has a lot of impact on views and plays from other participants but I also knew I'd certainly got caught in fixing issues there instead of just completing a full game cycle.

Submitted

I have previously only done 2d games (2 in game jams since Nov24) and I thought I would do the same for this one given there was only 2 days. 

After the theme was announced I really wanted to try 3D and thought I would not be able to submit since I also had to learn. 

I was able to submit a really simple game with the core mechanic I had in mind and I spent a day just learning the basic nodes and import of 3d objects.

I feel good about making that decision.