DevBlog #1 – First Foundations

Welcome to the first blog post regarding the development of Project Taurus, an arcade racing game. In this post, I’m going to discuss the roots of the project, as well as current progress.

Tools

One of the biggest choices to make in this stage of development is what tools to use. Which engine, which image editor, which modelling software to use.

I tried Amazon’s Lumberyard and Unreal Engine before settling on Unity. Although some members of the GameDev community consider it the “rookie” engine to use, I found it’s asset pipeline and scripting suited my needs best, as well as having a powerful object inspector and editor. Another box it ticked was the ability to extend it relatively easily, which allowed me to add some scripts to help on the importation of the .obj format I was using for the meshes, as well as a tree placer script (which doesn’t just work for trees, any asset which requires random scaling and rotation with quick placement) which helped make the development process that much smoother.

For image editor, Photoshop is my go-to in every instance. Simply the power of the package makes life that much easier, while providing a strong base of tutorials if you ever need to find out how to do something new. Any images for press or the blog or the game are done through that.

For modelling, I could simply use something such as Blender, working with voxels would frankly be an absolute bitch. A tool I had come across in the past for working in a voxel art style was MagicaVoxel. This I found to be brilliant for my needs, and ticked everything I wanted. The built in render allowed me to produce some of the images below, and the export options suited me well for Unity.

Style

The style of a game, whether it be art or setting, is always a huge factor in development. The Voxel art-style has always interested me, as you can achieve good looking results with relatively low amount of work. So the first step I took was to develop a basic car in order to see whether the style will work with this setup.

I was pleased with the result, based off of a Mini MK VII, specifically the rally variant. Obliviously, as I can’t use the original name of the car, I decided to call it the Tiny MK VIII, as it bears resemblance to the original name. From the looks of the car, I decided the art style did work, and pursued to make another popular hatchback from the era, the Golf GTI MK 1.

Again I was happy with this, and decided to go with the name Gulf TGI Mk 1.

Map Development

Initially, I used a test map to begin testing all of the driving mechanics and how the cars worked in-game.

As you can see, it was extremely basic. But allowed me to test how cars worked, as well as how the assets looked in-game. Scaling was a huge issue initially, however, with some import scripts in Unity which I smashed together quickly and configuration of MagicaVoxel, I got that all sorted. One thing which eluded me for a while was setting the origin point of objects. My aim was to get the pipeline and workflow down to the minimum effort required by me to add assets to the game, and I was reading several posts online about importing into Maya or 3dsMax and the such in order to reset the origin points. However, thankfully not too long ago MagicaVoxel added support for configuration the origin in the .obj export in the config file, making life that much easier.

The first map I decided to work on was a forest map, and to be simply known as forest through development until I settled on a name. Here is what I got together in MagicaVoxel:

I was happy with this, a lot of empty space around but I will cut down on that at a later date. Fast-forward a few days, add some major functionality here and there, alongside some camera effects so it looks even better and we ended up with this:

Oh, and did I mention, I made a coupe. Specifically a BMW M3 E30, the first mass-produced M car that shifted ass like no tomorrow. You can see the exhaust trails from beneath the car, as well as some functioning lights, and is that two cars? Yes. Yes it is. You can read some more about that below.

Multiplayer

One of the most important aspects of this game for me was multiplayer, and the game will revolve around that. Of course, there will be a significant single-player aspect. But I want this to be the game you launch up with a couple of mates for a few hours and dick about, race, time trials. Launch each other into space with some buggy tires and the such.

Unity ships with UNet, a surprisingly viable option for my multiplayer needs. However, another option could be Photon, which has all the bells and whistles and is promised by many to solve all of UNet’s horrible and horrific downfalls. The problem is, I couldn’t quite find just yet what they were. To this current point in development, I haven’t found an issue which I wouldn’t have had with Photon. I may be setting myself up for failure here, reaching a point down the line where I simply go “Oh fuck” and realise a fundamental flaw in UNet which prevents me from ticking one of the boxes in my brain for this game. But I cannot seem to find it.

Reading up online, I found one the major free-to-play successes of recent years, Unturned, was built upon UNet. With this reassurance that it does work, I decided to stick to UNet, and sally forth.

The goal is to have several game modes:

  • Free Mode – Where you just drive around, smash into stuff, test car’s etc
  • Race Mode – Simple one-off race with friends, strangers, bots or simply nothing,
  • Trial – Several laps aiming to get the fastest time
  • Tournament – Which features several races, gain points each round and a podium finish at the end

Car Handling

One of the things I saw taking the most amount of time in development of this project is configuring and tweaking the handling of the cars. I elected to use the built in WheelCollider component in Unity to base this off of. This required a Rigidbody on a parent object attached to the wheel. Simple to set-up, I was happy and away. As I correctly assumed, it took several hours to stop me from sliding about every time I even thought about changing direction. After several hours with the Tiny, I achieved this:

(Click on the image to see a higher-quality gfy)

 

The future

Taurus is early in development, so plenty of things are bound to change or be removed. I will delve into each section more deeply in the future as I both develop it further and increase my understanding of the topic. This isn’t just a game I’m working on to eventually sell, but also a learning trip for me. My understanding of certain Physics aspects and Networking topics is ever increasing during the development.

I hope you enjoyed reading.