Monday, January 31, 2005

Game Development Status 1/31/05

Monthly and yearly totals 27 hours.

I got in the zone yesterday for several hours and completed a code sweep. I changed the movement plot list from a public member to a private one within the CUnit class in order to facilitate debugging. Of course, it turns out everyone and their cousin were accessing the movement plot list. In the process of slogging through this code sweep, I kept finding other things that needed to be done. I did some refactoring. I swept the code for magic numbers related to terrain types, replacing them with members of a new enum. I wrote a new CHex method AllowFormation(FormationType eFormation) to return verdicts of whether a given formation type was permitted in a hex. Sweep the code again to put AllowFormation() into use properly. Did I mention unit testing? It's a Good Thing that Diedrichs has free refills!

You know, you don't have to be a programmer to be a programmer, but it helps...

Anyhow, next up is smoke testing the weekend's changes prior to localizing the source of the original problem.

In terms of the big picture, I am continuing to improve the AI's performance in the divisional fight scenario. The AI is doing OK in terms of bulling its way forward, but it's all command push with no finesse; there's very little in the way of recon pull or other forms of steering or maneuver at the moment. I hope to address extending flanks and supporting attacks after breaking through the FEBA in the next week or two, at which point I will switch back to working on Corps-level issues.

Bits & Pieces

I just updated this blog to include a list of the books I am reading or re-reading. This is the collection of books to be found online, at my desk, bathroom, bedroom, and in the trunk of my car, that I'll pick up on a daily basis to read a few pages from.

I recently started using SharpReader, a nice RSS Aggregator. I'm still working on the settings and subscriptions in order to properly balance between productivity and clue-level, but I'm having fun on the way.

I finished Halo last Tuesday. Total about 20 hours. Very fun! I've left Halo 2 in the shrinkwrap until I get some more work done on Eylau.

Thursday, January 27, 2005

What's in a name?

I changed the name of this blog today from Blandman Chronicles to Programming-In-The-One. This reflects the evolution of this blog from a meaningless repository of dear diary content to a meaningless respository of development status and observations.

The new name is something of a play on words regarding the terms programming-in-the-large (regarding large system development projects) and programming-in-the-small. One thing methodologies and processes seem to consistently come up short on is advice tailored for the individual developer working alone. No separate Q/A, CM, DBA, documentation, help desk, business process analyst, or project management. No other developers, no team lead, no mentoring, no pairing, nada. Like the Monty Python skit, "there is only me."

I also changed the layout, using the Minima template by Douglas Bowman. Nice!

Tuesday, January 25, 2005

XBox ate my homework (or at least my weekend)

My parents gave me an XBox for Christmas. Well, actually they intended to give me one, but the XBox was hard to find in stores. It arrived on the scene last Friday, along with copy of Star Wars: Battlefront. I really like the game. I enjoy playing Star Wars characters, the gameplay is engaging, and my nephew has the game for his PS2. As an added plus, each scenario runs around 10-15 minutes, so there are built in stopping points for snacks, bathroom, housework, and so on. I especially like the multiple opportunities to make my saving throw versus computer games.

Then there is the reason I hinted I was interested in an XBox in the first place: the copies of Halo and Halo 2 I won at an MSDN event in November. I am roughly 80% finished with Halo at this time. I was up late Saturday and Monday nights, and Sunday went bye-bye! Awesome game! I have to say I am very happy with my console gaming experience -- the controller is much easier on the hands than a keyboard and mouse.

Needless to say, I did no work on Eylau over the weekend, aside from a half-hour Friday night.

Saturday, January 15, 2005

Here's a screen capture from last night's testing. I was testing the collision avoidance code, using an unopposed test version of the Opening Moves scenario. It this picture, we see the situation arrived at as the AI captures the Chateau using IV/2.


Friday, January 14, 2005

Game Development Status 1/14/05

2004: December total 35 hours 50 minutes; yearly total 379 hours 13 minutes.

January '05 month to date around 12 hours.

Hi y'all. It's been a while since I updated this blog. I've been busy in the new year working on things at the office, and busy working on the game. Today I am taking a vacation day. I'll probably put in 3-4 hours on the game.

I completed a new version of the collision avoidance code last night. This code is much better than what was available previously. In tests on the Assault of VII Corps (unopposed test version), all units consistently moved towards Anklappen. I added extra code to the regroup plotting to allow artillery units to kedge properly; they had not been regrouping.

There are still problems with the regroup plotting. Right now I have the units move in a straight line towards the leader. When there are multiple regrouping units starting close to one another, they all tend to use similar paths, so they collide a lot. I need to spread out the regrouping units, perhaps using an artificial regroup phase line perpendicular to this line of advance, centered on the leader. I also need to reduce the leader's movement when a certain number of its units are out of command.

I am also working on other bugs and enhancements:
  • The A* movement plotter is plotting units too far, exceeding the number of movement points available to units. This in turn causes unnecessary collisions when the units pull up short.
  • There is a problem with stacking restrictions. As far as I can tell, both the AI and the game exec are ignoring them!
  • Infantry is firing to the rear.
  • Reinforcements moves are not fully implemented. Right now I am moving reinforcing units onto the board directly towards their objective for one turn.
  • Road movement is not used by the AI. I need to implement a heuristic estimate function for road-following paths for use with A*. This will be used by the reinforcement moves.
  • Cavalry declare charges in one turn and appear to execute them in another. Sometimes charges are never executed at all.
  • Cavalry and infantry sometimes stack together.
Vive l'E.