For the past six years, I've been working on a "little programming project" called BrainWorks. It's a full rewrite of the Artificial Intelligence for Quake 3. (Check out the side panel for links to the release and source code.) Before I started in 2002, I had done some work on other game modifications for Quake 3, including one of the first Real Time Strategy / First Person Shooter hybrids, Art of War. I quickly realized good AI was crucial to any team game, and became increasingly unhappy with the level of intelligence in the basic Quake 3 release. And with that, I set out to create a good framework for AI in Quake 3. My original plan was to fix up the code and I estimated a mere 6 months for this work. As I spent more time in the code, however, I realized something crucial:
Artificial Intelligence is hard!
And large portions of the original AI code were architecturally flawed from their foundation. To really do a good job with withe First Person Shooter Artificial Intelligence problem, I would have to start from scratch. Six months turned into six years, much longer than I'd have liked, but the work on BrainWorks has given me insight into a wide variety of issues in both real and artificial intelligence. In this blog I'm posting about the different problems I encountered, how I solved them, and what this says about intelligence. The focus is artificial intelligence, of course, but there will also be discussion about human intelligence and the nature of God and the universe. I started BrainWorks as a devout Christian and as I finished the project, I am now an agnostic. The work on BrainWorks was instrumental in changing my theological perspective, but I'll save that topic for another day. For now, I'll leave you with the one axiomatic belief that influenced everything in this project and defines the way in which I view the world:
There is a cause for everything that occurs.
In other words, I believe in causality. Causality is the foundation of all intelligence, both genuine and artificial.
Sunday, December 30, 2007
Subscribe to:
Posts (Atom)