Post news 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
Sign in or join with:

Only registered members can share their thoughts. So come on! Join the community today (totally free - or sign in with your social account on the right) and join in the conversation.