-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathREADME
35 lines (27 loc) · 1.4 KB
/
README
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
TAEB::AI::Reactive -- a NetHack AI built on the TAEB framework
==================
AUTHORS
-------
TAEB::AI::Reactive is the work of Jeffrey Bosboom <jbosboom@uci.edu>.
PHILOSOPHY
----------
TAEB::AI::Reactive (henceforth referred to as "Reactive") addresses TAEB's
speed problems by being announcement-driven rather than polling the world
model. After all, ScreenScraper and Cartographer are polling NetHack's output
to update the world model anyway -- why duplicate this effort?
Analyzers are the pluggable units of Reactive behavior. Each analyzer
subscribes to events that it cares about, usually saving some
information in analyzer-internal state. When the analyze method is
invoked, the analyzer checks its state to see if it wants to do
something. If it does, it submits an action to do it (possibly asking
the world model for more information now that it knows it wants to act);
otherwise, it suspends itself, so that analyze will not be invoked from
the next_action loop. Suspended analyzers continue to receive events,
so they can reactivate themselves when they want to do something again.
In this way, wasted computation is minimized. (I also find it to be a
cleaner design than polling, but that's a matter of opinion.)
LICENSE
-------
TAEB::AI::Reactive is licensed under the terms of the GNU General
Public License, version 2. See the included LICENSE file for the
full text of the License.