Oversteer Racing: Dev blog #6 – The one where I take control

I’ve been fairly busy with other things this month so haven’t made as much progress as I’d like. However, I have continued making progress on the pit stops. I’ve now introduced the concept of tyre sets and cars have a limited number of sets. This means that, if making many pit stops, there isn’t a never ending supply of tyres for the car. The plan is, if all the sets have been used, the car is fitted with the used set that has the most grip remaining.

Race control and race metadata

Within the game I have the concept of “race control”. My intention is that this replicates some of the functions performed by its real life equivalent (tracking car progress, fastest laps and so on) but it’s also handling some more more unusual data. For example, at a pit stop the cars can be refuelled but the amount of fuel being added is measured in laps rather than a unit of volume (e.g. litres). As the amount of fuel used per lap will differ between tracks I’ve created some code to allow me to work out the average fuel usage per lap. This information is then stored as race metadata and is used at pit stops to work out the actual quantity of fuel to be added to the car.

Pit stop animation

I’ve also been doing some research into Unity’s animation system as I want to animate the pit crew during the pit stop. The crew won’t be seen working but I want them to come out of the pit garage, surround the car and then return at the end of the stop.

Next month…

Finish off the remaining tasks for pit stops and then work on some of the screens for the game. If there’s time I’ll start work on sound.

Oversteer Racing: Dev blog #5 – The one where I change things

After the somewhat slow progress I made over Christmas I’ve managed to get a few things done over the last month. This has been a big encouragement as some parts of the game are taking shape now.

Stop…. Go!

This month I managed to do a fair bit of work on pit stops and these are now functioning as I’d like, albeit without a beautiful user interface at this stage.

As the car enters the pit box a measure of how accurately you’ve positioned the car is taken. The game is then paused and a menu shown giving you choices for the stop. Players can choose how much fuel they want and whether to change tyres and/or fix damage to the car. These choices affect how long the pit stop will be (shown in second but also represented by a yellow bar), for example, the more fuel you take on the longer the car will be stationary. Also, your accuracy in entering the pit box affects how long the stop takes too. The more accurately you position the car then the closer the pit stop duration will be to the minimum time needed to take on that amount of fuel etc. If you do not position the car well then the stop will take longer. This, hopefully, reflects real life where the mechanics would have to adjust their position and the stop would take longer.

While you select the amount of fuel you want etc the game is paused. Once you press “Go” then the game will be unpaused and the work carried out on the car. During this time your competitors will be carrying on around the track but your car will still be in the pits. The yellow progress bar will decrease showing the remaining time for your stop. Once the bar disappears the car is released and you can exit the pit lane.

To demonstrate some of this functionality I’ve create a video dev blog:

Next month…

I’ll be finishing off pit stops and also working on race control and the additional data I’ll need to store during the race.

Oversteer Racing: Dev blog #4 – The one where the holidays get in the way

One of the main issues with developing a game in your spare time is that finding that time can be difficult. There are many competing concerns for your time and, during the year, you find yourself with more or less time than you expected… almost always less.

Over the holiday period I had hoped to be able to get my head down a bit and dedicate some time to writing code on Oversteer Racing but unfortunately that hasn’t happened. That said, I have spent some time working on areas that are a little easier to fit into short, irregular periods of time than coding can be.

Scope and planning

I try and keep a plan of outstanding work in Pivotal Tracker so I spent some time adding new tasks to the backlog and arranging them into a sensible order as some items are dependent on others. This has helped me work out roughly how much more development there is on Oversteer Racing. With my current work rate the burn down predicts a beta release in November. I plan to release before this though, and I think the burn down has been affected by the lack of work I’ve been able to do over Christmas, but it’s good to see progress mapped out like this.

Oversteer Racing burn down chart

Research

I’ve also been able to do a bit of research for the game both in terms of motorsport and games development. I did find time to read “Surviving The App Store” which was a really interesting read and gave me lots of things to think about. I thoroughly recommend it… although it does suggest that working on a long term project like Oversteer Racing might not be the best route to success.

Ugly UI

The other work I have been able to do is start creating a very ugly UI for the game. At this stage I’m more focussed on functionality than appearance so it’s pretty basic but a good start. One thing I still need to decide on is if I’m going to use Unity’s PlayPrefs or serialise the data into something like JSON. I can see pros/cons for both but I’m mainly concerned that the amount of data I’ll be storing will mean that PlayerPrefs will be quite cumbersome.

Next month…

I’ll be working on pit stops and a bit more of the UI.

Oversteer Racing: Dev blog #3 – The one where I stop and start

This dev blog is quite aptly named as I had planned to work on pit stops this month. However, what’s actually happened is that I’ve had to spend time working on other things and not been able to put much time in on Oversteer Racing, so it really has been stop/start. That said, I’ve outlined my (little) progress below and talked about my plans anyway.

Pit stops

I want strategy and pit stops to be an important part of the game. Pit stops will allow you to refuel, change tyres and, in some cases, fix damage. Managing pit stops generates some interesting issues. For example, do you allow players to reverse in the pit lane – this is a move that, in most forms of motorsports, will see a competitor disqualified. However, if I don’t allow reversing then is there a risk that players make such a mess up of a pit stop that they have to do another lap… and will that be fun?

The code I’ve currently got working detects if a car is in a pit box, works out if it’s the correct car in the correct box and also estimates how well the car is positioned. My plan is that, the position of the car will affect the length of time the car is stationary. So, when the player enters the pit box, the game halts (for the player and the opposition cars) and the player can then select how much fuel they want and whether they want to change tyres and fix damage. The changes they select affect the duration of the pit stop and this is also affected by how well positioned they are in the pit box. So, two cars pitting and making the same changes may be stationary for different amounts of time depending on their positioning in the pit box. This reflects real life as a car that stops short/long causes the pit crew to move and the stop takes longer.

