• Register

Combat Racers is a fast-paced car combat game for up to four players. You drive your own customized car, trying to outmaneuver and outgun your opponents. Quick reactions are essential as one wrong move can be the difference between winning and becoming a smoking wreck. Choose the best loadout for your playstyle. Experiment with different combinations to blow your friends up! Get up close and personal with shotguns, make one-shot kills with a railgun or trick your enemies into chasing you and char them with the backburner!

Post news Report RSS Update # 4: Menu programming & Rebindable keys

Hello everyone! This is Pauli, one of the programmers at MGC. The first sprint after our vacation is over, and having rested well, the development of Combat Racers is going full speed forward. In this update, I’ll be telling about myself and what I have been doing during the last two weeks. It’s a bit like a report though, but I try not to go too deep.

Posted by on

Nice to meet you

I’m Pauli Vuollet. I’m from Nivala, located in Northern Ostrobothnia region. I have been into electronics and computers since I was little. When I got my own computer, I got interested in games and programming as well.

Two years ago, after completing the military service, I moved to Kajaani to study game development. During my studies, I have participated in many game projects, met new people and have learned a lot about game industry and programming. As for today, I’m working at The Major Game Company, developing Combat Racers.

What I have been working on

IndieDB1

I spent the first half of sprint pondering, how to separate the music and the sound effects so that they can be adjusted from separate volume sliders. The solution was really simple, but not that easy to figure out. There was an option to choose the sound group the sound belongs to (effects, dialog, music, etc.) but there did not seem to exist any way to set volume for the sound groups. The Unreal Engine’s documentation and community were of great help.

IndieDB2


Unreal Engine has by default, sound classes for sound effects and music. So I once again went through each of our sound assets and set the respective sound classes.

Changing the volume levels for sound classes worked out with Rama’s Victory plugin. The plugin has provided us many crucial functions, that haven’t been exposed to blueprints by default. It has saved us a lot of time.


The second half of sprint went in implementing rebindable controls for gamepads. Victory plugin does keyboard binding and saving, as well as with gamepad. But there is one problem. Because of how Unreal Engine’s players work, there is only one set of gamepad inputs, so changing gamepad’s keybindings affect other gamepads. And since there are only 14 digital buttons, two analog sticks and two analog triggers, I attempted to do it my way.

IndieDB3

First, I had to prepare the player controller. I removed the hardcoded actions and enclosed them inside a function, which is called with parameters like “accelerate” or “shoot right”. I also made enumerators for the actions, as well as for the controller button events. In the picture you can see the controller events calling another function and passing it information about the button pressed, or the analog control and its current value. That function then checks which action has been assigned to whichever key, and calls my first function. Pretty straightforward, and it works wonders.

IndieDB4

This is the binder function. Its job is to capture the button that has been pressed and save it to an array. There could have been more refining and commenting for this function, but compared to its first state, it is as clear as day.

menukuva
The controller configuration menu in its current state.


That is all for now. Next time will either be about our webpage or Ville, our other programmer, will introduce himself. check out the Greenlight page and follow us on Twitter and Facebook! There's also a downloadable alpha build of the game available, so check it out, too!

Post a comment

Your comment will be anonymous unless you join the community. Or sign in with your social account: