├── RLcraft
└── __init__.py
├── img
├── maze.png
├── model.png
├── nopca.png
├── pca.png
└── agent-view.png
├── requirements.txt
├── .gitignore
├── missions
├── old
│ ├── cliff_walking1.xml
│ ├── lava_maze.xml
│ ├── lvl3.xml
│ ├── maze_1.xml
│ ├── medium.xml
│ ├── basic.xml
│ ├── hard.xml
│ ├── lure_creeper.xml
│ ├── maze_2.xml
│ ├── lvl1.xml
│ └── lvl2.xml
└── mazes
│ ├── maze16.xml
│ ├── maze17.xml
│ ├── maze18.xml
│ ├── maze19.xml
│ ├── maze28.xml
│ ├── maze29.xml
│ ├── maze30.xml
│ ├── maze31.xml
│ ├── maze136.xml
│ ├── maze137.xml
│ ├── maze138.xml
│ ├── maze139.xml
│ ├── maze152.xml
│ ├── maze153.xml
│ ├── maze154.xml
│ ├── maze155.xml
│ ├── maze48.xml
│ ├── maze49.xml
│ ├── maze50.xml
│ ├── maze51.xml
│ ├── maze60.xml
│ ├── maze61.xml
│ ├── maze62.xml
│ ├── maze63.xml
│ ├── maze64.xml
│ ├── maze65.xml
│ └── maze66.xml
├── demo_load_world.ipynb
├── configs
└── mazes.yml
└── demo_no_RL.py
/RLcraft/__init__.py:
--------------------------------------------------------------------------------
1 | from .maze_env import MalmoMazeEnv
--------------------------------------------------------------------------------
/img/maze.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/drkostas/Minecraft-AI/HEAD/img/maze.png
--------------------------------------------------------------------------------
/img/model.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/drkostas/Minecraft-AI/HEAD/img/model.png
--------------------------------------------------------------------------------
/img/nopca.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/drkostas/Minecraft-AI/HEAD/img/nopca.png
--------------------------------------------------------------------------------
/img/pca.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/drkostas/Minecraft-AI/HEAD/img/pca.png
--------------------------------------------------------------------------------
/img/agent-view.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/drkostas/Minecraft-AI/HEAD/img/agent-view.png
--------------------------------------------------------------------------------
/requirements.txt:
--------------------------------------------------------------------------------
1 | tensorflow==2.6.2
2 | pandas
3 | numpy
4 | ray[default]==2.1.0
5 | ray[rllib]==2.1.0
6 | ray[tune]==2.1.0
7 | attrs==19.1.0
8 | gym
9 | lxml
10 | pillow
11 | jupyter==1.0.0
12 | yaml-config-wrapper==1.0.4
13 | GPUtil
14 | --extra-index-url https://test.pypi.org/simple/
15 | malmo==0.36.0
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | # Byte-compiled / optimized / DLL files
2 | __pycache__/
3 | *.py[cod]
4 | *$py.class
5 |
6 | # C extensions
7 | *.so
8 |
9 | # Distribution / packaging
10 | .Python
11 | build/
12 | develop-eggs/
13 | dist/
14 | downloads/
15 | eggs/
16 | .eggs/
17 | lib/
18 | lib64/
19 | parts/
20 | sdist/
21 | var/
22 | wheels/
23 | pip-wheel-metadata/
24 | share/python-wheels/
25 | *.egg-info/
26 | .installed.cfg
27 | *.egg
28 | MANIFEST
29 |
30 | # PyInstaller
31 | # Usually these files are written by a python script from a template
32 | # before PyInstaller builds the exe, so as to inject date/other infos into it.
33 | *.manifest
34 | *.spec
35 |
36 | # Installer logs
37 | pip-log.txt
38 | pip-delete-this-directory.txt
39 |
40 | # Unit test / coverage reports
41 | htmlcov/
42 | .tox/
43 | .nox/
44 | .coverage
45 | .coverage.*
46 | .cache
47 | nosetests.xml
48 | coverage.xml
49 | *.cover
50 | *.py,cover
51 | .hypothesis/
52 | .pytest_cache/
53 |
54 | # Translations
55 | *.mo
56 | *.pot
57 |
58 | # Django stuff:
59 | *.log
60 | local_settings.py
61 | db.sqlite3
62 | db.sqlite3-journal
63 |
64 | # Flask stuff:
65 | instance/
66 | .webassets-cache
67 |
68 | # Scrapy stuff:
69 | .scrapy
70 |
71 | # Sphinx documentation
72 | docs/_build/
73 |
74 | # PyBuilder
75 | target/
76 |
77 | # Jupyter Notebook
78 | .ipynb_checkpoints
79 |
80 | # IPython
81 | profile_default/
82 | ipython_config.py
83 |
84 | # pyenv
85 | .python-version
86 |
87 | # pipenv
88 | # According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
89 | # However, in case of collaboration, if having platform-specific dependencies or dependencies
90 | # having no cross-platform support, pipenv may install dependencies that don't work, or not
91 | # install all needed dependencies.
92 | #Pipfile.lock
93 |
94 | # PEP 582; used by e.g. github.com/David-OConnor/pyflow
95 | __pypackages__/
96 |
97 | # celery beat schedule file
98 | celerybeat-schedule
99 | celerybeat.pid
100 |
101 | # SageMath parsed files
102 | *.sage.py
103 |
104 | # dotenv
105 | .env
106 |
107 | # virtualenv
108 | .venv
109 | env/
110 | venv/
111 | ENV/
112 | env.bak/
113 | venv.bak/
114 |
115 | # Spyder project settings
116 | .spyderproject
117 | .spyproject
118 |
119 | # Rope project settings
120 | .ropeproject
121 |
122 | # mkdocs documentation
123 | /site
124 |
125 | # mypy
126 | .mypy_cache/
127 | .dmypy.json
128 | dmypy.json
129 |
130 | # Pyre type checker
131 | .pyre/
132 |
133 | # IDE settings
134 | .vscode/
135 | /.idea
136 |
137 | # Tmp files
138 | *tmp*.*
139 |
140 | # Tars
141 | *.gz
142 | *.tar
143 | *.bz2
144 | *.zip
145 | *.7z
146 |
147 | # Malmo folder (should be downloaded manually)
148 | MalmoPlatform
149 |
150 | # Custom
151 | .DS_Store
152 | tmp*
153 | logs
154 | minex86
--------------------------------------------------------------------------------
/missions/old/cliff_walking1.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Cliff walking mission based on Sutton and Barto.
6 |
7 |
8 |
9 | {PLACEHOLDER_MSPERTICK}
10 |
11 |
12 |
13 |
14 |
18 | clear
19 | false
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 | Cristina
39 |
40 |
41 |
42 |
43 |
44 |
45 | {PLACEHOLDER_WIDTH}
46 | {PLACEHOLDER_HEIGHT}
47 |
48 |
49 |
50 | attack
51 |
52 |
53 |
54 |
55 |
56 |
57 |
58 |
59 |
60 |
61 |
62 |
63 |
64 |
65 |
--------------------------------------------------------------------------------
/missions/old/lava_maze.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Lava Maze
5 |
6 |
7 |
8 |
9 | {PLACEHOLDER_MSPERTICK}
10 |
11 |
12 |
13 |
14 |
18 | clear
19 | false
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 | {PLACEHOLDER_MAZESEED}
31 |
32 |
33 |
34 |
35 |
36 |
37 | 0.6
38 | false
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 | Agent0
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
56 |
57 |
58 | {PLACEHOLDER_WIDTH}
59 | {PLACEHOLDER_HEIGHT}
60 |
61 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
--------------------------------------------------------------------------------
/missions/old/lvl3.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | Lure Creeper
4 |
5 |
6 |
7 |
8 | {PLACEHOLDER_MSPERTICK}
9 |
10 |
11 |
12 |
13 |
17 | clear
18 | false
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 | MineRLAgent
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
56 | {PLACEHOLDER_WIDTH}
57 | {PLACEHOLDER_HEIGHT}
58 |
59 |
60 |
61 |
62 |
--------------------------------------------------------------------------------
/missions/old/maze_1.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Run the maze!
6 |
7 |
8 |
9 |
10 |
14 | clear
15 | false
16 |
17 |
18 |
19 |
20 |
21 | 0.9
22 | random
23 | random
24 | false
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 | Jason Bourne
39 |
40 |
41 |
42 |
43 |
44 |
45 | {PLACEHOLDER_WIDTH}
46 | {PLACEHOLDER_HEIGHT}
47 |
48 |
49 |
50 | attack
51 |
52 |
53 |
54 |
55 |
56 |
57 |
58 |
59 |
60 |
61 |
62 |
--------------------------------------------------------------------------------
/missions/old/medium.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Find the goal! This is Hotel California!
5 |
6 |
7 |
8 |
9 | true
10 |
11 |
12 |
13 |
14 |
18 | clear
19 | false
20 |
21 |
22 |
23 |
24 |
25 | 25
26 | 10
27 | 25
28 | 14
29 |
30 | 2
31 | 2
32 | 1
33 |
34 |
35 | 1
36 | 1
37 | 1
38 | 1
39 | 1
40 |
41 |
42 | 1
43 | 1
44 | 1
45 |
46 | 1
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 | James Bond
56 |
57 |
58 |
59 |
60 |
61 | 320
62 | 240
63 |
64 |
65 |
66 |
67 | attack
68 |
69 |
70 |
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
--------------------------------------------------------------------------------
/missions/old/basic.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Find the goal!
5 |
6 |
7 |
8 |
9 | true
10 |
11 |
12 |
13 |
14 |
18 | clear
19 | false
20 |
21 |
22 |
23 |
24 |
25 | 7
26 | 7
27 | 7
28 | 0
29 |
30 | 0
31 | 0
32 | 0
33 |
34 |
35 | 0
36 | 0
37 | 0
38 | 0
39 | 0
40 |
41 |
42 | 0
43 | 0
44 | 0
45 |
46 | 1
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 | James Bond
56 |
57 |
58 |
59 |
60 |
61 | 320
62 | 240
63 |
64 |
65 |
66 |
67 | attack
68 |
69 |
70 |
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 |
--------------------------------------------------------------------------------
/missions/old/hard.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Find the goal! Welcome to the Buckingham Palace!
5 |
6 |
7 |
8 |
9 | true
10 |
11 |
12 |
13 |
14 |
18 | clear
19 | false
20 |
21 |
22 |
23 |
24 |
25 | 32
26 | 20
27 | 32
28 | 32
29 |
30 | 3
31 | 3
32 | 2
33 |
34 |
35 | 0
36 | 0
37 | 0
38 | 0
39 | 0
40 |
41 |
42 | 0
43 | 0
44 | 0
45 |
46 | 0.5
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 | James Bond
56 |
57 |
58 |
59 |
60 |
61 | 320
62 | 240
63 |
64 |
65 |
66 |
67 | attack
68 |
69 |
70 |
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
--------------------------------------------------------------------------------
/missions/old/lure_creeper.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Lure Creeper
5 |
6 |
7 |
8 |
9 | {PLACEHOLDER_MSPERTICK}
10 |
11 |
12 |
13 |
14 |
18 | clear
19 | false
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 | {PLACEHOLDER_MAZESEED}
31 |
32 |
33 |
34 |
35 |
36 |
37 | 0.1
38 | false
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 | Agent0
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
56 |
57 |
58 | {PLACEHOLDER_WIDTH}
59 | {PLACEHOLDER_HEIGHT}
60 |
61 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
--------------------------------------------------------------------------------
/missions/old/maze_2.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Run the maze!
6 |
7 |
8 |
9 |
10 |
14 | clear
15 | false
16 |
17 |
18 |
19 |
20 |
21 | 0.5
22 | random
23 | random
24 | false
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 | Jason Bourne
39 |
40 |
41 |
42 |
43 |
44 | 320
45 | 240
46 |
47 |
48 |
49 | attack
50 |
51 |
52 |
53 |
54 |
55 |
56 |
57 |
58 |
59 |
60 |
61 |
62 |
63 |
64 |
--------------------------------------------------------------------------------
/demo_load_world.ipynb:
--------------------------------------------------------------------------------
1 | {
2 | "cells": [
3 | {
4 | "cell_type": "code",
5 | "execution_count": 4,
6 | "metadata": {},
7 | "outputs": [],
8 | "source": [
9 | "#automatically reload modules when they have changed\n",
10 | "%reload_ext autoreload\n",
11 | "from pathlib import Path\n",
12 | "import random\n",
13 | "import os\n",
14 | "\n",
15 | "from yaml_config_wrapper import Configuration\n",
16 | "from RLcraft import MalmoMazeEnv"
17 | ]
18 | },
19 | {
20 | "cell_type": "code",
21 | "execution_count": 6,
22 | "metadata": {},
23 | "outputs": [
24 | {
25 | "name": "stdout",
26 | "output_type": "stream",
27 | "text": [
28 | "Configuration file loaded successfully from path: /Users/gkos/Insync/Gdrive/Projects/UTK/Minecraft-AI/configs/mazes.yml\n",
29 | "Configuration Tag: mazes-v1\n",
30 | "Generating new seed ...\n",
31 | "Loading environment ...\n",
32 | "Resetting environment ...\n",
33 | "Environment Loaded!\n"
34 | ]
35 | }
36 | ],
37 | "source": [
38 | "try:\n",
39 | " env.close()\n",
40 | "except:\n",
41 | " pass\n",
42 | "\n",
43 | "yml_path = 'configs/mazes.yml'\n",
44 | "# Load YML config file\n",
45 | "c = Configuration(config_src=yml_path)\n",
46 | "# Load configs from config class\n",
47 | "general_config = c.get_config('general')\n",
48 | "train_config = c.get_config('train')[0]['config']\n",
49 | "env_config = train_config['env_config']\n",
50 | "\n",
51 | "# Set Schema path\n",
52 | "os.environ['MALMO_XSD_PATH'] = '/Users/gkos/Insync/Gdrive/Projects/UTK/Minecraft-AI/MalmoPlatform/Schemas'\n",
53 | "# Generate a seed for maze \n",
54 | "print(\"Generating new seed ...\")\n",
55 | "maze_seed = random.randint(1, 9999)\n",
56 | "print(\"Loading environment ...\")\n",
57 | "env = MalmoMazeEnv(\n",
58 | " mazeseed=maze_seed,\n",
59 | " xml=env_config[\"xml\"],\n",
60 | " width=env_config[\"width\"],\n",
61 | " height=env_config[\"height\"],\n",
62 | " millisec_per_tick=env_config['millisec_per_tick'],\n",
63 | " mission_timeout_ms=env_config['mission_timeout_ms'],\n",
64 | " step_reward=env_config['step_reward'],\n",
65 | " win_reward=env_config['win_reward'],\n",
66 | " lose_reward=env_config['lose_reward'],\n",
67 | " action_space=env_config['action_space'],\n",
68 | " client_port=env_config['client_port'],\n",
69 | " time_wait=env_config['time_wait'],\n",
70 | " max_loop=env_config['max_loop'])\n",
71 | "print(\"Resetting environment ...\")\n",
72 | "_ = env.reset()\n",
73 | "print(\"Environment Loaded!\")\n"
74 | ]
75 | },
76 | {
77 | "cell_type": "code",
78 | "execution_count": 7,
79 | "metadata": {},
80 | "outputs": [],
81 | "source": [
82 | "env.close()"
83 | ]
84 | }
85 | ],
86 | "metadata": {
87 | "kernelspec": {
88 | "display_name": "minerl",
89 | "language": "python",
90 | "name": "python3"
91 | },
92 | "language_info": {
93 | "codemirror_mode": {
94 | "name": "ipython",
95 | "version": 3
96 | },
97 | "file_extension": ".py",
98 | "mimetype": "text/x-python",
99 | "name": "python",
100 | "nbconvert_exporter": "python",
101 | "pygments_lexer": "ipython3",
102 | "version": "3.6.15"
103 | },
104 | "orig_nbformat": 4,
105 | "vscode": {
106 | "interpreter": {
107 | "hash": "75234d1335ff66cfe5d0bc1388cf2cdd424fb0816c3e6a45c858cda25df5e6da"
108 | }
109 | }
110 | },
111 | "nbformat": 4,
112 | "nbformat_minor": 2
113 | }
114 |
--------------------------------------------------------------------------------
/configs/mazes.yml:
--------------------------------------------------------------------------------
1 | tag: mazes-v1
2 | general:
3 | config:
4 | name: Mazes
5 | log_path: ./logs
6 | evaluation_interval: 1
7 | checkpoint_path: ./checkpoints
8 | save_freq: 5
9 | train_epochs: 30
10 | num_gpus: 1
11 | train: # Every config is a different training agent
12 | # --- Agent 1 --- #
13 | - config:
14 | env_config:
15 | xml: missions/mazes/maze*.xml
16 | width: 84
17 | height: 84
18 | millisec_per_tick: 1
19 | maze_seed: 1 # will be replaced by the code
20 | mission_timeout_ms: 300000 # This is a good timeout for the maze
21 | step_reward: -1
22 | win_reward: 85
23 | lose_reward: -100
24 | action_space: # The order of the actions is rettained in the action space
25 | - move 1 # move forward
26 | - move -1 # move backward
27 | - strafe 1 # move right
28 | - strafe -1 # move left
29 | - turn 1 # turn right
30 | - turn -1 # turn left
31 | client_port: 10000 # malmo port
32 | time_wait: 0.05 # time to wait for retreiving world state (when MsPerTick=20)
33 | max_loop: 50 # wait till TIME_WAIT * MAX_LOOP seconds for each action
34 | num_workers: 1
35 | framework: tf
36 | model:
37 | fcnet_hiddens:
38 | - 64
39 | - 64
40 | conv_filters: null # will be replaced by the code
41 | fcnet_activation: relu
42 | grayscale: True
43 | #disable_env_checking: True
44 | #evaluation_config:
45 | #render_env: False
46 | # --- Agent 2 --- # [No Turning left or right]
47 | - config:
48 | env_config:
49 | xml: missions/mazes/maze*.xml
50 | width: 84
51 | height: 84
52 | millisec_per_tick: 50
53 | maze_seed: 1 # will be replaced by the code
54 | mission_timeout_ms: 300000 # This is a good timeout for the maze
55 | step_reward: -1
56 | win_reward: 85
57 | lose_reward: -100
58 | action_space: # The order of the actions is rettained in the action space
59 | - move 1 # move forward
60 | - move -1 # move backward
61 | - strafe 1 # move right
62 | - strafe -1 # move left
63 | client_port: 10000 # malmo port
64 | time_wait: 0.05 # time to wait for retreiving world state (when MsPerTick=20)
65 | max_loop: 50 # wait till TIME_WAIT * MAX_LOOP seconds for each action
66 | num_workers: 1
67 | framework: tf
68 | model:
69 | fcnet_hiddens:
70 | - 64
71 | - 64
72 | conv_filters: null # will be replaced by the code
73 | fcnet_activation: relu
74 | grayscale: True
75 | #disable_env_checking: True
76 | #evaluation_config:
77 | #render_env: False
78 | # --- Agent 3 --- # [No side ways moving (should turn instead)]
79 | - config:
80 | env_config:
81 | xml: missions/mazes/maze*.xml
82 | width: 140
83 | height: 140
84 | millisec_per_tick: 5
85 | maze_seed: 1 # will be replaced by the code
86 | mission_timeout_ms: 90000 # This is a good timeout for the maze
87 | step_reward: -1
88 | win_reward: 85
89 | lose_reward: -100
90 | action_space: # The order of the actions is rettained in the action space
91 | - move 1 # move forward
92 | - move -1 # move backward
93 | - turn 1 # turn right
94 | - turn -1 # turn left
95 | client_port: 9000 # malmo port
96 | time_wait: 0.05 # time to wait for retreiving world state (when MsPerTick=20)
97 | max_loop: 50 # wait till TIME_WAIT * MAX_LOOP seconds for each action
98 | num_workers: 1
99 | framework: tf
100 | model:
101 | fcnet_hiddens:
102 | - 64
103 | - 64
104 | conv_filters: null # will be replaced by the code
105 | fcnet_activation: relu
106 | grayscale: True
107 | disable_env_checking: True
108 | #disable_env_checking: True
109 | evaluation_config:
110 | render_env: False
--------------------------------------------------------------------------------
/demo_no_RL.py:
--------------------------------------------------------------------------------
1 | import argparse
2 | from pathlib import Path
3 | import random
4 | import json
5 | from typing import Dict
6 | import time
7 | from yaml_config_wrapper import Configuration
8 | from RLcraft import MalmoMazeEnv
9 |
10 |
11 | def get_args():
12 | parser = argparse.ArgumentParser()
13 | # Required Args
14 | required_args = parser.add_argument_group('Required Arguments')
15 | config_file_params = {
16 | 'type': argparse.FileType('r'),
17 | 'required': True,
18 | 'help': "The configuration yml file"
19 | }
20 | required_args.add_argument('-c', '--config-file', **config_file_params)
21 | # Optional args
22 | optional_args = parser.add_argument_group('Optional Arguments')
23 | optional_args.add_argument("--num_gpus",
24 | type=int,
25 | required=False,
26 | default=0,
27 | help="number of gpus to use for training")
28 | args = parser.parse_args()
29 | return args
30 |
31 |
32 | def create_env(config: Dict):
33 | """ Create a custom OpenAI gym environment (custom MalmoMazeEnv).
34 | """
35 | maze_seed = random.randint(1, 9999)
36 | env = MalmoMazeEnv(
37 | mazeseed=maze_seed,
38 | xml=config["xml"],
39 | width=config["width"],
40 | height=config["height"],
41 | millisec_per_tick=config['millisec_per_tick'],
42 | mission_timeout_ms=config['mission_timeout_ms'],
43 | step_reward=config['step_reward'],
44 | win_reward=config['win_reward'],
45 | lose_reward=config['lose_reward'],
46 | action_space=config['action_space'],
47 | client_port=config['client_port'],
48 | time_wait=config['time_wait'],
49 | max_loop=config['max_loop'])
50 | return env
51 |
52 |
53 | def process_obs(np_obs, info):
54 | """ Process the observation from the environment. """
55 | # obs is a numpy array of shape (height, width, 3)
56 | # info is a dictionary but we have to transform it to use it
57 | info_obs = json.loads(info.observations[-1].text)
58 | floor_data = info_obs['floor10x10']
59 | time_data = info_obs['TotalTime']
60 | xpos_data = info_obs['XPos']
61 | ypos_data = info_obs['YPos']
62 | zpos_data = info_obs['ZPos']
63 | yaw_data = info_obs['Yaw'] # where the player is facing
64 | hp_data = info_obs['Life']
65 | obs = {}
66 | obs['rgb'] = np_obs
67 | obs['floor'] = floor_data
68 | obs['time'] = time_data
69 | obs['xpos'] = xpos_data
70 | obs['ypos'] = ypos_data
71 | obs['zpos'] = zpos_data
72 | obs['yaw'] = yaw_data
73 | obs['hp'] = hp_data
74 | return obs
75 |
76 |
77 | def main():
78 | """ Run a the game with a random agent. """
79 | # Read command arguments
80 | args = get_args()
81 | # Load YML config file
82 | c = Configuration(config_src=args.config_file)
83 | # Load configs from config class
84 | general_config = c.get_config('general')
85 | train_config = c.get_config('train')[0]['config']
86 | env_config = train_config['env_config']
87 |
88 | run = True
89 | while run:
90 | print("Loading environment ...")
91 | env = create_env(env_config)
92 | print("Resetting environment ...")
93 | print(env.reset())
94 | print("The world is loaded.")
95 | print("Press Enter and F5 key in Minecraft to show third-person view.")
96 | input("Press any key to start simulation")
97 | done = False
98 | while not done:
99 | action = env.action_space.sample()
100 | # Actions: 0 -> move (frwd), 1 -> right, 2 -> left
101 | np_obs, reward, done, info = env.step(action)
102 | observations = process_obs(np_obs, info)
103 | done = True
104 | print(observations)
105 | env.render()
106 | user_choice = input(
107 | "Enter 'N' to exit, 'Y' to run new episode [Y/n]: ").lower()
108 | if user_choice.lower() in ['n', 'no']:
109 | run = False
110 | else:
111 | time.sleep(5)
112 | env.close()
113 |
114 | print("Done.")
115 |
116 |
117 | if __name__ == '__main__':
118 | main()
119 |
--------------------------------------------------------------------------------
/missions/old/lvl1.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Lure Creeper
5 |
6 |
7 |
8 |
9 | {PLACEHOLDER_MSPERTICK}
10 |
11 |
12 |
13 |
14 |
18 | clear
19 | false
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 | Steve
54 |
55 |
56 |
59 |
60 |
61 |
62 |
63 | {PLACEHOLDER_WIDTH}
64 | {PLACEHOLDER_HEIGHT}
65 |
66 |
67 |
68 |
69 |
70 |
76 |
81 |
82 |
83 |
84 |
87 |
88 |
89 |
90 |
91 |
92 |
93 |
94 |
95 |
96 |
97 |
98 |
99 |
100 |
--------------------------------------------------------------------------------
/missions/old/lvl2.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | $(ENV_NAME)
7 |
8 |
9 |
10 | 50
11 |
12 |
13 |
14 |
15 |
19 | clear
20 | false
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 | 1
43 | 0
44 | 1
45 | 0
46 | diamond_block
47 | circle
48 |
49 | 0
50 | 1
51 | false
52 |
53 |
54 |
55 |
56 |
57 |
58 |
59 | MineRLAgent
60 |
61 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 | 128
70 | 96
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 | moveMouse
79 | inventory
80 |
81 |
82 |
83 |
84 | attack
85 |
86 |
87 |
88 |
89 |
90 |
91 |
92 |
93 |
94 |
95 |
96 |
97 |
98 |
99 |
100 |
101 |
102 |
103 |
104 |
105 |
106 |
--------------------------------------------------------------------------------
/missions/mazes/maze16.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Survive the farm fire!
5 |
6 |
7 | {PLACEHOLDER_MSPERTICK}
8 |
9 |
10 |
11 |
15 | clear
16 | true
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 | Survivor
55 |
56 |
57 |
58 |
59 |
60 |
61 |
62 |
63 |
64 | attack
65 |
66 |
67 |
68 | {PLACEHOLDER_WIDTH}
69 | {PLACEHOLDER_HEIGHT}
70 |
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 |
85 |
86 |
87 |
88 |
89 |
90 |
91 |
92 |
--------------------------------------------------------------------------------
/missions/mazes/maze17.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Survive the farm fire!
5 |
6 |
7 | {PLACEHOLDER_MSPERTICK}
8 |
9 |
10 |
11 |
15 | clear
16 | true
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 | Survivor
55 |
56 |
57 |
58 |
59 |
60 |
61 |
62 |
63 |
64 | attack
65 |
66 |
67 |
68 | {PLACEHOLDER_WIDTH}
69 | {PLACEHOLDER_HEIGHT}
70 |
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 |
85 |
86 |
87 |
88 |
89 |
90 |
91 |
92 |
--------------------------------------------------------------------------------
/missions/mazes/maze18.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Survive the farm fire!
5 |
6 |
7 | {PLACEHOLDER_MSPERTICK}
8 |
9 |
10 |
11 |
15 | clear
16 | true
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 | Survivor
55 |
56 |
57 |
58 |
59 |
60 |
61 |
62 |
63 |
64 | attack
65 |
66 |
67 |
68 | {PLACEHOLDER_WIDTH}
69 | {PLACEHOLDER_HEIGHT}
70 |
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 |
85 |
86 |
87 |
88 |
89 |
90 |
91 |
92 |
--------------------------------------------------------------------------------
/missions/mazes/maze19.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Survive the farm fire!
5 |
6 |
7 | {PLACEHOLDER_MSPERTICK}
8 |
9 |
10 |
11 |
15 | clear
16 | true
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 | Survivor
55 |
56 |
57 |
58 |
59 |
60 |
61 |
62 |
63 |
64 | attack
65 |
66 |
67 |
68 | {PLACEHOLDER_WIDTH}
69 | {PLACEHOLDER_HEIGHT}
70 |
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 |
85 |
86 |
87 |
88 |
89 |
90 |
91 |
92 |
--------------------------------------------------------------------------------
/missions/mazes/maze28.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Survive the farm fire!
5 |
6 |
7 | {PLACEHOLDER_MSPERTICK}
8 |
9 |
10 |
11 |
15 | clear
16 | true
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 | Survivor
55 |
56 |
57 |
58 |
59 |
60 |
61 |
62 |
63 |
64 | attack
65 |
66 |
67 |
68 | {PLACEHOLDER_WIDTH}
69 | {PLACEHOLDER_HEIGHT}
70 |
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 |
85 |
86 |
87 |
88 |
89 |
90 |
91 |
92 |
--------------------------------------------------------------------------------
/missions/mazes/maze29.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Survive the farm fire!
5 |
6 |
7 | {PLACEHOLDER_MSPERTICK}
8 |
9 |
10 |
11 |
15 | clear
16 | true
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 | Survivor
55 |
56 |
57 |
58 |
59 |
60 |
61 |
62 |
63 |
64 | attack
65 |
66 |
67 |
68 | {PLACEHOLDER_WIDTH}
69 | {PLACEHOLDER_HEIGHT}
70 |
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 |
85 |
86 |
87 |
88 |
89 |
90 |
91 |
92 |
--------------------------------------------------------------------------------
/missions/mazes/maze30.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Survive the farm fire!
5 |
6 |
7 | {PLACEHOLDER_MSPERTICK}
8 |
9 |
10 |
11 |
15 | clear
16 | true
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 | Survivor
55 |
56 |
57 |
58 |
59 |
60 |
61 |
62 |
63 |
64 | attack
65 |
66 |
67 |
68 | {PLACEHOLDER_WIDTH}
69 | {PLACEHOLDER_HEIGHT}
70 |
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 |
85 |
86 |
87 |
88 |
89 |
90 |
91 |
92 |
--------------------------------------------------------------------------------
/missions/mazes/maze31.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Survive the farm fire!
5 |
6 |
7 | {PLACEHOLDER_MSPERTICK}
8 |
9 |
10 |
11 |
15 | clear
16 | true
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 | Survivor
55 |
56 |
57 |
58 |
59 |
60 |
61 |
62 |
63 |
64 | attack
65 |
66 |
67 |
68 | {PLACEHOLDER_WIDTH}
69 | {PLACEHOLDER_HEIGHT}
70 |
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 |
85 |
86 |
87 |
88 |
89 |
90 |
91 |
92 |
--------------------------------------------------------------------------------
/missions/mazes/maze136.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Survive the farm fire!
5 |
6 |
7 | {PLACEHOLDER_MSPERTICK}
8 |
9 |
10 |
11 |
15 | clear
16 | true
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 | Survivor
56 |
57 |
58 |
59 |
60 |
61 |
62 |
63 |
64 |
65 | attack
66 |
67 |
68 |
69 | {PLACEHOLDER_WIDTH}
70 | {PLACEHOLDER_HEIGHT}
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 |
85 |
86 |
87 |
88 |
89 |
90 |
91 |
92 |
93 |
--------------------------------------------------------------------------------
/missions/mazes/maze137.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Survive the farm fire!
5 |
6 |
7 | {PLACEHOLDER_MSPERTICK}
8 |
9 |
10 |
11 |
15 | clear
16 | true
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 | Survivor
56 |
57 |
58 |
59 |
60 |
61 |
62 |
63 |
64 |
65 | attack
66 |
67 |
68 |
69 | {PLACEHOLDER_WIDTH}
70 | {PLACEHOLDER_HEIGHT}
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 |
85 |
86 |
87 |
88 |
89 |
90 |
91 |
92 |
93 |
--------------------------------------------------------------------------------
/missions/mazes/maze138.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Survive the farm fire!
5 |
6 |
7 | {PLACEHOLDER_MSPERTICK}
8 |
9 |
10 |
11 |
15 | clear
16 | true
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 | Survivor
56 |
57 |
58 |
59 |
60 |
61 |
62 |
63 |
64 |
65 | attack
66 |
67 |
68 |
69 | {PLACEHOLDER_WIDTH}
70 | {PLACEHOLDER_HEIGHT}
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 |
85 |
86 |
87 |
88 |
89 |
90 |
91 |
92 |
93 |
--------------------------------------------------------------------------------
/missions/mazes/maze139.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Survive the farm fire!
5 |
6 |
7 | {PLACEHOLDER_MSPERTICK}
8 |
9 |
10 |
11 |
15 | clear
16 | true
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 | Survivor
56 |
57 |
58 |
59 |
60 |
61 |
62 |
63 |
64 |
65 | attack
66 |
67 |
68 |
69 | {PLACEHOLDER_WIDTH}
70 | {PLACEHOLDER_HEIGHT}
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 |
85 |
86 |
87 |
88 |
89 |
90 |
91 |
92 |
93 |
--------------------------------------------------------------------------------
/missions/mazes/maze152.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Survive the farm fire!
5 |
6 |
7 | {PLACEHOLDER_MSPERTICK}
8 |
9 |
10 |
11 |
15 | clear
16 | true
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 | Survivor
56 |
57 |
58 |
59 |
60 |
61 |
62 |
63 |
64 |
65 | attack
66 |
67 |
68 |
69 | {PLACEHOLDER_WIDTH}
70 | {PLACEHOLDER_HEIGHT}
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 |
85 |
86 |
87 |
88 |
89 |
90 |
91 |
92 |
93 |
--------------------------------------------------------------------------------
/missions/mazes/maze153.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Survive the farm fire!
5 |
6 |
7 | {PLACEHOLDER_MSPERTICK}
8 |
9 |
10 |
11 |
15 | clear
16 | true
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 | Survivor
56 |
57 |
58 |
59 |
60 |
61 |
62 |
63 |
64 |
65 | attack
66 |
67 |
68 |
69 | {PLACEHOLDER_WIDTH}
70 | {PLACEHOLDER_HEIGHT}
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 |
85 |
86 |
87 |
88 |
89 |
90 |
91 |
92 |
93 |
--------------------------------------------------------------------------------
/missions/mazes/maze154.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Survive the farm fire!
5 |
6 |
7 | {PLACEHOLDER_MSPERTICK}
8 |
9 |
10 |
11 |
15 | clear
16 | true
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 | Survivor
56 |
57 |
58 |
59 |
60 |
61 |
62 |
63 |
64 |
65 | attack
66 |
67 |
68 |
69 | {PLACEHOLDER_WIDTH}
70 | {PLACEHOLDER_HEIGHT}
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 |
85 |
86 |
87 |
88 |
89 |
90 |
91 |
92 |
93 |
--------------------------------------------------------------------------------
/missions/mazes/maze155.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Survive the farm fire!
5 |
6 |
7 | {PLACEHOLDER_MSPERTICK}
8 |
9 |
10 |
11 |
15 | clear
16 | true
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 | Survivor
56 |
57 |
58 |
59 |
60 |
61 |
62 |
63 |
64 |
65 | attack
66 |
67 |
68 |
69 | {PLACEHOLDER_WIDTH}
70 | {PLACEHOLDER_HEIGHT}
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 |
85 |
86 |
87 |
88 |
89 |
90 |
91 |
92 |
93 |
--------------------------------------------------------------------------------
/missions/mazes/maze48.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Survive the farm fire!
5 |
6 |
7 | {PLACEHOLDER_MSPERTICK}
8 |
9 |
10 |
11 |
15 | clear
16 | true
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 | Survivor
56 |
57 |
58 |
59 |
60 |
61 |
62 |
63 |
64 |
65 | attack
66 |
67 |
68 |
69 | {PLACEHOLDER_WIDTH}
70 | {PLACEHOLDER_HEIGHT}
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 |
85 |
86 |
87 |
88 |
89 |
90 |
91 |
92 |
93 |
--------------------------------------------------------------------------------
/missions/mazes/maze49.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Survive the farm fire!
5 |
6 |
7 | {PLACEHOLDER_MSPERTICK}
8 |
9 |
10 |
11 |
15 | clear
16 | true
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 | Survivor
56 |
57 |
58 |
59 |
60 |
61 |
62 |
63 |
64 |
65 | attack
66 |
67 |
68 |
69 | {PLACEHOLDER_WIDTH}
70 | {PLACEHOLDER_HEIGHT}
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 |
85 |
86 |
87 |
88 |
89 |
90 |
91 |
92 |
93 |
--------------------------------------------------------------------------------
/missions/mazes/maze50.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Survive the farm fire!
5 |
6 |
7 | {PLACEHOLDER_MSPERTICK}
8 |
9 |
10 |
11 |
15 | clear
16 | true
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 | Survivor
56 |
57 |
58 |
59 |
60 |
61 |
62 |
63 |
64 |
65 | attack
66 |
67 |
68 |
69 | {PLACEHOLDER_WIDTH}
70 | {PLACEHOLDER_HEIGHT}
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 |
85 |
86 |
87 |
88 |
89 |
90 |
91 |
92 |
93 |
--------------------------------------------------------------------------------
/missions/mazes/maze51.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Survive the farm fire!
5 |
6 |
7 | {PLACEHOLDER_MSPERTICK}
8 |
9 |
10 |
11 |
15 | clear
16 | true
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 | Survivor
56 |
57 |
58 |
59 |
60 |
61 |
62 |
63 |
64 |
65 | attack
66 |
67 |
68 |
69 | {PLACEHOLDER_WIDTH}
70 | {PLACEHOLDER_HEIGHT}
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 |
85 |
86 |
87 |
88 |
89 |
90 |
91 |
92 |
93 |
--------------------------------------------------------------------------------
/missions/mazes/maze60.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Survive the farm fire!
5 |
6 |
7 | {PLACEHOLDER_MSPERTICK}
8 |
9 |
10 |
11 |
15 | clear
16 | true
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 | Survivor
56 |
57 |
58 |
59 |
60 |
61 |
62 |
63 |
64 |
65 | attack
66 |
67 |
68 |
69 | {PLACEHOLDER_WIDTH}
70 | {PLACEHOLDER_HEIGHT}
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 |
85 |
86 |
87 |
88 |
89 |
90 |
91 |
92 |
93 |
--------------------------------------------------------------------------------
/missions/mazes/maze61.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Survive the farm fire!
5 |
6 |
7 | {PLACEHOLDER_MSPERTICK}
8 |
9 |
10 |
11 |
15 | clear
16 | true
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 | Survivor
56 |
57 |
58 |
59 |
60 |
61 |
62 |
63 |
64 |
65 | attack
66 |
67 |
68 |
69 | {PLACEHOLDER_WIDTH}
70 | {PLACEHOLDER_HEIGHT}
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 |
85 |
86 |
87 |
88 |
89 |
90 |
91 |
92 |
93 |
--------------------------------------------------------------------------------
/missions/mazes/maze62.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Survive the farm fire!
5 |
6 |
7 | {PLACEHOLDER_MSPERTICK}
8 |
9 |
10 |
11 |
15 | clear
16 | true
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 | Survivor
56 |
57 |
58 |
59 |
60 |
61 |
62 |
63 |
64 |
65 | attack
66 |
67 |
68 |
69 | {PLACEHOLDER_WIDTH}
70 | {PLACEHOLDER_HEIGHT}
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 |
85 |
86 |
87 |
88 |
89 |
90 |
91 |
92 |
93 |
--------------------------------------------------------------------------------
/missions/mazes/maze63.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Survive the farm fire!
5 |
6 |
7 | {PLACEHOLDER_MSPERTICK}
8 |
9 |
10 |
11 |
15 | clear
16 | true
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 | Survivor
56 |
57 |
58 |
59 |
60 |
61 |
62 |
63 |
64 |
65 | attack
66 |
67 |
68 |
69 | {PLACEHOLDER_WIDTH}
70 | {PLACEHOLDER_HEIGHT}
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 |
85 |
86 |
87 |
88 |
89 |
90 |
91 |
92 |
93 |
--------------------------------------------------------------------------------
/missions/mazes/maze64.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Survive the farm fire!
5 |
6 |
7 | {PLACEHOLDER_MSPERTICK}
8 |
9 |
10 |
11 |
15 | clear
16 | true
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 | Survivor
56 |
57 |
58 |
59 |
60 |
61 |
62 |
63 |
64 |
65 | attack
66 |
67 |
68 |
69 | {PLACEHOLDER_WIDTH}
70 | {PLACEHOLDER_HEIGHT}
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 |
85 |
86 |
87 |
88 |
89 |
90 |
91 |
92 |
93 |
--------------------------------------------------------------------------------
/missions/mazes/maze65.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Survive the farm fire!
5 |
6 |
7 | {PLACEHOLDER_MSPERTICK}
8 |
9 |
10 |
11 |
15 | clear
16 | true
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 | Survivor
56 |
57 |
58 |
59 |
60 |
61 |
62 |
63 |
64 |
65 | attack
66 |
67 |
68 |
69 | {PLACEHOLDER_WIDTH}
70 | {PLACEHOLDER_HEIGHT}
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 |
85 |
86 |
87 |
88 |
89 |
90 |
91 |
92 |
93 |
--------------------------------------------------------------------------------
/missions/mazes/maze66.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Survive the farm fire!
5 |
6 |
7 | {PLACEHOLDER_MSPERTICK}
8 |
9 |
10 |
11 |
15 | clear
16 | true
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 | Survivor
56 |
57 |
58 |
59 |
60 |
61 |
62 |
63 |
64 |
65 | attack
66 |
67 |
68 |
69 | {PLACEHOLDER_WIDTH}
70 | {PLACEHOLDER_HEIGHT}
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 |
85 |
86 |
87 |
88 |
89 |
90 |
91 |
92 |
93 |
--------------------------------------------------------------------------------