Team Bondi, Team Lead, 2004 - 2007 (Sydney)
Team Bondi is developing LA Noire, a game for the Playstation 3 that is intended to be an accurate historical recreation of 1940's Los Angeles with an overarching dramatic storyline.
* While at Nautronix I was approached by Team Bondi and offered the role of the AI Team Lead. I accepted, and started designing the AI system for the new game.
* I designed a "pseudo database" that allows the attributes of an individual member of the population to be generated on-the-fly, or the population of individuals to be queried, based on a 32-bit identifier together with probability distributions over the possible values for each attribute, as determined from demographic data.
* I developed a "dialogue engine", inspired by Bill Mann's "Dialogue Macrogame Theory", to drive the interrogatory, fact-driven dialogue required for the game.
* I designed a "six degrees" model that simulates the state of world knowledge possessed by an individual character in the game as a function of their whereabouts and attributes, the properties of the event that they may or may not be aware of, and the mathematics that dictate that no member of the population is more than six links distant from an item of knowledge.
* As AI Team Lead, I was responsible for implementing the bulk of the design in C++. I also interviewed, hired, mentored and supervised a team of up to six developers, who were responsible for implementing other aspects of the AI system under my lead (such as the camera, the navigation system and the behaviour system).
* As work on the game progressed, I became involved in designing and developing tools to allow game designers to enter and maintain data relevant to the game. For example, I wrote a tool (in Ruby, Rails and MySQL) that allowed designers to enter information from the six daily newspapers of the time into a database. Almost 10,000 individual articles were entered using this tool over a six month period.
* Over time, I found myself taking on more work, as it became apparent to me that certain aspects of the running of a software team were being overlooked. For example, I set up the automated build system (which rebuilt the code each time a changelist was submitted, and reported on the outcome), established the coding standard, introduced unit testing, encouraged the adoption of using the bug database for software scheduling, developed a script to perform a one-button release of the game including a full data build, wrote the automated data build system, and developed miscellaneous tools for editing data, generating code and prototyping algorithms.
* Unfortunately, I felt myself being held back by constant micromanagement, sustained "crunch" periods, lack of detailed design and unit testing, and the lack of support to do what I thought was right for the company.