June 30, 2012

Quake 3 Source Code Review: Artificial Intelligence (Part 5 of 5) >>

The modding community wrote bot system for each previous idTech engines. Two of them were quite famous at the time:

But for idTech3 the bot system was fundamental so it was to be developed in-house and be available out of the box. But things did not happened exactly as expected during development:

Source: Page 275 of "Masters of Doom":

	   
	   
    To make matters worse, a fundamental ingredient of the game - the bots - was missing. Bots 
    were characters controlled by the computer. A good bot would blend in with the action and flesh 
    out the scene like a robotic extra, as well as interact with the player. For Quake III, a deathmatch
    only game, bots were essential for single-player action. They were implicitly complex because they 
    had to behave like human beings.
    
    Carmack had decided, for the First time, to delegate the job of creating these bots to another 
    programmer in the company. But he failed to follow up. Once again, Carmack incorrectly assumed 
    that everyone was as self-motivated and adept as he was. He was wrong.
    
    When Graeme struggled to rein in the work, it was discovered that the bots were completely ineffective. 
    They din't behave at all like human beings. They behaved, basically, like bots. The staff began to panic.
    By March 1999, they had reason to be scared.
   	   
	   

Architecture

In the end the bots were farmed out to Jean-Paul van Waveren (a.k.a Mr.Elusive) which is funny because he was also the author of "Omicron" and "Gladiator". This probably explains why this part of the server code is in its own project: bot.lib:


I could write about it but the programmer Jean-Paul van Waveren wrote a 103 pages paper thesis that explains everything. Moreover Alex J. Champandard wrote a code review on the bot system which locate the source code of each module mentioned in the thesis paper:

Those two documents combined are all you will need to understand Quake3 I.A .

 

@