It contains a Python program that translates Game Description Language definitions (usually stored in files with .kif extension) into self-contained Soar agents that simulate the mechanic of the game in working memory and productions.
Run the translator as follows:
python translate.py < input.kif > output.soar
The generated agent contains productions that initialize the game state, proposal rules that propose legal moves, and application rules that update the game state when legal moves are executed. It does not contain any other knowledge, such as which moves to choose or what kinds of heuristics to use.
- translate.py - The main Python script to run.
- common.soar - Productions that need to be included by all generated agents.
- kifs/ - Directory containing example games.
- trans/ - Directory containing Python code that does the actual work.
The generated agent will reference the file "common.soar", so please make sure it's in the same directory or edit the first line of the generated agent file.
Generated agents will create two WMEs on the state - (<S1> ^facts <F1>) and (<S1> ^gs <G1>). All static relations in the game are stored under the facts WME, while dynamic relations are stored under the gs (game state) WME.
A GDL relation (on A B) will take the following form in working memory:
(<G1> ^on <O1>) (<O1> ^p1 A ^p2 B)
- Modify the GDL rules so that each inference is as constrained as possible.
- Use the multi-attributes command to tell Soar about relations that still have a large number of instances so that the RETE delays matching on them until other constraints are in place.
- Joseph Xu
- Soar 8, 9