Sunday, June 27, 2010

Early Design of the Enhanced AI Editor for Age of Empires

Alright for my first post of any actual content I'm putting up an early look of the UML diagram I'm making to plan out how my Enhanced AI Editor for Age of Empires is going to work. At this stage I've only got a few classes that I've been agonizing over.

The problem I'm facing is that I wish for the program to be able to support the recent waving of people trying to make mods for Age of Empires. As such it has been decided that any AI lists should be made external rather than hard coded into the system. At this point the planed work solution is to use external XML files and read them into the system either at start-up or when they are needed. However how the information is going to stored when they are read in presents another problem in itself. The current solution is displayed in a picture of my UML diagram below.


As can be seen in the diagram currently I'm going to be reading in each valid AI command and making a AiReference which will then be stored in the AiReferenceList. An AiInstructionWizard will be used for the interface to make a valid AiInstruction using a AiReference from the list. The diagram also shows early design of the AiModel which stores all of AiInstructions.

People that know programing design patterns may note my early use of the Observer design pattern. This is being used to allow easy updates for future features that rely on the information in the AiModel such as resource or population limit calculators/trackers.

Welcome

Welcome to my new blog where I'll be writing up about my various projects, problems that are coming up in them and solutions I'm using for these problems. The main type of projects that I'll be writing about will be programing projects, however, there very well could be other side projects such as some of the scenario design or electronic projects. Expect technical details like code snippets and various diagrams to be used to give greater insight to the projects. Feel free to debate design decisions and solutions to my problems.