January 2024-
Tools used: Blender, Unreal Engine 5.3
Key things I learned and worked on: Developing a game on my own!
I’ve always dreamed of making a racing game. I’ve played a lot of different types of racing games in my youth and have experienced various ways the racing genre has been utilized. However, I feel like nowadays there is a drought of new arcade style racing games, since large studios are more focused on delivering simulation or sim-cade experiences. I have had an idea about an arcade that is focused on style: stylish driving, visuals and sounds. I’ve made a game design document for the prototype of the game previously on a game design course, so I had a good starting point.
The aim for this project was to learn Unreal Engine 5 better and the workflow of creating a game demo by myself. This includes designing the game and creating models, assets, Blueprints, music and sound effects as much I can by myself. It’s a test of my skills learned so far while learning more about the features and workflow in Unreal Engine.
I started by creating a new game design document for the demo of the game. I used the previously created game design document as a basis, took a lot of elements from it and scaled them down for this project. As an inspiration, I took a lot of references from R4: Ridge Racer Type 4, as it has a great formula for design, well-aged style and griping arcade racing gameplay. I wanted to recreate the similar feeling of the game, while not doing an actual one-to-one remake of that game. Other large inspiration was Auto Modellista, since it had a unique cel-shaded style to the game, making it looking like a 3D cartoon.
The visual style is retro-inspired and bright, with low-poly models for cars and environment. It’s inspired by the original PlayStation era graphics, while being somewhat modern styled. Bright colours, pixelated textures, modern lighting, cel-shaded cartoony style.
I wanted to create a low-poly car in Blender. I wanted to base it on a real car that has a 6-cylinder Boxer engine, because I wanted to do audio design utilizing my own car. The Porsche 911 would have been a nice choice, an iconic sports car that has been featured in many games, but I decided to model a lesser-known sports car: Subaru XT6. It had a boxy, 80’s styled look to it so it was perfect for the low-poly style I was going for. I had previously created two low-poly cars – the DeLorean and the AE86 – so I knew the process of creating a car. I had some reference pictures, measurements from the internet and blueprints of the car to aid the modelling. Main objective was to get the car to be as low-poly as possible and adhere to PS1 modelling style. The challenge was to UV unwrap the model, since I wanted to use pixel perfect texturing. I unwrapped the car as a single island, but this meant that the textures went over edges, ‘smearing’ the model in places it shouldn’t be applied on. I fixed the UV by separating the areas more clearly.
I didn’t want to make the game completely from scratch. I have limited experience with Unreal Engine, Blueprints and coding, so I used the Unreal Engine racing game template as a basis for my project. It was easier and intuitive to change elements to make the driving characteristics how I liked them. Before any environment or level design, I had to work on the physics of the car. The template has detailed settings for the vehicle, using Chaos Vehicle physics. Steering type and settings can be changed, as well as settings for front and rear tires, engine, transmission and suspension. Vehicle’s mass and the centre of mass can be changed as well. It was tricky to get arcadey physics for the game, since the physics has a lot of dependencies in all areas. Tweaking the physics was a process of trial and error, changing settings little by little and testing them out.
The game needs audio (music, UI sound effects, car engine, tires, etc.), so I’ll be utilizing FMOD to manage the audio for the game. I’m not that experienced in FMOD or creating audio, so it’ll be a learning experience. I’ll also need to plan a level, make some assets and make a shader for the game.