15.12.2012 Views

Bayesian Programming and Learning for Multi-Player Video Games ...

Bayesian Programming and Learning for Multi-Player Video Games ...

Bayesian Programming and Learning for Multi-Player Video Games ...

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

Chapter 8<br />

BroodwarBotQ<br />

Dealing with failure is easy: Work hard to improve. Success is also easy to<br />

h<strong>and</strong>led: You’ve solved the wrong problem. Work hard to improve.<br />

Alan J. Perlis (1982)<br />

In this chapter, we present some of the engineering that went in the robotic player (bot)<br />

implementation, which may help the comprehension of the organization <strong>and</strong> utility of the<br />

different chapters. We will also present the different flows of in<strong>for</strong>mations <strong>and</strong> how decisions are<br />

made during a game. Finally we will present the results of the full robotic player to various bots<br />

competitions.<br />

8.1 Code architecture . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157<br />

8.2 A game walk-through . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 164<br />

8.3 Results . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 168<br />

8.1 Code architecture<br />

Our implementation 1 (BSD licensed) uses BWAPI 2 to get in<strong>for</strong>mation from <strong>and</strong> to control<br />

StarCraft. The bot’s last major revision (January 2011) consists of 23,234 lines of C++ code,<br />

making good use of boost libraries <strong>and</strong> BWTA (Brood War Terrain Analyzer). The learning of<br />

the parameters from the replays is done by separated programs, which serialize the probability<br />

tables <strong>and</strong> distribution parameters, later loaded by BroodwarBotQ each game.<br />

The global (simplified) view of the whole bot’s architecture is shown in Figure 8.1. There<br />

are three main divisions: “Macro” (economical <strong>and</strong> production parts), “Intelligence” (everything<br />

in<strong>for</strong>mation related) <strong>and</strong> “Micro” (military units control/actions). Units (workers, buildings,<br />

military units) control is granted through a centralized Arbitrator to “Macro” parts <strong>and</strong> Goals.<br />

This is a bidding system in which parts wanting a unit bid on it relatively to the importance of<br />

the task they will assign it. There may (should) be better systems but it works. We will now<br />

detail the parts which were explained in the previous three chapters.<br />

1 BroodwarBotQ, code <strong>and</strong> releases: http://github.com/SnippyHolloW/BroodwarBotQ<br />

2 BWAPI: http://code.google.com/p/bwapi/<br />

157

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!