Skip to main content

Game Jam #1 - The Bug Game

 



The first ever game jam for the game development module of my course began on Friday 29th September. We were paired to those around us and given two weeks to develop a 'One-Button Hyper Casual Game'. Being the first, the rules were it should be kept simple and only use 1 input to interact.

My partner was a fellow programmer*, however we did have a problem: Neither of us had ever used a Game engine. We both came directly from OCR A level Computer Science and as such had only ever learnt raw Python and the Pygame plugin, which, while impressive for its capabilities, is impractical for commercial game development.

Using the AppsAnywhere service from the University, we initially settled on GameMaker (an older 2019 version as that is what was available) to make our game. Our concept was an autorunner, similar to that of the Chrome offline dinosaur game, using a flying bug as the player character and being able to jump when space was pressed and dive low when space was held. Enemy bees would fly across the screen randomly from one of three vertical levels: Above, in-line and below. The player would have to jump or dive accordingly to avoid these bees and the longer they survived, the quicker the bees would fly across.

Our first problem presented itself a few days into the jam, and it was with GameMaker. The old version provided by the university was unintuitive and lacking in useful tools for beginners. The newest version, which we could use at home, was a lot better but having being acquired by Opera.Inc a few years prior, their free tier only permitted exports to the GX.games website. As such, we could not see a way to upload the game to the itch.io page for submission (upon later research I found it is possible via a link to the GX upload but that is still not preferred if possible to avoid). Therefore, one week into the game jam, we restarted from scratch.

Our new choice of engine was Unreal Engine 5 as there was a provided tutorial for Flappy bird in ue4 (but compatible with 5) which we could use to get a footing and deviate when necessary. This tutorial helped us implement the parallax scrolling background and orthographic perspective for the 2D game.

Below, I was able to implement a spawner that, after a random delay (within a range), spawned the enemy. And, using the 'switch on int' node, I was able to set that enemies spawn point to one of 3 vertical locations depending on if 0,1 or 2 were picked. This gave the element of complete randomness.




A prominent bug (excuse the pun) that persisted through most of development was the GameModeBase blueprint we had created as part of the tutorial to make the orthographic camera function. Not entirely understanding it at the time, we did not realise that it spawned the player character on start and as such our manually dragged in character was not who we were playing as. Instead, it appeared as a mysterious second bug only when simulating the game (since our actual player was not visible in the editor).




Once we realised this, it also proved a challenge to detect collisions, since there was no bug in the world editor with which we could line the enemies up with and ensure they collided. This issue was solved by setting the spawner to place the bees in line with the BP_GameModeBase object that acted as our orthographic camera.





Due to time constraints from the earlier engine issues and our suboptimal development speed from having to learn on the go, we were unable to implement the dive mechanic, score counter or proper Game Over condition. There was also no QoL (Quality of Life) features, such as the ability to close the application from inside itself, either.

An attempt was made to display a 'Game Over' text when the player hits an enemy, however, due to ue5 blueprints not efficiently supporting global variables, I was unable to make it function. As such, there is an unused Game Over text sitting above the level that was meant to move down vertically upon death but it does not and instead sits there permanently off screen.




The game is now available on itch.io here, although it is rushed, unfinished and poor quality so I do not recommend it. However, for a first attempt, in a 2-person team that knew nothing, I admit I am happy with what we learnt under the surface. Unreal Engine is clearly a very powerful tool but also clearly has its strengths centered around 3D projects rather than 2D. If I was to continue this project, i would likely remake it again in an engine that better supports 2-dimensional game development. Feature wise, I would finish it, polish it and likely add support for mobile devices as the mobile game market is the most lucrative for casual, simplistic experiences.

Overall, a first attempt indeed.

- JDM



*For all future references in this blog I will be referring to the students as follows:

Games Technology - Programmer/Coder
Games Design - Designer
Games Art - Artist
Games Production - Producer

Comments

Popular posts from this blog

Global Game Jam 2024 - Stand-Up Simulator

From the 22nd - 26th January I took part in the Global Game Jam 2024 with a team of friends. Our university opted to officially host it at one of their buildings and cancelled regular lessons in order to allow us to focus on it. The theme was announced on the 20th and we all watched it live while in a call together. When it was first revealed as "Make Me Laugh", we were all very stunned. Such an abstract theme makes it hard to think of any possible idea to work with, but when we broke it down (and with some prompting from ChatGPT), we eventually came up with the idea of Stand-Up simulator . The premise was simple: You are a stand-up comedian performing at various clubs, you have to select 16 out of the total 64 available jokes to take in with you and perform (but you will only use max 10). Each club has a different audience with different tastes, so you have to gear your set of jokes to fit that. Each joke you tell will be judged by the audience on a scale of Excellent, Good,...

Game Jam #3 - Feathers & Shadows (PART 3) - Refinement

  Logo by Ephraim Mananga Invincibility Frames  A common design choice in games is to subtly give the player an unfair advantage over the enemy. This is because the goal is for the player to succeed, and it's important that a good balance is struck between the challenge of the encounter and the ability to succeed. One common design feature is invincibility frames, wherein the player enters a temporary state after taking damage where they cannot take any more. This gives the player time to react accordingly without losing lots of health. In many platformers, this is represented by the player model flickering, and so that is the approach that I took. Blueprints of the Invincibility Frames When the player takes damage, a boolean called Invincibility is set to true. This triggers the Invincibility Frames Controller which calls the Invincibility Event and sets a Delay. The boolean timer_control is used to stop the code being rerun as it is directly connected to Event Tick and witho...

Game Jam #3 - Feathers & Shadows (PART 1) - Entering the third dimension

  And we're back! New team, new engine, new problems. Game Jam 3 increased the team size to 6/7 people, made it 4 weeks long instead of 3 and, of course, introduced the new theme: Platformer. This was a lot more generic than the past theme and really opened the door for a lot of different interpretations. My team consisted of the following: - 2 Programmers (Including me) - 2 Artists - 2 Designers Like last time, my group did not get a producer, and unlike last time, this will prove to be a prevalent issue later down the road. But at the start, it was fine. On Van Helsing, we played to our strengths; The artist was best at pixel art, and so that was the style we went for; Me & the other Coder came from pythonic backgrounds, so we chose Godot for its similar language. And while that is the best approach to create a good product, it isn't the best for learning. As such, this time round I wanted to challenge myself & the group, so we ran the logic in reverse. The Artists ha...