Home
   

FAQ-About
   

Projects
   

Games
   

Open Kimono (Technical articles)
   

Send E-mail
   
   
   
   
   
 

 

 

 

 

 

 

 

Books, articles, papers, technical ramblings...

Introduction
Some of my work has shown up in print; such as in the Game Programming Gems, and the AI Game Programming Wisdom series. Other pieces have shown up in magazines and online programming sites.



In Game Programming Gems 7, I've written an article detailing the architecture of a multi-platform threading engine. One of the most important aspects of designing a multi-threaded program is spending the time upfront to design and plan your game architecture. Some of the high-level issues that need to be addressed are: task dependencies, data sharing, data synchronization, acknowledgement and flow of data access patterns, decoupling of communication points to allow for reading but not necessarily writing of data, and minimizing event synchronization. This article details the GLRThreading Engine and also provides a lot of practical advice for either using the GLRThreading Engine or writing your own. Other topics include dealing with cache issues, thread pools, execution properties and more. Buy it!



This is an article I wrote for OS/2 Developer entitled Advanced Game Design with OS/2. The use of advanced was the editor's idea. The article provided a basic summary of doing fast GPI updates - the technique I used for Master of the Empire. Obviously a super dated article (as it was published in 1997), but nonetheless it provides an interesting cross-section of my background.



In Game Programming Gems 6, I've written an article about the Quantified Judgement Model (QJM) and it's usage and application to strategic game development. The Quantified Judgment Model (QJM) is both a model and a theory of combat. Originally developed to simulate historical battles and then later upon further refinement, used for modern engagement prediction; it is an ideal system for predicting potential victors in a game. In this gem I describe the base QJM formula. The base QJM formula can then be furthermore expanded upon, by adding models calculating attrition factors, spatial effectiveness of units and casualty effectiveness. There is also some notes on the difference between the Lanchester equation and the QJM.



In AI Programming Wisdom Volume 2, I've written an article on Multi-Tiered AI Frameworks (MTAIF). This is the new framework used in the current iteration of Master of the Empire. The MTAIF allows an AI to be broken up into three concrete layers, strategic, operational and a tactical layer. This allows for an AI programmer to have various AIs focus on specific tasks, while at the same time having a consistent overall focus. The MTAIF allows for the strategic layer to be focused exclusively on matters that can affect an empire on a holistic scale, while at the operational level the AI is in tune with reports from the tactical level. A differing factor from many other architectures is that the MTAIF does not allow decisions to be made on a tactical scale that would violate the overall strategic policies. This in turn forces highlevel strategic policies to be enforced in tactical situations, without the AI devolving into a reactionary based AI.



In Game Gems 5 I've written an article entitled, "Advanced AI Framework Development with a Parallel Virtual Machine (PVM)". Its forms the fundamental understanding that is needed to start developing a parallel AI system. The article had to fit into 12 pages or so, so that meant a lot of actual implementation details had to be left out, as well as information on potential design fallacies that may occur. This article can serve as an introduction to an actual series of articles that I intend to write (see below for an article outline).

 

 

Other papers.

Genericized Object Management (GOM).
Todays games have huge AIs, being worked on by multiple programmers. Unless a new technique is introduced when the project begins, it becomes difficult to add any new type of methodology to the framework. This comes from the concern of breaking a currently implemented system or the real world fact that the new technique is just too complex. What the Genericized Object Manager (GOM) allows for is a simple way to register multiple objects through a parameterized functor [Alexandrescu02], which can then be easily accessed at runtime through one central core routine. A benefit of GOM is that the implementation can fit into almost any preexisting framework, so your game can have the immediate gains without refitting your framework to a particular solution. The GOM technique allows for setting up a specific AI, such as a particular Field Manager (see Designing a Multi-Tiered AI Framework), input managers, state machines that need to deal with multiple behaviors, or just a central system that is needed because the programming team is large. GOM also serves as a good technique while refactoring a large codebase.

Articles on AI Development using a PVM:
  • Articles on AI Development using a PVM.