Saturday, March 26, 2016

Back to Business

After a week long break, the team is back in action and ready to finish up strong in the coming weeks. This week was lighter on work as everyone gets back to normal after our week long break.

I was at a bit of a loss for work this week, so I decided to finally officially tackle a task the team has talked about a lot but never committed to, alternate controls. Starting with keyboard controls, my main goal is to get multiple sets of controls working nicely together and be able to toggle which ones you would like to use. I will continue making bug fixes as well since that is the bulk of what we need to finish in the game as we go into feature lock at the end of next week.

The keyboard controls themselves are pretty simple but also flavorful. 1-5 on the keyboard correspond to the order of the colors on the fret bar. The arrow keys are how you target enemies. There is no button for strumming, simply hitting the correct note will also simulate the strumming on the guitar controller. Having a strum button was just too clunky. Now, the flavorful part of this, is due to the location of the buttons on most keyboards, you can actually pick up your keyboard if possible, and hold it like a guitar to play the game. A nice little touch that matches the nature of our game, but it's not at all required and a player can just play like normal.

Going forward I want to make a toggle system so only one set of controls is active at one time. Then I will look in to making a set of controls for use with a Xbox or Playstation controller. Finally, time permitting I will try to create a keybind system for the player to customize the alternate controls if they don;;t like them.

Thursday, March 10, 2016

Bug Fixing Round One

This week was a big change in direction. As I mentioned in my previous post, the team has decided to abandon the C++ port. It was taking too long and we were getting too far behind on the new features. Every one working on it was reassigned, and I moved to bug fixes.

I focused on one main bug, the Skizzard spell disappearing if any enemy was killed in a pack. I was happy to be working in blueprints again, so I started by looking through the enemy ones to find where the state changes happen. Finding the spot, I went through and setup a conditional statement to check if the creature that died was a Skizzard if it's spell was active. As I went to test, I discovered a completely different bug. Sometime earlier in the week a targeting bug had been introduced and it was impossible to actually beat the Skizzard and test the changes. This bug was given to a different team member to fix.

The other bug I looked into was the random game crash. It only seems to happen when playing on medium and restarting after you play through the level once. I looked through the blueprints to see if I could find the culprit, but I'm still not sure what could be causing it. Unfortunately I wasn't able to test any potential fixes because of the Skizzard bug, but looking them over they wouldn't have had the intended effect anyway.

I also looked into adding keyboard controls so I could test the game without needing access to the peripherals. The Guitar portions work as intended, but I didn't get the dance pad controls to work yet. I think it has something to do with the fact that the dance pad is considered player two. I'll have to get it to recognize my keyboard presses somehow or just turn off targeting when the dance pad is not connected.

Sunday, March 6, 2016

Change in Direction

This week has been much more productive than those previous. I finally cracked the problem of a function I've been working on the past couple weeks. I stumbled a bit with forward declarations because I've rarely used them in previous projects. I usually just avoid situations were they are needed. I worked my way through it though and came to a working solution.

Then there are the quirks of Unreal. Unreal is not very consistent with how you access member variables, with some being behind a get function while others are just free to call directly. In blueprints these all look the same, further increasing my confusion. Once I figured them out though it was easy to slot all the pieces in where they belong.

I then moved on to the next unclaimed function that needed to be moved over to C++ from blueprints. Using my new found knowledge, this was much easier to go about and I completed it in short order, which the code necessary to expand it's functionality commented out until the necessary class was also moved into C++.

However, after all this was done, we have decided to scrap the C++ re-write. The team realized it would be a constant uphill battle to not only move over the current code base, but also keep up with the new features. It is better for everyone to go forward with what we have, optimize the game in other ways, and stick to blueprints and scripting.