Another Global Game Jam happened. This year’s theme was “Duality”. My friend and I cheated a bit and knew about the theme about a week before the actual event we had signed up for. In other words, the theme was out on the 19th and the jam site we joined started on the 28th.
We discussed a couple of ideas in the week leading up, I initially thought of making a bullet-hell top-down shooter with colour switching like Ikaruga, but my friend wasn’t into the idea, and wanted to make a platformer instead.
My original concept of the idea was a side scrolling platformer, where the player would jump on different coloured platforms, and the colour of the platform would change the background colour of the scene. That in turn would hide or reveal the platforms ahead of the player. This is the one concept we actually kept, but it didn’t become a 2D platformer.
I’m probably gonna ridicule my friend here, but he also gave me twice as much work to do, so he probably deserves it. When we prototyped the idea and I was giving him instructions on what we should do, he purposely ignored them and built a 3D platformer instead, and claimed his idea was “Better”. The kicker is that he did put in a 2D mode, but made it so the gravity was sideways instead of down, because he claimed being able to climb was a cooler idea. Which made designing a level even more difficult because it meant any 3D to 2D puzzle design had to revolve around a quite frankly undercooked idea.
By the end of it, we dropped the 2D side of things. Which brings me on to Godot.
I’ve complained about Godot before, but it continues to surprise me with how underdeveloped or obtuse it can be. Let me provide a couple of examples. The background colour changes. In Unity I could access the main camera, set the background to be a solid colour, and then in code, just change the value of the colour. In Godot, according to my friend at least, you have access a node, set a global variable to access that node, and build a script to access that to set it.
Another example is putting some UI around the map in the form of text tips or hidden words. In Unity there exists a text mesh feature that just lets you put whatever words you want wherever you want. There’s also UI element text which is constrained somewhat by the canvas, but for the most part is fairly easy to place and manipulate. Godot’s version isn’t anywhere near as easy to use. You have to build a viewport, build a control node (Which I didn’t do initially, I’ll get to that in a bit) and then attach a label or rich text label to that node, and then make a 3D sprite, and render that viewport containing the text to said 3D sprite. Now when I made the viewport without the control node, although the engine prompted me to edit the positioning via the 2D canvas, I couldn’t actually see the UI elements. So you need to attach the control before you can even manage that stuff.
When I complained to my friend about the latter of those examples, he then proceeded to take an hour and a half “Making it easier” and created a UI theme that in theory we could use to drop text anywhere. In reality it just took up a bunch of time and broke all the UI stuff that I made previously.
Other than the problems with Godot, making a 3D platformer provides its own issues. We were fairly limited timewise to implement mechanics. So we focused on making the level around the placements of the platforms, making a couple of additional platform types for destructible and moving platforms. Even with that, my level design experience is lacking at best.
The start of the level is just 3×3 grid that can demonstrate the colour switching, as well as a couple of destructible platforms. This then leads to some moving platforms, with some vertically following that, and so on. The 2D stuff had to be abandoned purely because there wasn’t really use for it, climbing walls isn’t useful compared to what I had planned about perspective switching. There’s a part about halfway through the level with a moving platform, and I placed a wall just above the platform forcing the player to jump to another platform and jump back to get around it. In one idea after settling on a mixed perspective, I planned the idea of having that be a 2D section, where they would see a wall, but when they switched views to 3D there would see a gap in the wall to go through. But with the physics set up that we had that my friend refused to change, it just wasn’t possible.
The sense of direction was also a problem when we watched other players play the game. Some players didn’t know where they were going or why. There are a couple of directional arrows in the game pointing at paths ahead, but perhaps we should have put a few more down.
Myself and my friend have done multiple game jams now, and something is clear, we have very different views on game design and development principals. Part of this is due to our choice of engine, I typically use Unity and he exclusively uses Godot for reasons beyond any human understanding; and that often causes problems in design visualisation and fully understanding what the other is capable of. Furthermore, he mostly exclusively insists on creating 3D games despite the fact that I have very limited experience with things like Blender, but it’s my turn to do art, he still wants to make 3D stuff and then butcher my sprite and jerryrig it to 3D meshes. I’m just complaining at this point.
After we finished this game, we did joke to each other that we had made a better game than Bubsy 3D. Considering how difficult it can be to make a 3D platformer, I’d say we at least did better than that.
As for things to do different, well if it was possible, I would have liked to properly explore the perspective switching idea. Or just keep to the original 2D idea I had and add in some of the more physics based sections, like the pachinko machine. I don’t really feel like making a Unity version to be honest. I liked the concept of Bunny Jammers enough to do something more with it, but I think this game proves its concept well enough that it’s unnecessary.
If we take part in another game jam though I might try and convince my friend to install and mess around with Stride, which is C# game engine I’ve been thinking of looking at for a while now. If we can both find an engine with like and want to use, it would probably increase our productivity. Possibly ditch the idea of switching roles each time too.
If you want to play the game, download it here or play it in the browser:
-Adam