Once the player has selected their changes then the game restarts and the opposition cars will carry on around the track. The player car will remain stationary until the work has been completed and will then be released.

Language support

As I’ve started work on functionality I’ve had to start adding support for multiple languages. To do this I’ve been using the popular I2 Localization plugin from the Unity asset store. I’ve not finalised the list of languages that the game will support at release but it’s worth building in support from the start so I don’t have to retrofit this later.

Next month…

I’ll be working on the menu screens for the pit stop, holding/releasing the car and carrying on with adding language support.

Oversteer Racing: Dev blog #2 – The one where I break things

In this dev blog I’ll be focussing on damage to the car and how that affects your race.

The damage dilemma

I think it’s important that your actions in the game can affect the car. For example, if you have a big accident and hit a wall then this needs to be reflected in the game. The dilemma is how much impact that should have on your race (and, potentially, your fun). In essence, should a big accident put you out of the race?

I think it a big accident should end your race but I am expecting to need to allow players to configure this. I’ve not decided on the options yet but I think it’ll take a lot of testing and discussion with testers to find the right balance. However, I have decided that there should be functionality that means a big accident can put you out of the race even if some players turn that option off.

What bits can fall off?

I’ve focused on damage to the wings (front and rear) and the wheels for now. Losing the front wing is something that affects performance (you get a lot of understeer) but will be something that can be fixed during pit stops (albeit causing a longer stop). Knocking off a wheel or the rear wing will end your race (as it does in most forms of open-wheel racing).

Screenshot from Oversteer Racing showing a crashed car

Screenshot from Oversteer Racing (alpha) showing a crashed car

I’ve spent quite a lot of time working out what magnitude of impact should result in damage to the car and think I’ve got a good balance. I want players to be able to tap a wall or other car and not cause damage but if it’s a large impact then the car should be damaged. I’ve also been working on the effects so that a big impact produces a shower of bits:-

Game play footage from Oversteer Racing (alpha) showing a big crash

Game play footage from Oversteer Racing (alpha) showing a big crash

Pit stops and next month…

I’ve also been working on pit stops and the car can now enter the pits and stop in a pit box. For the coming month I’ll be doing more work on pit stops so that players can change tyres and repair damage and I’ll also be working on some menu screens as it would help development if players can toggle options on and off.

Oversteer Racing: Dev blog #1 – The one where I go racing

Welcome to the first dev blog for Oversteer Racing. I’ve been working on the game for a while but thought it was about time I started talking more regularly about what I’ve been up to. My plan is to publish a new dev blog during the last week of the month throughout the rest of the game’s development (inc. post-launch).

Game overview

Oversteer Racing is a top down racer for mobiles and tablets. It is not based on any existing racing series. My thinking behind the game is that it’s about time someone did a top-down racer for mobiles and tablets. I grew up playing games such as Super Sprint and Super Cars and I don’t think the genre is well represented these days. If you don’t know what a top-down racer is then it’s a racing game where the perspective is third person and looking vertically down at the cars and race track. In Oversteer Racing the view will move with the car rather than show the entire track on a single screen. For a bit more information you can read the official announcement.

Work to date

Test track

One of the earliest tasks was to create a test track. This isn’t based on any existing circuit and needed a mixture of corner types (from slow hair-pins to fast curves) and straights. The test track allows me to check out my ideas for controlling the car and car handling. I can also work out the calculations for tyre wear and fuel usage.

I’ve also been able to use the test track to work out how running off the track or in to gravel traps affects the car.

The Oversteer Racing test track showing detection points for track sections

The Oversteer Racing test track showing detection points for track sections.

Car controls

As the game is for mobiles and tablets it will use touch control but this doesn’t lend itself to really precise control. I’ve tried a number of control methods, including a virtual joystick, but my current work in process has touch controls for throttle, brake and turning (i.e. all or nothing input). The virtual joystick was problematic because sometimes you may want to have full turning lock and full throttle and a virtual joystick using a circular area cannot provide that.

All or nothing touch control is working well in the game so far. It’s simple to master but by, reducing how fast the car will turn as the speed of the car increases, it’s still a challenge to drive a quick lap. You need to match car speed to the corners and that’s very similar to racing in real life.

I spent a very long time working on car handling. This is a critical component of all racing games and it’s hard to strike the right balance between fun and realistic/challenging handling. Also, by naming the game “Oversteer Racing”, I’m committed to make it possible to experience oversteer 😉 At this stage I have a good working model for both understeer and oversteer (it took a pretty long time to find something I was happy with) and this is influenced by the weight of the car (affected by fuel load) and how worn the tyres are.

Pre-alpha screenshot of Oversteer Racing - car turning right

Telemetry

In any racing game it’s really important to track the progress of the cars. You need to make sure the cars properly complete a lap and, in many games, it’s important to track lap times too. I’ve added a telemetry component to not only track the progress of the cars, the lap times and also the best sector times for each car. Like many race tracks in real life I divide each Oversteer Racing track into three roughly equal sectors and track sector times for cars.

Oversteer Racing will feature pitstops so the telemetry component also has to cope with cars visiting the pit lane. So, basically, it has to cope with cars taking multiple routes around the same circuit.

Summary

So, at this point in time, I have a test track and can drive a car at speed around the track. The car can take trips through the pit lane and its progress is tracked and lap times calculated. Also, the car tyres wear and the fuel load is used up and, depending on settings, this affects handling.

The coming month…

My plan for the coming month is to work on the damage model for the car. This needs to include graphical effects on the car and handling effects. I also hope to work on pit stops so that tyres can be changed and cars refuelled.