Skip to main content

Posts

Most recent update:

Demigod - CSGO - Update 1

The 'player' with a cylinder to identify its front face As part of this teaching blocks assignment for my Coding & Scripting for Games module (nicknamed CSGO...we don't talk about the O) I have to make a simple game or game system inside Unreal Engine 5. This is a solo project that everyone has to do individually but as the focus is on the code, things such as appearance and presentation are not important, lightening the workload. My idea for this project is simple: I intend to make a 3D platformer wherein the player has a dash and double jump ability which can be stringed together for impressive world traversal. At first, you may think that's too easy, UE5 already has most of that built-in...until I say that I intend to program it all myself. Why am I doing that? Because of how the built-in versions work. Jumping, for instance, uses the advanced physics engine which makes it momentum based. You need to run/sprint before you jump or else you will go nowhere. Not onl...
Recent posts

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...

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 2) - Assets

    Unicorn model by Katie Eckton This week's progress was light on the programming side but heavy in the art department. The other programmer successfully created some simple enemy AI that scanned for the player in a 'visible' radius and, when seen, would move towards them. The player would need to outflank the AI or leave the defined area in which the AI could move (to avoid it falling off the edge). As this was not my work I won't be detailing it here, instead you can find that in the programmer's own logs/diary. My focus this week, after getting the project back, was on importing the 3D assets created by the 2 artists. In theory, this sounds like a simple task, akin to opening a document sent via email... ...it was not. Objects & Materials In 3DS Max (the 3D modelling software we use), you can, of course, create a single 'model' from a bunch of smaller objects & shapes. However, when you export this model, none of the objects will be 'linked...

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...

Game Jam #2 - Van Helsing (PART 5) - Reflection

  Logo by Nicolas Katsis And with that, Van Helsing is done! It is available to download here for anyone to play. But now it's time to sit back and reflect on the project and how it went. Overall, I think it went really well. 3 / 4 of us were really interested and invested into the project, each devoting a lot of time and commitment towards it. From talking with my teammates, we all share the same sentiment that we'd really have liked more time to continue building and fleshing out the game. We see a lot of potential in the concept.  From a technical point of view, there are definitely elements I would change or improve if we continued to develop this: - One of the bigger points would be in the zombies; Currently, upon spawn, all zombies move towards the player, which makes it rather easy for the player to jump over the amassed horde and then beeline it to the exit. If I had time, I'd have implemented a system wherein zombies that are not close to the player roam aimlessly...

Game Jam #2 - Van Helsing (PART 4) - More Functionality

Continuing on from the last log: The Ghost The purpose of the ghost is simple: to keep the player moving. Although not refined, there are elevated platforms the player can stand on in the level (i.e. the Statues and Lampposts) and one issue we identified quite early is that the player could take advantage of this to avoid the zombies indefinitely by remaining in one 'safe' spot until they had killed all the zombies. To rectify this, we created the idea of the ghost - an enemy that could reach the player on any y level and could not be killed. They have a delayed start to give the player some time to get moving and then, if not progressing quick enough, the ghost will eventually catch up to the player and nudge them along (or kill them if they fail to do so).     Creating the delay was simple. On level start, the ghost spawns just off-screen with the variable "begin" set to false. Inside the _process function, everything is behind an if statement waiting for begin to b...