Saturday, November 27, 2010

Progress Report (11/27/2010)

I presented the project in its current state to the Indie Video Game Developers Association this week and got some great feedback.  As a result, this week was a mix of improvements to the existing product along with planning for the next phase.

Also, with the addition of the isometric tile transformer utilities, I've been able to easily experiment with new tile configurations and arena layouts, such as the one pictured below.

I call this one "Pounded".


Accomplishments:
  • Based on a suggestion from the Indie Video Game Developers Association, I lightened the color of the data font by 50% to make it more readable against the dark background.
  • Added a few more random gameplay tips to the Loading screen.
  • Designed a good HUD layout.  Will create a high-fidelity prototype of it soon to see if it's really as good as I think it is.
  • Decided to change a rule regarding character training:  Now when a character is retired, its equipment, character type, and level of training determine how many coins are returned to your team's budget.  So you still can't sell training the way you can sell equipment, but you are compensated for it when you retire the character.  This change has been implemented and tested.
  • The clients now transition into the game state automatically when the server does.  The game clients wait for a specific message to arrive from the server.  When it does, they begin loading the game screen.
  • I enhanced MHFramework's sound player so now you can give it an array of sound IDs and it will play them one at a time in sequence.  This functionality is required for the narration voice-overs.
  • Recent changes to the game application have made the standalone server app mostly obsolete.  Not entirely obsolete, but I have stopped developing that application for now.  I may return to it later when we begin heavier testing.
  • Added an Options screen with buttons to toggle sound and music.  The sound toggle works, but music has not yet been implemented.
  • Began a discussion on the logistics to make it possible and convenient to work with voice-over artist Karina Martin-Moore.  There's more to come on this issue.
  • Created a utility for splitting a texture into floor tiles and saving them to PNG files.
  • Created another utility for converting a texture into right facing, left facing, and corner wall tiles, and saving them to PNG files.
Known Issues:
  • Intermittently, the captain will not show up on the team roster the first time the team screen is opened.  It works almost all the time, but not always.  This issue is caused by network latency, and all attempts to correct it have failed so far.  
    • However, there is an easy workaround -- opening the Help dialog (or any other screen) and closing it again triggers a full refresh of the screen.
  • Chat messages sometimes get lost when a user in multiplayer mode switches between the lobby and the team/character configuration screens.
  • When a player drops off, their team data is orphaned.  The server needs to recognize this and place the orphaned team under AI control.
  • Once all the human players have all connected, the server needs to create the AI players.  Those players need to be able to configure their teams and signal ready to the server.
Next Steps:
High Priority:
  • Create the AI for the lobby state.
    • Needs to be able to create a team, spend coins at random, and then signal ready to the game server.
  • Figure out the best way to organize the game maps and tile images.  
    • I am leaning toward the creation of a directory that contains everything involved in game world creation, including the map data files and the tile images.  Experimentation is necessary.
