Saturday, January 29, 2011

Progress Report (01/29/2011)



Jammy Life from GGJ2011
If I may digress a bit, this was a historic week in my personal life because I participated in my very first game jam.  Not only was it my first, but it was the largest game jam in history (up to this point):  The 2011 Global Game Jam!  I worked with a good friend of mine, Ross Story, and in under 24 hours of total work time, we created a fun little artificial life simulation game that we named Jammy Life, in which the player tries to create a sustainable environment for our little creatures to live and thrive.  We called the creatures "jammies" -- a reference to their origins at the game jam.

Now back to our regularly scheduled progress report on Team Laser Combat.  I took a nice step forward this week, which surprises the heck out of me because I didn't spend that much time on this project.  I know better than to look a gift horse in the mouth though.



The character data viewer in the upper right corner looks pretty good and works pretty well.  I'm just not sure that it works in the most ergonomic way that it can.
Accomplishments:
  • Finally fixed all of the AI initialization issues!  Yes, ALL of them (as far as I know)!
  • Created the character data viewer.  It shows the stats for one character at a time, and centers the main viewport on the selected character.  (See the screen shot above.)
    • I'm going to let some people use this feature and get some feedback, because I'm not entirely sure that I want this control to center the view on the character.  The original plan was to have buttons on the Actions menu for this purpose.  Now I'm thinking of connecting the two elements.
  • Worked on more level designs and concept sketches.
  • Did a thorough test of Single Player mode.  Everything works great up to this point.
  • Did a thorough test of Host LAN mode.  It mostly worked, except for cases where another human player in Join LAN mode caused errors to appear on the server.
  • Did a thorough test of Join LAN mode.  It's broken.  There seems to be some sort of data-related issue that keeps character data from being properly accessed.

Known Issues:
  • Join LAN mode causes some sort of server error that gives the client an inconsistent data set.
  • Network latency causes character upgrades to not show up right away.  The client needs to wait for the updated character to return from the server before returning to the team screen.
  • The color cycle control on the team creation screen throws an exception when there is only one color remaining to choose from.  This is only an issue when setting up a game with eight human players.
  • Chat messages 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.
Next Steps:
High Priority:
  • Create the action button menu.
  • Investigate ways to dynamically color the team uniforms.  Experiment on the placeholders.
  • Create the "whose turn" display.
Medium Priority:
  • Implement the Move action.
  • Fix the team color selection for the eighth human player.
  • Create the HUD's event log display.
  • Finish voice scripts for narration.
  • Finish asset lists for current set of level designs.
  • Formalize the flowchart for the AI logic.
Low Priority:
  • Create the token factory and displays.
  • Implement the Draw Token action.
  • Implement the Heal action.
  • Implement the Attack action.
  • Finish the team creation screen.
    • Put in the floor image for the captains to stand on.
    • Replace plain gray buttons with captain character images.
  • 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, January 22, 2011

Progress Report (01/22/2011)

Because of various things that I had to do in support of my lovely wife, I was stuck in a few situations this week where I was unable to work on my job or my homework.  That means I actually had a little bit of time here and there to work on this project instead!  My accomplishments for the week, in the order listed below, consist of one big accomplishment, one medium, and two small ones.  So it hasn't been a week of hyper-productivity like I had last month, but it's far better than last week when I accomplished nothing whatsoever.  We must be thankful for what we get...and only grumble softly under our breath.

Thank goodness it's all back!  Don't worry, there won't be nearly so much garbage text on screen in the finished product.  That's mostly for debugging purposes.
Accomplishments:
  • Fixed the largest of the various server issues!  Crashes are now far rarer than they were before.  The main issue ended up being a huge mistake I made when trying to improve feedback during AI creation.  I had simply placed some things out of order.
  • Further optimized the AI creation procedure.  It still takes too long, but it has definitely taken a step in the right direction.
  • Devised a plan for handling the lack of feedback during AI creation:  Just put a message on the lobby screen telling the user what's going on!  It's in there; just gotta tweak it a bit.
  • Experimented with layouts for the octagonal spaceship landing platforms.  I think the design will work very, very well...for aesthetics as well as game play.
Known Issues:
  • The game setup process takes much too long to create and initialize the AI players.  Gotta optimize that and try to speed it up.
  • Network latency causes character upgrades to not show up right away.  The client needs to wait for the updated character to return from the server before returning to the team screen.
  • The color cycle control on the team creation screen throws an exception when there is only one color remaining to choose from.  This is only an issue when setting up a game with eight human players.
  • Chat messages 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.
Next Steps:
High Priority:
  • Beef up the server...again.
  • Create the action button menu.
  • Investigate ways to dynamically color the team uniforms.  Experiment on the placeholders.
  • Create the "whose turn" display.
  • Create the character data viewer.
Medium Priority:
  • Fix the team color selection for the eighth human player.
  • Create the HUD's event log display.
  • Finish voice scripts for narration.
  • Finish asset lists for current set of level designs.
  • Formalize the flowchart for the AI logic.
Low Priority:
  • Create the token factory and displays.
  • 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 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, January 15, 2011

Progress Report (01/15/2011)

As much as it sickens and frustrates me to post this, I must admit that this week has brought no progress whatsoever.  Work, school, personal issues, and various things kept me from the project.  This does not mean that the project has been abandoned, however.  I'm eager to get back to it and experiment with improvements to the server architecture.  It just might be awhile, since my current work and school schedules are beyond heavy at the moment.

There was a bit of good news this week, however:  My wife and I are pregnant with our first child!  Yes, we have a little geekling on the way!

So...fear not, my friends.  I will be back!

Accomplishments:
None.  Nothing whatsoever.  (Do you know how painful it was to write that?)

