Skip to main content

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 had not touched 3D modelling prior to this course, and so this game would be in 3D (This is also my first time making a 3D game). I knew traditional OOP languages and had experience with Godot, so would NOT be using them. From the relevant module, I had gained a solid footing by this point with blueprints in Unreal Engine, and so decided to put my skills into practice and use it as the engine for this jam. The other programmer agreed with this.

And so now we have the technical aspect of our game: A 3D Platformer in Unreal Engine. What came next was the theme. As a group, we chose a high-contrast cartoony style (to help the artists) centred around Unicorns in the sky. We opted for a collectathon platformer, which is a subgenre of platformers that has you running around a semi-open stage collecting items in order to progress.

For most of the game's development it was unnamed, simply being referred to as "Unicorn Game", but for the sake of simplicity I will be referring to it as its official name "Feathers & Shadows" throughout these logs.

Into the Unreal

I created the base project for which the two of us programmers would work on. It was very simplistic and just aimed to get the generic platformer functions working (character movement, jump and gravity). To achieve this, I used Unreal's "Character" blueprint class, which is a version of the pawn that has additional pre-built functions for the above mechanics. While seemingly great at first, in hindsight, this was a huge mistake that will result in a rippling effect on the quality of the product, but I will explain that later.

Character movement using the built-in 'add movement input' function

Character jump using the built-in 'Jump' function

I also added a sprint function that increased the player's movement speed by a factor of 1.25x when the shift key is held. It also activates a dust cloud particle effect that I created using the Niagara VFX system introduced in Unreal Engine 5.0. To toggle the effect, I used two boolean control variables known as "is_sprinting" and "is_jumping" that are set to true when the relevant actions are in effect. Each tick, the game checks if "is_sprinting" is true and "is_jumping" is false; If that combined condition is true, the particles are enabled and when it returns to false, they are disabled again.


Sprint action control using the Character's built-in 'Max Walk Speed' variable

Dust cloud particle effect toggle (connected to EventTick)

I also added a controllable camera by connecting a camera component to a spring arm and changing the yaw & pitch (rotational x & y around a fixed point) based on a custom InputAxis from cursor movement. In essence - up, down, left & right from a mouse or trackpad are converted to rotations around a fixed point at a fixed length. The vertical inputs are inverted, as that is the default across the industry.

Camera control using custom InputAxis
 

Finally, I added a small bit of code with the 'BeginPlay' event as an initial setup for the player; declaring its health & default walk speed, disabling the dust cloud and setting the control variable for the invincibility frames (added at a later date).


As this was only the foundation for the project, all the assets were placeholder. I created a simple box blueprint as the floor, and the character itself was a blue cuboid.

With all that in place, this was the result:


And that was version 1 of Feathers & Shadows, internally named "Unicorn Game". With this, I handed it over to the other programmer to add Enemies and a respective simple AI while I dealt with other work for a bit.

That concludes this log. Thank you for reading, and I'll see you in the next one.

- JDM

Comments

Popular posts from this blog

Game Jam #2 - Van Helsing (PART 2) - The Bullets

  (Bullet sprite by Nicolas Katsis) This part is solely on how I implemented the bullets shown in the video in Part 1. There are two parts to this split across two scripts. The first is its behaviour and the second is the spawning of the bullet. First of all, it's behaviour.   The first thing that occurs on spawn is that the bullet assigns itself to a group of objects known as "P_Bullet". You will notice in all the snippets of code that many of the variables and groups for this object are listed as "P_ something ". This is because we initially considered the idea of giving the player two different guns that they could swap between: A pistol with a higher ammo count and longer range but weaker damage, and a shotgun with a much higher damage but fewer bullets and shorter range. The P_ was a reference to 'Pistol' bullets and S_ was a reference to 'Shotgun' bullets. Unfortunately, due to time constraints, the Shotgun was never introduced. For those u...

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

Game Jam #2 - Van Helsing (PART 1) - The Beginning

  Game Jam #2 began on 13th October and lasted 3 weeks. The goal this time was "Shoot-em up" and the teams had been both expanded to average 4 per group and randomly assorted as opposed to being grouped based on those around you. My team consisted of the following: - Programmer (me) - Programmer - Artist - Designer  Off the bat, we were able to come up with a very solid idea for our game: A side-scrolling platformer where the player can shoot 360 degrees to kill zombies. The player can only see inside a small aura of light around them and must rely on lampposts and other light sources as well as directional audio cues to navigate the level. The other programmer, just like my last partner, had never used a game engine prior to this course. As such, we settled on using Godot for this project. The reason we chose Godot is because its proprietary scripting language, known as GDscript, is pythonic. This means it is eerily similar to python, but enhanced and integrated enough that ...