Medium Priority:
  • Finish voice scripts for narration.
  • Investigate palette manipulation so we can color the team uniforms.
  • Finish asset lists for current set of level designs.
    • Evaluate Sarah's level designs, too.
  • Formalize the flowchart for the AI logic.  (Due January 3, 2011.)
    Low Priority:
    • Finish the team creation screen.
      • Put in the floor image for the captains to stand on.
      • Replace plain gray buttons with captain character images.
      • Create team color oval beneath each character's feet.
    • Create command line interface for server so it can be launched and configured remotely.
    • Finish the level design guide.
    • Design the TLC web site.
    • Get coin display graphics from the art team.
      • Add it to the team configuration screen.the character configuration screen and the recruitment screen.

    Saturday, November 20, 2010

    Progress Report (11/20/2010)

    This week was a serious hardening sprint that really solidified some of the game's critical features.  Each time a critical feature is bolstered, the project overall becomes more stable and its future becomes more secure.  If next week provides the opportunities I'm hoping for, some important parts of the technical design work will be refined in preparation for the game state functionality.  It's time for some real software engineering now!


    The new Lobby screen has an enhanced client list display that shows team colors, player names, and a "ready" indicator.




    Accomplishments:
    • Found and fixed several problems in the character configuration screen.
      • Discovered that endurance training was broken.  Your team's budget got charged for it, but the effect didn't stay on the character.  The reason:  endurance is max HP, which is a property of the MHActor class, and not of the TLCCharacterData class.  Calling the setMaxHealth() method of the MHActor class during the character's deserialization fixed the problem.
      • The functionality for the equipment/training buying process had a huge bug:  It let you buy as much as you want even after your budget had been depleted.  This has been fixed by adding extra validation to the UI on the character screen.
    • Made some necessary enhancements to the character configuration screen.
      • Added a Retire button for retiring characters from your team.
      • Added a Cancel button to give players the option of undoing changes made to character stats without incurring a budget penalty.
    • Created a user identification marquee.
      • For players, it shows the user name and team name bordered by the team color.
      • For spectators, it shows the user name and the word "Spectator" in a black border.
    • Enhanced the client list display to show team colors and the status of the "signal ready" indicator.
    • Finally finished the Lobby screen!  Look at the screen shot above.  It's about time, isn't it?
    • Spectator Mode now works 100%.  Also, if a new player tries to join after the max number of players has already been reached, the new player automatically becomes a spectator.
    Known Issues:
    • The server automatically transitions into the game state when all the players have signaled that they're ready to begin, but it does not tell the clients to come along with it.
    • Intermittently, the captain will not show up on the team roster the first time the team screen is opened.  It works almost all the time, but not always.  This issue is caused by network latency, and all attempts to correct it have failed so far.  
      • However, there is an easy workaround -- opening the Help dialog (or any other screen) and closing it again triggers a full refresh of the screen.
    • Chat messages sometimes get lost when a user in multiplayer mode switches between the lobby and the team/character configuration screens.
    • When a player drops off, their team data is orphaned.  The server needs to recognize this and place the orphaned team under AI control.
    • Before going into the game state, after all human players have signaled ready, the server needs to compare the number of current players with the max number of teams selected by the host, and then fill in missing teams with AI opponents.
    • The standalone server app does not use the custom TLC laser gun mouse cursor.  As a result, the pointer position is off.  It should use the same cursor as the game app.
    Next Steps:
    High Priority:
    • Make the clients transition into the game state when the server does.
    • Create the AI for the lobby state.
      • Needs to be able to create a team, spend coins at random, and then signal ready to the game server.
    • Figure out the best way to organize the game maps and tile images.  
      • I am leaning toward the creation of a directory that contains everything involved in game world creation, including the map data files and the tile images.  Experimentation is necessary.
    • Create isometric wall tile converter utility.
    • Create utility for exporting converted iso tiles to PNG files.
        Medium Priority:
        • Lay out the HUD.
        • Finish asset lists for current set of level designs.
          • Evaluate Sarah's level designs, too.
        • Formalize the flowchart for the AI logic.  (Due January 3, 2011.)
          Low Priority:
          • Finish the team creation screen.
            • Put in the floor image for the captains to stand on.
            • Replace plain gray buttons with captain character images.
            • Create team color oval beneath each character's feet.
          • In the standalone server app, the game setup screen should have an "AI Only" button that launches the game with no human players.  It should also have buttons for displaying team, character, and user data.
          • Create command line interface for server app so it can be launched and configured remotely.
          • Finish the level design guide.
          • Design the TLC web site.
          • Get coin display graphics from the art team.
            • Add it to the team configuration screen.the character configuration screen and the recruitment screen.

          Saturday, November 13, 2010

          Progress Report (11/13/2010)

          Again I've had a week that has left little time for TLC, but I did get one major thing done:  The character configuration screen is working!




          Accomplishments:
          • Established the protocol for client/server communication in the game state.
          • Got the character configuration screen working in its entirety.  (It's pretty cool, if I do say so myself.)
          • Added a small chat client to the team and character configuration screens.  This doesn't keep all chat messages from getting lost during screen transitions, but it's closer.
          • Discovered an error in the implementation of the character stats.  The current initialization process does not match the game design specifications.  So I fixed it.
          • Drew a rough sketch of the UI that allows a player to take his/her turn.
          Known Issues:
          • Chat messages sometimes get lost when a user in multiplayer mode switches between the lobby and the team/character configuration screens.
          • When a player drops off, their team data is orphaned.  The server needs to recognize this and place the orphaned team under AI control.
          • Spectator modes should not have an "Upgrade Team" button on their lobby screen.  The only button they should have is "Exit" because that is the only thing they are allowed to do other than wait for the players to be ready.
          • The server pays no attention to the number of teams selected on the Game Setup screen.  Before going into the game state, after all human players have signaled ready, the server needs to compare the number of current players with the max number of teams selected by the host, and then fill in missing teams with AI opponents.
          • The standalone server app does not use the custom TLC laser gun mouse cursor.  As a result, the pointer position is off.  It should use the same cursor as the game app.
          Next Steps:
          High Priority:
          • Finish the lobby screen.
            • Add "Exit" and "Signal Ready" buttons.  
            • Remove the "Upgrade Team" button from the spectators' lobby.
            • Create a display for player name, team name, and team color.
              • For spectators, it should only display their user names.
            • Enhance client list display to show team colors and user roles.
              • Each row in the list should display a "ready" checkmark, a colored box showing team color, and the name of the user.
            Medium Priority:
            • Create isometric wall tile converter.
            • Create utility for exporting converted iso tiles to PNG files.
              • Necessary for the "floor tiles in the obstacle layer" optimization, among other things.
            • Finish asset lists for current set of level designs.
              • Evaluate Sarah's level designs, too.
              Low Priority:
              • Finish the team creation screen.
                • Put in the floor image for the captains to stand on.
                • Replace plain gray buttons with captain character images.
                • Create team color oval beneath each character's feet.
              • In the standalone server app, the game setup screen should have an "AI Only" button that launches the game with no human players.  It should also have buttons for displaying team, character, and user data.
              • Create command line interface for server app so it can be launched and configured remotely.
              • Lay out the HUD.
              • Finish the level design guide.
              • Design the TLC web site.
              • Enhance the team configuration screen.  
                • Add the coin display for showing the team's budget.
                • Use better fonts for the player name and column headings.
              • Finish the character configuration screen.
                • Add coin display.
              • Enhance the recruitment screen.  
                • Explain the abbreviations in the column headings with a dialog box accessed by a Help button.

              Saturday, November 6, 2010

              Progress Report (11/06/2010)

              This week showed a slight slowdown in the project's progress, but just barely.  It was an especially busy week, and next week is likely to be even more so.


              I think the new font, along with the red gradient and chrome finish, looks pretty sweet!

              Accomplishments:
              • Greatly simplified the way the engine handles windowed mode.  All display code is much cleaner now.
                • This also fixed the alignment issue in the server app.
              • Got the Android Nation font into the engine, with a red-to-black gradient and a shiny chrome border.
              • Standardized the fonts used in screen titles and dialog boxes.
              • Designed two simple test arenas with very minimal asset lists.
              • Updated the team creation screen with custom components.
              Known Issues:
              • When a player drops off, their team data is orphaned.  The server needs to recognize this and place the orphaned team under AI control.
              • Spectator modes should not have an "Upgrade Team" button on their lobby screen.  The only button they should have is "Exit" because that is the only thing they are allowed to do other than wait for the players to be ready.
              • The server pays no attention to the number of teams selected on the Game Setup screen.  Before going into the game state, after all human players have signaled ready, the server needs to compare the number of current players with the max number of teams selected by the host, and then fill in missing teams with AI opponents.
              • The standalone server app does not use the custom TLC laser gun mouse cursor.  As a result, the pointer position is off.  It should use the same cursor as the game app.
              Next Steps:
              High Priority:
              • Enhance the recruitment screen.  
                • Explain the abbreviations in the column headings with a dialog box accessed by a Help button.
              • Enhance the team configuration screen.  
                • Include a small chat client so players can talk while getting ready for the next match.
                • Add the coin display for showing the team's budget.
                • Use better fonts for the player name and column headings.
              • Finish the character configuration screen.
                • Add equipment and training tables.
                • Add Help and Reset buttons.
                • Add coin display.
              Medium Priority:
              • Create isometric wall tile converter.
              • Create utility for exporting converted iso tiles to PNG files.
                • Necessary for the "floor tiles in the obstacle layer" optimization, among other things.
              • Finish asset lists for current set of level designs.
                • Evaluate Sarah's level designs, too.
              • Finish the lobby screen.
                • Add "Exit" and "Signal Ready" buttons.  
                • Remove the "Upgrade Team" button from the spectators' lobby.
                • Create a display for player name, team name, and team color.
                  • For spectators, it should only display their user names.
                • Enhance client list display to show team colors and user roles.
                  • Each row in the list should display a "ready" checkmark, a colored box showing team color, and the name of the user.
              Low Priority:
              • Finish the team creation screen.
                • Put in the floor image for the captains to stand on.
                • Replace plain gray buttons with captain character images.
                • Create team color oval beneath each character's feet.
              • Tack on Help buttons to more components and screens.
              • In the standalone server app, the game setup screen should have an "AI Only" button that launches the game with no human players.  It should also have buttons for displaying team, character, and user data.
              • Create command line interface for server app so it can be launched and configured remotely.
              • Lay out the HUD.
              • Finish the level design guide.
              • Design the TLC web site.