Since we are submitting to the XBLIG arcade, there is a submission process we have to pass for our game to be published. Fortunately, there exists an already compiled list of oft-checked items that your game has to pass, at the least, to be accepted.
I was assigned to keeping track of what our game has passed, and what needs to be fixed. Thus, I compiled a list of the items in the checklist, and made a Google doc that would keep tabs on our progress. Below is the link to this document.
Evil List
I'll also update this post to keep up with the parts I personally fixed for our game.
1. I found that our screen wasn't adapting properly for widescreen/standard size. This was largely the GUI elements of the game, so I had to go digging into our GUI code. Fortunately, since we only have to worry about standard and widescreen when it comes to our scaling, I only had to add a scaling factor that was set according the screen mode. It was a relatively simple fix, and it worked flawlessly.
2. After some testing, I found that a second controller (not the profile logged in for the game) could control the menu screen, but not the actual game if they started it. This happened to be an evil list item, so I went to work. Again, this was a GUI issue, as the menu screen needs to keep tabs on what player's input is valid. Thus, I modified our GUI screens to only accept input from registered controllers (which XNA was all too happy to provide for me). This was accomplished by simply adding a check in the button input function, so that it would check the current controller's port to the registered ports provided by XNA.
Friday, March 15, 2013
Saturday, March 2, 2013
Tutorial Buttons
One of my recent tasks was to design a way for buttons to pop up onto the screen. This would be used to help players use the proper abilities in a tutorial level.
My first task was to design how I wanted to show these buttons exactly. Since this is an XBOX 360 game, I decided using the actual buttons from that pad would be suitable for these popups. I then decided to add a
small animation that looped between the button being unpressed to the button being pressed; that way it both draws the players attention (since movement catches the eye), and gives the proper information to continue. Here are the two pictures I used for the buttons being unpressed and pressed.
You might notice I altered the perspective on the second picture so it looked like the buttons were being pressed down.
With that done, I needed to design the class that would support this functionality. Thus, I made the PopupButton class. Since this could be called from anywhere from within the mechanics of the game, I made it a static class. I made a simple function called DisplayButton which took in the button to be displayed. It then loops between the unpressed and pressed state until the RemoveButton function is called. It's very simple to use, and works as intended.
Finally, I had to add the ability for the button to have text to explain what it was going to do. For this, I had to delve into the UI that one of our other members had implemented. By implementing an inheritance class for the tutorial text, I was able to create a UI functionality that displayed a button and text to go alongside it.
At the moment, the tutorial buttons are working great! Here's a short video showing it in action.
My first task was to design how I wanted to show these buttons exactly. Since this is an XBOX 360 game, I decided using the actual buttons from that pad would be suitable for these popups. I then decided to add a
small animation that looped between the button being unpressed to the button being pressed; that way it both draws the players attention (since movement catches the eye), and gives the proper information to continue. Here are the two pictures I used for the buttons being unpressed and pressed.
You might notice I altered the perspective on the second picture so it looked like the buttons were being pressed down.
With that done, I needed to design the class that would support this functionality. Thus, I made the PopupButton class. Since this could be called from anywhere from within the mechanics of the game, I made it a static class. I made a simple function called DisplayButton which took in the button to be displayed. It then loops between the unpressed and pressed state until the RemoveButton function is called. It's very simple to use, and works as intended.
Finally, I had to add the ability for the button to have text to explain what it was going to do. For this, I had to delve into the UI that one of our other members had implemented. By implementing an inheritance class for the tutorial text, I was able to create a UI functionality that displayed a button and text to go alongside it.
At the moment, the tutorial buttons are working great! Here's a short video showing it in action.
Prison Theme
I've spent some more extra time to compose more music for the game. Unfortunately, our team decided to scrap the prison level, so this one is a little out of place at the moment, but I'm still proud of it.
As a prison theme, I composed it to give a feeling of dread and hopelessness at first. I used Japanese instruments again to keep the oriental flavor. Though, to keep the ninja feel, I gave it a section where it picks up a bit to give a sense of action (as if escaping from the prison). From there, it loops back into the beginning of theme subtly.
Here it is. Enjoy!
As a prison theme, I composed it to give a feeling of dread and hopelessness at first. I used Japanese instruments again to keep the oriental flavor. Though, to keep the ninja feel, I gave it a section where it picks up a bit to give a sense of action (as if escaping from the prison). From there, it loops back into the beginning of theme subtly.
Here it is. Enjoy!
Ability Design: Shuriken Storm
Shuriken Storm
For my third ability, I previously wanted to implement Shadowstitch which rooted enemies it touched in place. However, I began to think that I was only designing mobility abilities. While this is fine, and is a great part of the game, I realized that a ninja also needs a some purely offensive abilities. Thus, I designed both the single shuriken attack, and a super attack where the ninja throws a whole barrage of shurikens at once. The simple shuriken acted as a fairly straightforward projectile attack, so I'll detail the Shuriken Storm ability.
I wanted to design an ability that the player could use to decimate a large group of enemies, but be costly enough that it wouldn't be prudent to do so otherwise. Thus, I made it so the ability created around 10 shurikens that spread out in an arc in front of the player. This creates a wide spread that will destroy most enemies in front of the player (given that they are weak enough to fall to a single shuriken).
The process of actually implementing this wasn't too difficult. After creating the single shuriken ability, all I had to do was have the ability create multiple instance of this ability with different trajectories. Simple and efficient! I amped up the energy cost, so that the player could only use this twice will full energy. I tested it, and it works fine for the most part. Some of the trajectories are a little wonky, but I suspect our physics engine is causing that. It'll need a little more tweaking, but I'm still quite happy with this ability.
For my third ability, I previously wanted to implement Shadowstitch which rooted enemies it touched in place. However, I began to think that I was only designing mobility abilities. While this is fine, and is a great part of the game, I realized that a ninja also needs a some purely offensive abilities. Thus, I designed both the single shuriken attack, and a super attack where the ninja throws a whole barrage of shurikens at once. The simple shuriken acted as a fairly straightforward projectile attack, so I'll detail the Shuriken Storm ability.
I wanted to design an ability that the player could use to decimate a large group of enemies, but be costly enough that it wouldn't be prudent to do so otherwise. Thus, I made it so the ability created around 10 shurikens that spread out in an arc in front of the player. This creates a wide spread that will destroy most enemies in front of the player (given that they are weak enough to fall to a single shuriken).
The process of actually implementing this wasn't too difficult. After creating the single shuriken ability, all I had to do was have the ability create multiple instance of this ability with different trajectories. Simple and efficient! I amped up the energy cost, so that the player could only use this twice will full energy. I tested it, and it works fine for the most part. Some of the trajectories are a little wonky, but I suspect our physics engine is causing that. It'll need a little more tweaking, but I'm still quite happy with this ability.
Ablity Design: Vanish
Vanish
I had a great deal of fun designing this ability. The premise was to create an ability that would help the player get out of sticky situations in style. Thus, the ability to vanish away in a poof of smoke seemed rather ninja- esque. However, I wanted to add a little extra flare to the ability, so I thought to also design an offensive aspect to it. Thus, I made it so the player also drops a bomb where he previously was. This created the feeling of escaping a perilous situation while simultaneously attacking a group of enemies.
Fortunately, I was able to make this ability much the way I previously designed it. I made it so the player, once the ability is activated, will vanish up into the air instantly. From there, the player can move slightly to alter his/her landing point. However, I thought of the situation where the player has a ceiling directly above him. Thus, I made it so, if such a situation occurs, the player would actually latch onto the ceiling where he could hang until the situation is less dangerous. This turned out to feel totally bad-ass, and I'm quite pleased with how it turned out.
The next part was the bomb left behind in the smoke. At first, I wanted it to trigger if an enemy attacked it (that way it would be more of a counter-attack for a skilled ninja), but I realized that might be a bit too complicated to implement well. Thus, I decided to give the bomb a proximity where it would explode. This helps it retain the counter-attack theme, but makes it a lot easier for it to be effective against enemies.
All in all, I'm quite satisfied with this ability. It feels like a tool a ninja would have, and it executes near flawlessly.
I had a great deal of fun designing this ability. The premise was to create an ability that would help the player get out of sticky situations in style. Thus, the ability to vanish away in a poof of smoke seemed rather ninja- esque. However, I wanted to add a little extra flare to the ability, so I thought to also design an offensive aspect to it. Thus, I made it so the player also drops a bomb where he previously was. This created the feeling of escaping a perilous situation while simultaneously attacking a group of enemies.
Fortunately, I was able to make this ability much the way I previously designed it. I made it so the player, once the ability is activated, will vanish up into the air instantly. From there, the player can move slightly to alter his/her landing point. However, I thought of the situation where the player has a ceiling directly above him. Thus, I made it so, if such a situation occurs, the player would actually latch onto the ceiling where he could hang until the situation is less dangerous. This turned out to feel totally bad-ass, and I'm quite pleased with how it turned out.
The next part was the bomb left behind in the smoke. At first, I wanted it to trigger if an enemy attacked it (that way it would be more of a counter-attack for a skilled ninja), but I realized that might be a bit too complicated to implement well. Thus, I decided to give the bomb a proximity where it would explode. This helps it retain the counter-attack theme, but makes it a lot easier for it to be effective against enemies.
All in all, I'm quite satisfied with this ability. It feels like a tool a ninja would have, and it executes near flawlessly.
Subscribe to:
Posts (Atom)

