Sunday, April 24, 2005

Game Development Status 4/23/05

Monthly total 21 hours 12 minuts; yearly total 98 hours 24 minutes.

I drove up to Dallas yesterday to visit with Chris. We talked about our goals for this Origins convention and the steps we needed to take to accomplish those goals.

Our plan is to make an AI "Alpha" CD available at the convention. The code is still pretty buggy, so an Alpha is the best we can do at this time.

We will work on the following tasks to accomplish this:

Make the CD: code freeze is 11 June for the AI Alpha CD. I will turn over the code to Chris at that time, and he will develop the Setup program and burn and test the installation CDs. The CDs will restrict the AI game to only the Opening Moves and the Assault of VII Corps scenarios.

Setup a web site for supporting the Beta group: We will insure that we can provide a controlled area for the Beta testers to share comments and receive program updates. Right now the plan is to use the Yahoo group for GSI Beta Testing to support this. As of this morning, membership in the group must be approved by Chris or myself. We're doing this because we are going to be sending around passwords to update zip files on the group message board. We want everyone in the group to sign a non-disclosure agreement, too. This is pretty standard stuff...we worked hard to get where we are, and we want (and really need) tester input on what we are doing.

Improve the game! I have to get the load game function working correctly for the AI before 11 June.

The game will support Hotseat, Play By E-mail, and AI modes of play. We'll also publish some test guidelines and hints for the testers on the beta site.

Thursday, April 21, 2005

Game Development Status 4/21/05

Monthly total 18 hours 42 minutes; yearly total 95 hours 56 minutes.

I fixed a problem this evening that had been frustrating me for over a week. The game was AV'ing during turn 4 execution of an AI-generated move. The code worked for other AI units on earlier turns, and the code also worked if I moved the (reinforcing) unit in question to an earlier turn. A search on the web indicated this problem was likely due to threading problems.

I finally refactored the ZdI code in the Unit class. I performed an 'Encapsulate Field' refactoring in order to reduce the number of lines I would need to look at via breakpoints. The weird thing was that I could not reproduce the problem once I completed the refactoring!

Last week I refactored the advance after melee a cheval code. I think I broke something somewhere: (click on the picture for full size)

Image hosted by

I know the advance after melee a cheval code is broken. It also seems that the AI charge plotting code is also busted. Note the plot for 2nd Dragoons.

Thursday, April 07, 2005

Petals Around a Rose

A co-worker pointed out this fun little game. The key is to introduce it to your friends without telling them how to determine the number of petals.

Monday, April 04, 2005

Game Development Status 4/4/05

Monthly total 1 hour 10 minutes; yearly total 78 hours 34 minutes.

Did some testing on the recent stacking validation code refactoring. I fixed a couple of minor problems with the refactoring, and I improved some of the validation rules violation messages by adding the unit name.

Friday, April 01, 2005

Game Development Status 3/31/05

Monthly total ~28 hours, yearly total ~77 hours.

I finished up the refactoring of the stacking validation code last night. The code is much simpler in structure now. I had enough time left over to test the code against increment limits and stacking without a tested successfully in both cases. I need to test infantry/cavalry/artillery stacking, and advance after melee stacking, then I can move on.

The AI is behaving reasonably well in movement to contact situations. The default jumble of VII/1 and VII/2 at the beginning of Assault of VII Corps sorts itself out rather well, and the Corps moves into contact with the Russians along their line of advance.

The AI is not maintaining command cohesiveness at this time...French units leak through the gap between 3rd Division and Grand Battery Center, and tend to keep going. I think I need to devote some time soon to improving attacks and cohesiveness: I need to do some things like
  • choose rear and flank attacks in preference to frontal attacks, if possible
  • tie in flanks unit-to-unit within a command
  • add high level AI code to identify and allow exploitation of gaps in NME formations, without sacrificing cohesiveness
  • shift units about to maximize odds-ratio effectiveness, where this is possible
  • constitute and commit a reserve
Of course, I need to continue on with other tasks, such as implement Corps formations, to make this happen.

I spoke with Chris the other night. We are a go for the trip to Origins. I have my hotel reservations and plane tickets booked, and my vacation time allocated.

My current plan is to have the game playable in an AI mode before the convention. I am currently aiming to have the Assault of VII Corps playable before the end of April, at least with the AI running the French. As soon as I get Assault running, I will improve the AI to the point it can play the Opening Moves scenario, again running the French. This may take all of May to do. At that point we have enough for a limited AI Beta. Given that level of achievement, I will spend time in June doing cleanup work and bug fixes to provide the code base for a Beta CD for Origins. Wild guess is 100-200 hours to complete this work. Still doable before the convention.

Once that is in hand, my next major effort is to get the AI to play the Russian roles in Assault and Opening Moves. This will require that I implement the AI code for defensive planning. (Then release a second AI Beta.) This will be another 100-200 hours of work.

Moving on to the big picture, after I complete the defensive planning effort, I have to rethink the high level AI to account for the larger scenarios. Assault and Opening Moves only involve a single "set" of geographical victory point locations. From the AI's point of view, there is a static FEBA defined by those victory point locations. In the larger scenarios, the FEBA will not be static; it will be dynamic. It will be necessary for the AI to update its definition of the FEBA with respect to the victory point locations and the enemy in order for it to make effective plans. Once I get that working reasonably well, it's time for cleanup, test, refresh Beta, tweak the AI, then RTM and "enjoy a milk bone in a commie-free world". (There must not be a basselope gap!) This will be another 100-200 (deja vu) hours of work.

Hmm, maybe we're done by Christmas, maybe by Origins 2006. (Was that out loud?)

Vive l'E, y'all.