Known Issues:
  • The game setup process takes much too long to create and initialize the AI players.  Gotta optimize that and try to speed it up.
  • As complexity grows, server crashes are becoming more frequent, and they leave no report or indication that something went wrong except that server responses stop coming back to the client.  I really need to make the server a lot more robust and verbose.
  • Network latency causes character upgrades to not show up right away.  The client needs to wait for the updated character to return from the server before returning to the team screen.
  • The color cycle control on the team creation screen throws an exception when there is only one color remaining to choose from.  This is only an issue when setting up a game with eight human players.
  • Chat messages 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.
Next Steps:
High Priority:
  • Beef up the server...again.
  • Create the action button menu.
  • Investigate ways to dynamically color the team uniforms.  Experiment on the placeholders.
  • Create the "whose turn" display.
  • Create the character data viewer.
Medium Priority:
  • Fix the team color selection for the eighth human player.
  • Create the HUD's event log display.
  • Finish voice scripts for narration.
  • Finish asset lists for current set of level designs.
  • Formalize the flowchart for the AI logic.
Low Priority:
  • Create the token factory and displays.
  • 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 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, January 8, 2011

Progress Report (01/08/2011)

I hate to say it, but there has been no growth this week whatsoever.  All of my (extremely limited) time on the project this week was aimed at fixing the intermittent server crashes that sometimes occur when setting up the AI players.  It's irritating -- it works several times in a row, giving the illusion that the problem is gone.  But when I'm ready to move on to the next step, the crashes return.  Grr!

But it's OK.  I will find a solution.  I shall not be beaten!

And by the way, expect the reports to be much shorter and less substantial over the next few weeks.  I'm teaching three classes right now and am taking one pretty intense grad school class.  TLC may have to take a back seat for a bit.

Accomplishments:
  • Did some minor optimization of the AI creation process.  It seems to have helped a little.
  • Added additional logging to the server code in an attempt to identify the crash sites.
  • Got an idea that could solve several issues:  The server needs to send a new message when all of a team's data has been broadcast.  
    • That way, the game client can more accurately monitor what's happening on the server.  This would help a user to know that the server is still working on AI players and has not stopped responding...as it sometimes appears.
    • Also, if a team's data is not received after a pre-set timeout value, the client can assume that the player has dropped off and stop waiting for them.
  • Had another idea to inform the user about the server's activities:  The game loading screen should display a message under the progress bar that indicates what stage of loading the client is actually in.  This message would be set by a static method call from within the loading thread.  It's an extremely simple enhancement that is also extremely helpful.

Known Issues:
  • The game setup process takes much too long to create and initialize the AI players.  Gotta optimize that and try to speed it up.
  • As complexity grows, server crashes are becoming more frequent, and they leave no report or indication that something went wrong except that server responses stop coming back to the client.  I really need to make the server a lot more robust and verbose.
  • Network latency causes character upgrades to not show up right away.  The client needs to wait for the updated character to return from the server before returning to the team screen.
  • The color cycle control on the team creation screen throws an exception when there is only one color remaining to choose from.  This is only an issue when setting up a game with eight human players.
  • Chat messages 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.
Next Steps:
High Priority:
  • Beef up the server...again.
  • Create the action button menu.
  • Investigate ways to dynamically color the team uniforms.  Experiment on the placeholders.
  • Create the "whose turn" display.
  • Create the character data viewer.
Medium Priority:
  • Fix the team color selection for the eighth human player.
  • Create the HUD's event log display.
  • Finish voice scripts for narration.
  • Finish asset lists for current set of level designs.
  • Formalize the flowchart for the AI logic.
Low Priority:
  • Create the token factory and displays.
  • 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 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, January 1, 2011

Progress Report (01/01/2011)

Happy New Year!

Welcome to 2011, everybody!  I hope you're as optimistic and excited about this year as I am.  Won't it be cool to look back at this blog post at the end of the year and see how far this project has come by then?  I'm excited!


Look at all the characters now!  These are just placeholders, of course, but six teams (a total of 16 characters) were successfully created and added to the game world in this test.


Accomplishments:
  • Character placement is now working.  More formal testing is necessary, most of the informal tests have worked beautifully so far.
    • Minor characters are occasionally being placed far away from their captains, but this is a minor issue and if it doesn't get fixed, it'll be fine.  I considered having that sort of random placement anyway.  I'll address the problem later.  It happens as the result of a brute-force sanity check to fix a problem with characters occupying multiple spawn points.
  • AI players are now being created correctly most of the time.  Intermittent bugs are still being worked out.
  • Programmed the F5 key to render in a debug mode similar to CornShark's, which provides additional information about the actors on screen.
Known Issues:
  • The game setup process takes much too long to create and initialize the AI players.  Gotta optimize that and try to speed it up.
  • As complexity grows, server crashes are becoming more frequent, and they leave no report or indication that something went wrong except that server responses stop coming back to the client.  I really need to make the server a lot more robust and verbose.
  • Network latency causes character upgrades to not show up right away.  The client needs to wait for the updated character to return from the server before returning to the team screen.
  • The color cycle control on the team creation screen throws an exception when there is only one color remaining to choose from.  This is only an issue when setting up a game with eight human players.
  • Chat messages 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.
Next Steps:
High Priority:
  • Beef up the server...again.
  • Create the action button menu.
  • Investigate ways to dynamically color the team uniforms.  Experiment on the placeholders.
  • Create the "whose turn" display.
  • Create the character data viewer.
Medium Priority:
  • Fix the team color selection for the eighth human player.
  • Create the HUD's event log display.
  • Finish voice scripts for narration.
  • Finish asset lists for current set of level designs.
  • Formalize the flowchart for the AI logic.
Low Priority:
  • Create the token factory and displays.
  • 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 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.