This October, I have performed many different tasks for both my volunteer role and for my personal education.
Volunteer:
- On the week beginning October 2, I focused developing contemporary research based around a specific topic. Additionally, I watched a UI/UX webinar headed by industry members around the UK as part of my role, learning how much of the industry views UI and UX work, including issues about communication specific to UI/UX Designers and Game Design teams.
- On the week beginning October 9, I finalised a presentation in the area of Game Design and Development, with extensive research into the field of the chosen topic and providing various examples to come with it.
- On the week beginning October 16, I began research into a given topic in relation to UX that included analysing and breaking down other games extensively and taking into account UI/UX principals.
- On the week beginning October 23, I researched a topic in relation to UI/UX on an aesthetic level, breaking down the different ways our game could present itself on a visual level.
UI/UX Certificate:
On the week beginning October 16, I began my course in order to achieve my Google UX Design Professional Certificate. This would allow me to gain a certificate that would act as a very nice compliment to get into any UI/UX related role, especially those outside of the gaming industry.
My first course was focused around the foundations of User Interface Design. Here, I learned more about the jobs of the UX Industry, and the specific niches that different UX Designers can follow. Notes I took while doing the course and watching the lectures can be seen below.
Then, on the week of October 23 I had my first quiz on this topic, which completing signified the end of the module. I learned more about the specific pipeline of UX to completion, and the responsibilities of an Entry Level UX Designer, with notes below from the lectures.
Then, I was quizzed on this, having questions testing my knowledge of User Interface fields in the industry, where people tend to start as, and what each different role is capable of.
General:
On 20th of October, I spent time learning about Metahumans, how they work and the pipeline to get them within Unreal Engine. This was due to me conceptualising early stuff for my project, Battle of the Bands, in which I would explore alternative ways to produce character models. This included defining the pipeline of creating them in browser through my Epic Games account. I found that while Facial Expression was quite complex in it's customising, in terms of outfit and hairstyles, it was rather limited, and I wouldn't be able to design a large variety of character designs.
Then, to bring the content into the project, I opened Quixel Bridge, and saw the Metahuman saved to my account under My Metahumans. From here, I saved it locally to my project, which did take a while. I did find out that not only was the MetaHuman around 300MB, but the Metahuman common folder also added an additional 1.2 GB to the project. I also found that Metahumans demanded a very high amount of project performance, due to how detail-oriented they were. I then decided from there that, while I didn't have much reason to use them in the project, I would still experiment with their functionality anyway. This came from retargeting it to a default ThirdPersonCharacter mesh, using the live retarget function to layer it over the default grey mannequin,
This allowed me to use the character as a player character in-world over the default Unreal Third Person Character. While not deciding to use MetaHumans for my project, I learned about how they work and what they come with.
Godot
In light of the recent uncertainty around Unity, I spent time learning Godot as an alternative that would provide greater 2D Profiency than Unreal would allow me. Having coded using blueprints before, this was an unfamiliar experience in diving into actual code, and was tricky to wrap my head around at first. I began on 2/10/23, where I followed the tutorial found in this video here.
The first thing I did was create a new 2D scene, and a User Interface with it. From there, I had to add two button nodes from the node menu.
I then set up the button tags, being play and quit respectively.
Finally, I added on_pressed functions for both of these. Playing would change the scene, while quit would simply exit the game. I made a world scene to go along with this, and had the player load into this. This started out as simply being a blank room with text in the corner to indicate the rooms had changed, but it proves that the title screen worked.
Next came with making the level itself. I began by setting up an enviornment to test, made out of collision boxes. This would make sure the player didn't immediately fall through the floor.
Then, I created a player. This was done outside of the level so I was able to use it universally.
I began with a CharacterBody2D, which had the code prepared for a player character, and gave it a collision shape. I then used the sprites from the video as the base, and resized the collision to fit it.
Then, I animated the sprite. This was done through what is known as an AnimationPlayer node.
I began by importing the sprite sheet, and sliced it in editor to specific frames through an option to set how large you want the boxes to be.
I then opened the Animation Track, and made a new track. Referencing the frames set by the AnimatedSprite2D node, I then set keyframes for these sprites to appear, and saved it to a new animation.
Then, through a new function called anim_play in the code, I had the player have these animations play when a specific action was done. For example, when the player's y velocity matches that of jumping velocity, the player's jump animation will play.
I also had the player sprite flip dependant on the direction they were facing, with -1 being that they were moving left and 1 being that they were moving right.
I then brought this player into the level, and from this, I got a moving player that responds to collision, and is fully animated.
On October 23, the tutorial then progressed to show different things, such as HUD, enemies and importing tilesets. Tilemaps were imported through tilesets, which had to have manual collisions set up for them.
Enemies had to be set up to follow the player, as well as dying when being jumped on. This was done through a hitbox where, if ran into, would knock the player back and deal damage, while a hitbox on top which would be only accessed by jumping on the enemy would instead kill them.
I began to notice similarities with Unreal, having an area to represent a detection system that, if entered, has the frog to begin to chase the enemy, while leaving them back to idiling when left.
Finally, the project came together fully on October 25, having completed the tutorial as intended, with me intending to make future iterations on it to create a solid platformer base.
Comments