0.34.0
Changes:
It's been a while since we had a release, and a lot of work has been going on, so we've skipped straight to 0.34.0.
The main focus has been on Malmo's usefulness as a tool for gathering data, particularly in imitation learning scenarios. A secondary focus has been on stability.
- New: Can now record video streams as individual frames rather than video - eg
my_mission_record.recordBitmaps(MalmoPython.FrameType.DEPTH_MAP)
.
This allows for greater fidelity when recovering frame-action pairs, bypassing the data loss that comes from encoding to mpeg and decoding back to frames.
8bpp luminance and 24bpp colour frames are saved as pgms and ppms respectively. (Saving as pngs is too slow to keep up with the frame rate.) 32bpp depthmaps are saved directly as numpy arrays. (See depth_map_parser.py in the new scripts/tools folder for code which can convert these into images.) - New: "Human" action space and observations, for tighter human-in-the-loop scenarios. This allows us to record mouse and key events directly, through the Minecraft window, rather than requiring the separate human action component. Add the
ObservationFromHuman
handler to your mission xml, and take control of Minecraft (by hitting theEnter
key) - Malmo will receive mouse deltas and keyboard events. There is a matchingHumanLevelCommands
handler which can replay the recorded events. - New: Option to restart Minecraft from the agent.
agentHost.killClient(clientinfo)
will cause Malmo to kill that particular Minecraft client and start up a new one - provided that launchClient.bat/sh was run with the-replaceable
flag. This is useful for long-running experiments - we've found that Minecraft becomes unresponsive over time, and periodically restarting it can be helpful. - New:
ObservationFromSystem
observation handler to return stats on Minecraft's health (eg render/server/client ticks per second) - use in combination with the restart option to keep Minecraft healthy.
Other additions:
- New: Titles and subtitles are now returned as part of the chat observation.
- New:
DrawSign
allows signposts to be drawn with specific text. - New: 'includeNBT' flag for
ObservationFromRay
, to return JSON NBTTagCompound for tile entities. - New samples:
- 'decision_tree_test.py' - demonstrates DrawSign and the includeNBT flag.
- 'braitenberg_simulation.py' to test luminance video producer (and for fun)
- 'mouse_steering_test.py' to test human action space
Fixes:
Many fixes in the area of mission recording - this should now be much more stable.
In addition, the python samples have been tweaked so that they can be run headless as part of the integration test suite.
Extra scripts:
From time to time we find ourselves creating python scripts to carry out some data-processing task on Malmo recorded data, or Malmo log files, etc. These now have a home in scripts/tools
, on the grounds that they might possibly provide useful material for carrying out other tasks in the future.
What are all these Dockerfiles?
In a bid to simplify the Malmo build process, we now build the release binaries using docker containers. The dockerfiles in scripts/docker
set up build environments, with all necessary dependencies installed. This should make releasing new versions of Malmo significantly easier. They can also serve as a form of documentation - consider them to be a more detailed and up-to-date (but slightly less readable) version of the doc/build_linux.md
file.
You can also use them to create your own build environment, should you want an easy way to grab a build of the latest code from master. Put the kettle on while you wait for the docker container to build though.
Support
We are beginning to drop support for some of the older Linux distributions. In particular:
- We are no longer testing against Ubuntu 14.04. The version of mesa which ships with 14.04 is very outdated, and contains a bug which makes it impossible to run the integrated tests headless. We've provided 14.04 binaries, but they are untested.
- Debian 7 is included for now, but will be dropped soon. Note that the version of Python 3 which comes with Debian 7 is too old to work with Malmo's Python samples and tests. (Malmo uses
future
to make the Python code cross-compatible with Python 2 and 3, and this requires Python 3.3 as a minimum.) We've included the Debian 7 Python 3 build for completeness, but it's untested.