Title Safe
Noticed that the title safe area on the PC is the entire window, so things looked slightly off when it is running in a window. Went back and removed the device specific Title Safe Area rectangle, with my own that I calculate based on the size of the screen that I define, using 10% around the edges as the unsafe area.
Device Storage
The fast transition of the device selection screen on the XBox Slim was very noticeable, due to the bright yellow background color. This screen is only displayed for a split second, since there is only one storage device which is automatically selected. I’m not sure why it won’t let me select between the hard drive and cloud storage. I removed the yellow screen and replaced it with the standard background color, but the “select storage device” message still flickered for a brief second, so I put in a counter to delay the display of the message for 60 frames. Now, the message should only display if there is a problem.
I also need to go back and modify the “reset all data” functionality, so that it takes advantage of the new load storage screen. I don’t have the time to fix this, so I went ahead and removed the “Delete All records” functionality from the level select screen. I never liked the fact that there was no selector for it on the screen, and adding the functionality back using the new saving method will just be too much of a hassle at this point. I can use that time to do better things. Plus, I did learn previously that the player’s data can be deleted from the XBox system menu.
Four Controller Ports
Added code to hold the controller state for all four controller ports. Apparently, I don’t need to check to see if a controller is actually active to get its state. Added a parameter to Screen methods which handle button presses, so that now those take an int parameter which signifies which controller port pressed that button.
Updated the code so that it now allows the device selector to be opened and controlled by the controller port which started the game. Added exceptions to handle a save after the user has signed out of their profile during the game.
Tried using the Guide message display API call to display a message to the user if the game was no longer being saved due to the user signing out, but it also has the problem of crashing if the guide is active, so I didn’t bother with it.
Marketplace
After reading threads about others who have failed peer review, I added a check to ensure that the logged in player can purchase content before the Marketplace screen is shown on the trial screen. I’m thinking that 21 levels for the trial may be a bit too much. I’m doubting that anyone can complete that many levels within 8 minutes, and my purchase screen is only displayed after those 21 levels are complted. However, people can still buy the game through the main marketplace window. The user can play the 8 minute trail multiple times, selecting the other levels (up to 21, 3-1) that they have not completed, so therefore it is possible to the player to complete all 21 trial levels to see the purchase screen.
I’m trying not to be like most other games which have “buy buy buy” plastered all of the game’s interface. After all, if the player likes the game, then I’m sure they will know how to buy it from the marketplace menu.
Graphics Updates
Updated the cell selector to use the a symbol representing a resistor. Went back and made it a hand drawn anti-aliased line using the Gimp brush tool, with the middle cut out. Added a slight green glowing effect to this selector sprite.
Also added another overlay to the filled light, which is a sprite of two white filled arcs. This rotates for each filled light. It looks much better than what the screenshot shows.
Minor Changes
On the title screen, I also changed “New Game” to “Start Game”. I thought people may think that “New Game” will overwrite their existing record data, which isn’t the case.
After checking the Not So Evil Checklist again, the game won’t be failed for a Code 7 crash, which results from the account with the App Hub subscription signing out. So I just needed to ensure that it is playable from any controller port.
Learned that I don’t have to recreate the XBox entry XNA Studio Device Center and re-enter the key after restarting the XBox. I’ve just got to ensure that the XBox device for the active system is set as default.
Wrapping Up
At this point, I’m considering this game to be done. I tested it using all of the checks on the Evil Checklist, and I believe it passes all of them now. I will sleep on it overnight, and may play test some more of the levels again tomorrow, since I have tomorrow off of work for Memorial Day. Unless there is some major issue that must be fixed, I plan on submitting it to the contest tomorrow. Thanks to everyone who has read my status updates.