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
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.
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.
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.
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.
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!