The Dark Forest of Utharios

The Dark Forest of Utharios

This game is from ldjam.com, which is currently unavailable.
You can try viewing the original page on Web Archive (may not load correctly).
overall: 2.90
fun: 3.10
innovation: 3.80
theme: 3.30
graphics: 3.60
mood: 3.50
https://elitemoni.itch.io/ld54-game-jam-the-dark-forest-of-utharios

Bullet-Hell type of game

The dark forest festers with creatures, but you and the pixie can save the forest through the power of... friendship I guess? Feed the pixie some pixie dust (don't ask what's in it) and the pixie will shine brighter, driving out the darkness of the poisonous smog.

wasd/arrows to move
space/enter to shoot

Good luck, Hero!

-----------------------------------------------------------------------------------------------------------------------

This is my first Ludum Dare, in fact first game jam submission I've completed. The other ones I tried were failures for various reasons I'll skip over. What helped me a lot is that this time unlike the other times I used the Godot engine, which is a really simple yet versatile game engine that makes making projects pretty simple. I practiced it a fair bunch before starting this, although I didn't practice it enough. During this I learned some hard lessons.

Godot engine itself:

Technically, I kept on messing up collision checking, that was my biggest issue. Godot has 4 different collision objects (I think) and I intermixed CharacterBody2D and Area2D. The problem with this is that the way the collisions are handled for both are different which led to a lot of bugs and annoying issues I had to solves for many hours (6-8 hours maybe?). I could have used only Area2D for this project and it would have worked out just fine.

In godot you cannot check for specific layers, or at least for me it didn't work or I just didn't have the right information (even ChatGPT didn't help much on that). Because I was having such difficulty with collision checking, I had to look some stuff up online, and I learned about groups. Groups are essentially tags you attach to the nodes and you can check the group when you do an area/body check with Area2d or when you do a collision.get_collider() with CharacterBody2D. Attach the method is_in_group('enemy') or whatever the before mentioned things here, and you get a Boolean of whether the object has that group tag, as simple as that.

In terms of positives, the studying and practice of the Godot engine (about 30 collective hours maybe?) paid off for the game jam. It helped with familarity as well as knowing the syntax and the general rules of how things work. The Godot tutorials that were made in version 3 by the main Godot YouTube channel were a nice help. ChatGPT didn't help much and was actively misleading when Godot changed to 4.0 because ChatGPT came out before 4.0 and many basic things changed, even simple things like newObj.instance() changed to newObj.instantiate() among other examples.

I set up a basic template of some general code that will be used in essentially all projects no matter what (I did have a tilemap which I did not use because I didn't look into how to procedurally generate tiles and didn't want to look that up during this project.)

I wished I got a central audio node where I can attach all the audio I use in the game instead of attaching audio to every scene. Do a preload to the central audio node or get from the tree using get_tree().get_current_scene().find_child('Audio') (the second probably is better) this way the audio is simpler to handle. The reason to do this is that I want to use +/- to change the audio of all the sounds in the game, but I would need to attach the same lines of code to 10 or so different scripts. If I bundle all the audio together, I would be able to do it in one script instead. This causes less of a pain mentally.

Speaking of mental pains

Psychology:

I already sort of knew this before, but I don't like hacking code in a crunch. I hate programming when I know that the way I set up my code design overall, like in this game jam, was set up moderately bad in the start but at the same time I don't want to sit there for many hours thinking of how to optimally design my script. I have a tendency to refactor constantly without focusing on getting the stuff out there. A design perfectionist I'd like to be. I had a lot of anxiety over this. I normally don't get this issue when I'm working on other coding projects like with React JS and web dev, but I do when I am put on an explicit 72 hour deadline.

This Anxiety was by far the biggest killer of my productivity. If I didn't worry about the design and just hacked my code even inefficiently, that would have been really good and I would have made a better game with more love (the important ingredients when it comes to gourmet food and Ludum Dare game jams, of course of course). I would estimate that this anxiety killed 12+ hours of productivity.

I wasn't in the best mood starting this game jam. Funny enough, the last game jam I did before this I did worse even though I was in a better mood (I wasn't using Godot, I was using JS with the web page trying to make my own engine in real time, yikes!). Mood would have helped a lot, but then again I don't choose when the jam happens, it just happens and whatever I feel at the time I need to go through with it.

Conclusion:

Considering all the time that was killed, I had to sleep about 20 hours, 8 hours killed on research and fumbling around, 12 hours killed on anxiety and not being able to focus and get into the flow state. Of the 72 hours of the game jam, only 32 were technically productive. However, I could have had better deign choices to begin with that would have save me having to type up a lot of code and do things in a more streamlined ways, so maybe I'm guessing I only had like 26 hours of productive code/work (had to make the art myself, only 1-2 hours on that in total I think). Overall, I was not keeping track during the jam as I wanted to focus on the jam, but looking back I could have done better. I will turn in the game at around 8am PST, meaning that I also did not use the last 7 hours to polish the game because I feel stressed out from all the anxiety, but also I feel like I surpassed my expectations, so I don't feel too bad turning in early, I get to relax and enjoy my day! 19/72 hours is 26% time efficiency, I can imagine in future game jams I can bring that to at least 60% which is around 43 productive hours.

Regardless, despite the code anxiety, this game jam had good moments where I was in a flow state and got stuff done, so that was enjoyable. I also learned a lot and honestly feel like I can do 2x better next time if I spend more time studying, practicing and setting things up better. Despite some fears of failure, I felt like I overcome that barrier to a large extent this game jam. I feel more confident as a programmer going forward!

I hope you take something away from this. Comment if you wish, I'll take a look.

Alright jammers (real term or cringe?), See ya in the next game jam!
Found a bug?
Tell us on Discord