Project Malmo is a platform for Artificial Intelligence experimentation and research built on top of Minecraft. We aim to inspire a new generation of research into challenging new problems presented by this unique environment.
DaveyBiggers on master
Microsoft mandatory file Merge pull request #926 from mi… (compare)
@AndKram - Can you please expand on this note
NOTE: If instead of a dynamic loop, you hard code the run_agent
function calls, then the evaluation of your code will fail in case
of a tournament, where multiple submissions can control different agents
in the same game.
how does this work in the tournament format?
gym.error.UnregisteredEnv: No registered env with id: MarLo-BuildbattleTrain1-v0
. After following the instructions in the marlo-single-agent-starter-kit
(same as marlo-multi-agent-starter-kit
, I realized, I must also install the repository https://github.com/crowdAI/marLo
using python setup.py install
. The repository marLo
does contain the environment, but the error persists after the installation. How can I fix this?
Traceback (most recent call last):
File "tutorial_1.py", line 24, in <module>
import MalmoPython
ImportError: dlopen(/Users/programming/Programming/Malmo/MalmoPlatform/Malmo/samples/Python_examples/MalmoPython.so, 2): Symbol not found: __ZNK5boost16re_detail_10670031cpp_regex_traits_implementationIcE17transform_primaryEPKcS4_
File "/anaconda3/envs/marlo/lib/python3.6/site-packages/marlo/base_env_builder.py", line 577, in transform_mission_xml
vp = etree.Element(ns + "VideoProducer")
NameError: name 'etree' is not defined
. I can run the single agent example though.
Hi, did you test using multiprocessing to run the code. I met a problem and hope to get some help.
I first used ctx = multiprocessing.get_context('fork')
to create a multiprocessing context.
Then in a for .. in ...
loop, I created process = ctx.Process(target=runner, args=(join_tokens, i, shared_buffer))
, and in runner
, I used join_tokens
and i
to init role i's env to run. Multi agent ran well in the first rollout. But when they finished the first rollout and then got to reset(), then the first role's minecraft worked well, waiting for the second to join. But the second role's minecraft crashed, with logging said:
[15:24:53] [Client thread/INFO]: [STDOUT]: CLIENT request state: MISSION_ENDED
[15:24:53] [Client thread/INFO]: [STDOUT]: CLIENT enter state: MISSION_ENDED
[15:24:53] [Client thread/INFO]: [STDOUT]: Sending mission ended message to localhost:10638.
[15:24:53] [Client thread/INFO]: [STDOUT]: CLIENT request state: WAITING_FOR_SERVER_MISSION_END
[15:24:53] [Client thread/INFO]: [STDOUT]: CLIENT enter state: WAITING_FOR_SERVER_MISSION_END
[15:24:53] [Client thread/INFO]: [STDOUT]: CLIENT request state: DORMANT
[15:24:53] [Client thread/INFO]: [STDOUT]: CLIENT enter state: DORMANT
[15:24:53] [Client thread/INFO]: [STDOUT]: JETTISONING 0 COMMANDS
[15:24:54] [Thread-22/INFO]: [STDOUT]: Received from localhost:
[15:24:54] [Thread-22/INFO]: [STDOUT]: MALMO_REQUEST_CLIENT:0.36.0:20000:954b2199-9382-4296-accd-1e2e8878582b
[15:24:54] [Thread-22/INFO]: [STDOUT]: ==== RES: - 6374
[15:24:54] [Thread-22/INFO]: [STDOUT]: REPLYING WITH: MALMOOK
[15:24:55] [Client thread/INFO] [FML]: Applying holder lookups
[15:24:55] [Client thread/INFO] [FML]: Holder lookups applied
[15:24:56] [Client thread/FATAL]: Unreported exception thrown!
java.lang.StackOverflowError
at net.minecraft.client.gui.FontRenderer.getFormatFromString(FontRenderer.java:984) ~[FontRenderer.class:?]
at net.minecraft.client.gui.FontRenderer.wrapFormattedStringToWidth(FontRenderer.java:887) ~[FontRenderer.class:?]
at net.minecraft.client.gui.FontRenderer.wrapFormattedStringToWidth(FontRenderer.java:888) ~[FontRenderer.class:?]
at net.minecraft.client.gui.FontRenderer.wrapFormattedStringToWidth(FontRenderer.java:888) ~[FontRenderer.class:?]
I am always running my code in Ubuntu and the default test code works well. It uses marlo.threaded
wrapper for multi-agent scenario. I also can train agent using it. But it is more hard to share some variables between threads than between processes.
Hello folks,
We will do Minecraft x Reinforcement learning hands on using malmo/ChainerRL. https://dllab.connpass.com/event/108036/ Sorry it is in Japanese but demand is huge 100 registrations within hours.
we have several challenges;
thanks for your help.
something like this
INFO:marlo.base_env_builder:Agent missed 5 observation(s).
INFO:marlo.base_env_builder:Agent missed 1 observation(s).
INFO:marlo.base_env_builder:Agent missed 3 observation(s).
INFO:marlo.base_env_builder:Mission ended: out_of_time
INFO:marlo.base_env_builder:Mission ended: out_of_time
WARNING:marlo.base_env_builder:Error on attempting to start mission : There are not enough clients available in the ClientPool to start this 2 agent mission.
WARNING:marlo.base_env_builder:Will attempt again after 3 seconds.
WARNING:marlo.base_env_builder:Error on attempting to start mission : Failed to find an available client for this mission - tried all the clients in the supplied client pool.
WARNING:marlo.base_env_builder:Will attempt again after 3 seconds.
but obviously, I should not run out of time, because in the training hours, common situation is that mission ends with command_quota_reached.