Releases: microsoft/malmo
MalmoEnv
Stability release
Addresses various async io issues on MacOS. For use with the MarLo crowdai competion.
Python pip3 installable Malmo
For Malmo to be used widely for both exploring and teaching reinforcement learning in a games environment, it needs to be simple to build and install on multiple operating systems. This release addresses some of the cross platform build issues by removing the C++ XSD code generation and using a modern version of CMake (without custom extensions). This unfortunately entails dropping direct support for Lua and Mono, focusing the project on Python (version 3), while still providing direct support for C++; C# (on Windows and hopefully supporting .NET Core soon) and Java. Other languages that can link to C/C++ (Lua included) can easily be added using Swig (http://www.swig.org/), JVM or other cross language interop mechanism.
We can now provide a pip3 installable (native) Python module (“pip3 install malmo”) for Windows, MacOS and Linux. There are some remaining strict dependencies on Python 3, Boost and Java 8 that still need to be pre-installed but we hope that being able to install Malmo from the network will make it significantly easier to start using Malmo.
Other changes in this release address the set-up and reliability of communications between the Malmo agent and the Minecraft Mod.
Beta for 0.35
0.35.5 spelling
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.
0.31.0
Changes:
HEADLINE CHANGE: New Video Producers!!!
- New: 8bpp luminance producer. Why waste time sending 24bpp RGB video frames across the ether, and then waste the agent's time and effort converting them to 8bpp greyscale? Just send the greyscale image in the first place.
- New: 32bpp depthmap producer. The old 8bpp depthmap (sent on request in the alpha channel of the standard video producer) is retained for backwards compatibility, but you can now request a more precise depthmap, which has been scaled for you to "real" values - eg each pixel represents the distance that pixel is from the agent's eyes in block units.
- New: 24bpp "colour map" - essentially labelled data for use alongside the standard video frame. Each pixel is coloured according to the block, or entity, that produced it. At the moment there is no control over the block colours - they are chosen for you - but in a future release we will add the ability to specify this (eg all gold blocks are currently coloured RGB(232,23,70), but in the future you could request that gold blocks are (255,0,0), and all other blocks are (0,0,0), etc.) There is control over entity colour, so you could, for example, colour all "friendly" entities pink, and all hostile entities green. You can also set the sky colour.
Other changes:
- New: ability to draw chests / other containers, and determine what should go in them.
- New: inventory observations now include inventory of any containers under the agent's gaze.
- New: inventory commands can now swap items between the player's and container's inventories.
- New: ender chest contents can be specified for each agent.
Breaking changes:
Python 3 support!
All our sample/test python code has been "futurised" to work with both Python 2 and Python 3. This shouldn't be a breaking change, but there may now be an extra dependency to install - try pip install future
if the samples don't seem to be working.
0.30.0
Changes:
WE'VE UPGRADED TO A NEWER MINECRAFT!!!!
It was time - while we've been stuck with Minecraft 1.8, four new versions have come out...
We've updated to almost the bleeding edge - Minecraft 1.11.
This means:
- New: Mobs - shulkers, vexes, illagers, polar bears and llamas and many more - check out the
mob_zoo.py
sample for a complete list. - New: Blocks and Items - check out the changes in Types.xsd
Breaking changes:
There have been significant changes to Minecraft, and Forge (which we use for modding), so there may well be some new quirks we've not yet spotted in our testing. The changes we know about are:
- AllowSpawning/AllowedMobs now affects mob_spawners
- "Minecart" entity has been renamed to "MinecartRideable"
- There is a known issue whereby agents with no explicit starting position can sometimes "sink" into the ground at mission start.
Other new features:
- New: Added support for drawing tuned note blocks - see the "note_block_test.py" sample
0.22.0
Changes:
The bulk of the work for this release has been centered around adding logging code to both the Mod and platform, which should significantly help us to track down and fix any future issues with Malmo's socket code, etc.
You can switch the Mod logging on by going to the Mod options (in the Minecraft GUI) - be warned, if you turn the detail up too high this will produce a LOT of logging...
The logs are stored in the logs subdir of the Minecraft folder, and are named after the date/time when that Minecraft instance was run.
On the platform side, switch it on by doing something like this:
MalmoPython.setLogging("where_I_want_it.log", MalmoPython.LoggingSeverityLevel.LOG_ALL)
Again, this will generate a lot of noise unless you opt for something like LOG_WARNINGS, etc.
The two log formats are the same - they start with a timestamp formatted the same way, followed by an "M" for Mod or a "P" for platform, so in theory the two files could be merged and sorted together, which should make forensic debugging a bit easier.
Users can append a line to the platform log by calling, eg, MalmoPython.appendToLog(MalmoPython.LoggingSeverityLevel.LOG_INFO, "Here's some important info...")
This is just intended to make debugging easier - it's not intended as a general purpose log for the user's code. It can be used to add signposts to the log - eg "INFO: started episode #242" which should make searching for problems easier.
Other new features:
- New: ObservationFromRay now returns distance.
- New: ObservationFromFullStats now returns DamageDealt
- New: startMission now provides more error details in exceptions; multi-agent samples hardened by using this.
- New: ObservationFromNearbyEntities now returns entity life.
- New: RewardForDamagingEntity plus sample. (#537)
Assorted bug fixes
Breaking changes:
Hopefully nothing...
0.21.0
0.20.0
Changes:
New features:
- Turn scheduler - for multi-agent scenarios where each agent must waits its turn. (#441)
- Moving target decorator - for scenarios where agents need to chase things - this provides a simpler, more easily controlled thing for them to chase. (#458)
- Scripts to help with building/installing Malmo - these are currently works in progress - use them at your own peril! The linux script currently only supports Debian and Ubuntu. Even if they don't work perfectly, they may serve to speed up the process of installing or building.
Breaking changes:
Hopefully none!
Which version?
Unless you want to use the Arcade Learning Environment, avoid the _withALE builds.