Tuesday 2 February 2010

Week 14: Bug fixing, phasing and art

This was the week where I needed to prepare for play testing so I needed to wrap things up and sort out a few minor bugs, test things on the Xbox 360 again and add some logic for game over etc.

I received the artwork today so I thought I'd post once I'd implemented it into the game.

Here’s a video of the latest version of the game:




The bugs:
  • FIXED: Camera no longer cuts off players when there are three or more players in a level at once. The problem was that I was calculating the central point between 3 or 4 positions. If all players were at the bottom of the map for example then a player at the top wouldn’t be visible because the camera would cut them off. Now when a player is above the half way point in the level, the camera automatically focuses on the mid point of the level instead of the midpoint between all players
  • FIXED: Players can longer attack enemies unless they are standing next to them on an equal plane. You can attack enemies when your combat collision box collides with theirs, however, when your enemy is standing above you on a ledge for instance, these boxes were still colliding. By reducing the size of the box and placing it near the middle of the ball of the player the problem was solved.
Changes
  • Added new graphics to the team select phase
  • Added ‘+’ and ‘-‘ symbols that appear briefly when in power up state
  • Reduced the shade of the colour of the background for each new point scored
  • Added a gradient graphic to the charge bar
  • Added state for game over. When a team has won, their power symbol appears briefly and the whole screen fades in to their team color. The game then resets after a few seconds and goes back to the main menu.

Art

Once I got the separate frames of animation from my artist I was dreading creating the sprite-sheets and logic for the animation but it was actually done within the space of an afternoon:

Re-testing on the Xbox 360:

I got a very unpleasant surprise when testing on the Xbox 360 and it was all to do with my games music. For some reason unbeknown to me at the time, when I ran the game on the console it would play the music straight away when the game started. This wasn’t supposed to happen as it should only begin when the user presses enter at the logo phase. Then, when I started a game, my music player system would infinity change the song causing the game to grind to a halt.

So, I tested the game on PC and it worked fine. After thinking about it for a while I remembered an article I read comparing the 360 to a computer. It explained why there is a common misconception that the 360 should be as powerful as a mid range PC circa 2005, however, it went on to explain the fundamental differences between the power and ability of the Xbox 360 CPU and that of a computers chip, the 360 couldn’t handle a lot of things at once.

So I thought maybe the media player system is the root of the problem, even on the PC it froze the game briefly when loading, so was using a separate thread for it. I went back and looked at my music player component and saw that I was changing states very quickly like from play to pause within milliseconds. It turns out that the 360 couldn’t keep up with this and needed a few seconds to change between states. So, I added in a time delay between the ability that the program selects the next song and the problem was solved.

I also had to reposition the HUD graphics a bit to account for TV over scan, accounting for a loss of about 20% of the picture. I did this by using ‘#if XBOX’ which enabled me to create different positions for the HUD graphics depending on the format.

How to guide:

I’ve gotten rid of a lot of things in my game but when I went to create the how to section there was still just too much that the player had to know before playing the game. After talking to a friend about it he suggested that I just get rid of the ‘Overcharge’ power up state and the whole ‘scoring points against yourself’ idea. This is what I’m going to do before the play test since everything else is simple enough to explain and this is the last relic of the old insanely complex version of the game.

Finally, as the deadline approaches I find myself changing and adding so many things into the program and trying to document it all is taking too much time. A lot of new code is being added and barely commented but it’s the price I feel I must pay to achieve my goal of making a fun game.

No comments:

Post a Comment