Releases: microsoft/malmo
0.19.0
Changes:
New features:
- Multi-agent scenario reworked - now possible to run multi-agents in an offline LAN setting, so no authentication required.
- Version checking - schemas, mod and platform must all have the same version number.
- Time-based rewards. (#126)
- Discrete jumpuse action (great for nerd poling). (#400)
- Team rewards - agents can now work in teams, and share rewards with each other. (#279)
- Discrete strafe and jump actions, autojump and autofall. (#352, #321)
- Simple animation decorator - have fun animating blocks... (#389)
- Boost can now be linked statically, and these release binaries have done so. (#392)
Breaking changes:
Hopefully nothing... but the work on version checking is fairly drastic - if versions don't match, fatal errors will be thrown. This should allow everyone to catch potentially confusing version mismatch errors straight away; keep an eye out for error messages!
Linking statically with boost is also a fairly major change to the releases. It should put an end to errors like #427, #395, #179 etc.etc. If building from source, boost can be linked dynamically as before.
Which version?
Unless you want to use the Arcade Learning Environment, avoid the _withALE builds.
The Redhat build was made with Fedora 23 but may work with other Redhat flavors.
The Ubuntu 16 build was built (statically) against boost 1.62.
0.18.0
Changes:
It's a while since we've built a release, so quite a lot has gone into 0.18...
New features:
- Build battles - added
RewardForStructureCopying
andBuildBattleDecorator
. (#337) WorldTime
andTotalTime
added toObservationFromFullStats
. (#262)- Agent can now quit by using
MissionQuitCommands
. (#170) - Python sample to test initial chunk loading. (#338)
- Added
startAtWithPitchAndYaw
to API. (#295) - Greater control over drawing of rails and stairs. (#323)
- Entities can now be placed by
DrawingDecorator
. (#322) ObservationFromGrid
has new optional attributeabsoluteCoords
for fixed-location grids. (#293)
Fixes:
- Three second grace period on spawning removed. (#88)
AbsoluteMovementCommands
can now teleport outside the current chunk. (#353)FileWorldGenerator
load issue +file_test.py
to test fix. (#342)- Weather is periodically reset to mission requirements. (#264)
ContinuousMovementCommands
now allow the setting of yaw/pitch by Discrete or Absolute movement commands. (#255)- Continuous-mode use/attack weren't correctly triggering rewards for discarding/collecting items. (#303)
- Discrete-mode use/attack weren't correctly triggering rewards for discarding/collecting items. (#297)
Breaking changes:
Most of these are subtle changes which are unlikely to affect anyone, but they do carry the potential to change results / break existing code:
-
Fix: The centre of the grid observation was being rounded to the nearest int in the y-axis. (#370)
This will change your results for cases where the agent is in between blocks in the y-axis, eg if they are jumping / falling / climbing stairs. The grid observation will now be centred on floor(y) rather than floor(y+0.5)
-
Fix: temp folder and "mission_recordings" now removed from path of files in recordings. (#298)
This means the folder structure of your mission recording files has changed - if you've written any automated tools for parsing recordings, you may need to tweak them.
-
New:
AbsoluteMovementCommands
tpx
,tpy
,tpz
now applied immediately.Previously you could combine these commands by sending them immediately after each other - eg to teleport from the current location to (4,200,12) you could send:
tpx 4 tpy 200 tpz 12
and (most of the time) all three actions would be applied together at the next tick. In fact, in previous versions there was no other way to do this, since we hadn't provided a
tp x y z
command.
This latest change, however, means that each individual action will be applied consecutively, so if the agent starts at, say, (16,32,64), they will now visit the intermediate points (4,32,64) and (4,200,64) before arriving at (4,200,12). -
Fix: Extra block properties returned by
ObservationFromRay
are now prefixed with "prop_" to prevent collisions. (#355) -
New: Mission worlds are now deleted after use unless
destroyAfterUse
is false. (#76)The default is for
destroyAfterUse
to be true - so, by default, starting with this version, any Minecraft saved worlds that get created to run the mission will eventually be deleted again after use. (Previous saved worlds won't be touched, and your own worlds should be safe.) If you rely on your saved worlds hanging around, make sure you explicitly set this flag in your XML.
Which version?
Unless you want to use the Arcade Learning Environment, avoid the _withALE builds.
The Redhat build was made with Fedora 23 but may work with other Redhat flavors.
The Ubuntu 16 build was built against boost 1.61; if you still have boost 1.58 installed then use the Ubuntu 15 build.
0.17.0
Changes:
Fix: Discrete use and attack now affect the inventory. (#247)
Fix: Rewards would occasionally get doubled. (#275)
Fix: Stopped mobs spawing illegally. (#280)
New: Added has_mission_begun flag to world state, to solve problems with short missions. (#118, #236)
Fix: [BREAKING CHANGE] Rewards now sent as simple strings rather than XML, for speed - changes recorded rewards format. (#261)
New: ALEAgentHost.setSeed allows ALE experiments to be seeded. (#254)
Fix: No longer need a fresh MissionRecordSpec for each call to startMission. (#256)
New: [BREAKING CHANGE] MissionRecordSpec.getTemporaryDirectory() now moved to AgentHost.getRecordingTemporaryDirectory().
New: MALMO_TEMP_PATH environment variable now used to determine where temp recording files are created. (#21)
New: TimestampedFrame now includes xPos,yPos,zPos,yaw and pitch information. (#257, #250, #231)
Which version?
- Unless you want to use the Arcade Learning Environment, avoid the
_withALE
builds. - If you are on Ubuntu 16.04 then you can use the 15.10 release.
- The
Redhat
build was made with Fedora23 but may work with other Redhat flavors.
Breaking changes:
- If you are parsing the rewards.txt in the saved .tgz mission record, then you will need to change the parser to use the new non-XML format of dimension:value pairs as comma-separated
<int>:<float>
. - If you are using
MissionRecordSpec.getTemporaryDirectory()
then you will need to change it to beAgentHost.getTemporaryDirectory()
0.16.1
Some necessary changes to the ALE wrapping.
0.16.0
Changes:
New: DiscreteCommandHandler now supports AgentQuitFromTouchingBlockType and RewardForTouchingBlockType. (#241)
New: MissionSpec has get/setSummary, getListOfCommandHandlers, getAllowedCommands. (#217)
New: DiscreteCommandHandler now supports attack and use commands. (#219)
New: Bonus - added AllowedMobs to ServerInitialConditions to control which mobs are allowed to spawn (does not affect mob_spawners)
New: Bonus - can now draw mob_spawner blocks and specify the entity they spawn as a variant.
New: ObservationFromRay returns info about nearest block/item/entity in the agent's direct line of sight. (#184)
Fix: RewardForDiscardingItem/RewardForCollectingItem now work with variations, colours etc.
Fix: Inventory and Entity observations now return information in the same format we use to specify things (eg Type, Variation, Colour)
New: More types supported in BlockDrawing, Inventory initialisation etc - see FlowerTypes, EntityTypes, MonsterEggTypes
New: AgentQuitFromCollectingItem (#171)
New: ObservationsFromFullStats now additionally returns Air (#214)
New: Cross-platform Human Action Component
Which version?
- Unless you want to use the Arcade Learning Environment, avoid the
_withALE
builds. - If you are on Ubuntu 16.04 then you can use the 15.10 release.
- The
Redhat
build was made with Fedora23 but may work with other Redhat flavors.
Let us know if you need more builds.
Breaking changes:
- MazeDecorator waypoint items have changed:
Previous syntax:
<Waypoints quantity="10">
<WaypointItem>cookie</WaypointItem>
</Waypoints>
New syntax:
<Waypoints quantity="10">
<WaypointItem type="cookie"/>
</Waypoints>
This allows us to add variants, colours etc - eg, to add spawn eggs of various types:
<Waypoints quantity="10">
<WaypointItem type="spawn_egg" variant="Creeper Skeleton Spider Ozelot"/>
</Waypoints>
ObservationFromHotbar
,ObservationFromFullInventory
,ObservationFromNearbyEntities
etc now return data in the same format as Types.xsd
eg instead of returning a string like "item.dyePowder.red", they will now break the data down into the types / variants / colours found in Types.xsd, and return them separately.
This means that data is now returned in the same format that we send it (eg in DrawItem
, InventoryObject
, RewardForCollectingItem
, etc.etc.)
Deprecations:
InventoryItem
andInventoryBlock
have been deprecated in favour of a single new entity,InventoryObject
. Existing inventory XML will continue to work, butInventoryObject
is now the preferred way to go. It avoids having to make a distinction in the inventory code between blocks and items, and also allows item variations and colours to be specified.
0.15.0
Changes:
New: Added ObservationFromNearbyEntities (#89) and updated reward_for_items_test.py to demonstrate it.
New: Simplified inventory movement with swapInventoryItems command (#148).
New: Can combine inventory slots using new combineInventoryItems command (#189).
New: Free-floating blocks can now be placed using DrawItem, and used in RewardForDiscardingItem/RewardForCollectingItem.
New: Crafting now triggers RewardForDiscardingItem/RewardForCollectingItem.
New: Python bindings changed for videoframe pixels - now returns a native python array, for faster use in numpy/PIL etc. (#187)
Which version?
- Unless you want to use the Arcade Learning Environment, avoid the
_withALE
builds. - If you are on Ubuntu 16.04 then you can use the 15.10 release.
- The
Redhat
build was made with Fedora23 but may work with other Redhat flavors.
Let us know if you need more builds.
Breaking changes:
- Inventory commands are now more sensible. Previously:
selectInventoryItem 3
dropInventoryItem 30
Now:
swapInventoryItems 3 30
- Python image retrieval is now simpler (and much faster):
for frame in world_state.video_frames:
image = Image.frombytes('RGB', (frame.width, frame.height), str( frame.pixels ) )
0.14.0
New: Basic, first stage crafting support added (issue #11).
New: ObservationsFromMazeOptimalPath has been turned into general purpose ObservationFromSubgoalPositionList
New: Maze generator can now take care of quitting mission when agent reaches goal (issue #103)
New: AgentQuitFromReachingCommandQuota (issue #109).
Rewards are now only sent when triggered (issue #120).
Multi-dimensional rewards are now possible, using a 'dimension' parameter on each RewardProducer.
Pitch command had positive as up, which was inconsistent with Minecraft and Placement section.
Breaking changes:
- Rewards that were previously accessed like this:
for reward in world_state.rewards:
print reward.value
are now accessed like this:
for reward in world_state.rewards:
print reward.getValue()
- In the .tgz saved mission file, rewards are now saved as XML rather than JSON.
0.13.0
New: tp x y z command (issue #112)
Fix: Hotbar commands moved from ContinuousMovementCommands to InventoryCommands
Fix: Client quit producers are now queried between executing commands, in cases where commands get clustered.
New: Test for AgentQuitFromReachingPosition
Some MissionSpec calls now take float coordinates to match XML (issue #107). MissionSpec::endAt now takes tolerance parameter.
peekWorldState and getWorldState now return WorldState instances rather than smart pointers (issue #124).
New: API call MissionSpec::setViewpoint to change the camera viewpoint.
Fix: ALE_HAC.py was broken (issue #114).
0.12.0
New: Issue #55 (added forceReset flag to FlatWorldGenerator, DefaultWorldGenerator and FileWorldGenerator).
New: Issue #84 (added seed to FlatWorldGenerator and DefaultWorldGenerator).
Add: Issue #82 (new RewardForDiscardingItem mission handler).
Add: Issue #73 (added new DiscardCurrentItem command to InventoryCommands).
Add: Issue #4 (Overclocking) - can set tick length, and limit onscreen render. (Required XSD change, hence bumping to 0.12)
Fix: Issue #48 (Grid observer crippled by bad TCP string sending method).
Fix: Issue #52 (Malmo's internal Minecraft client/server messages limited to 64k data per message).
Fix: Issue #40 (added tostring() methods to Lua and Python classes).
Fix: Issue #7 (requesting depth map would break the recorded video).
Fix: Issue #81 (changing video size between missions could crash the platform).
Fix: Issue #2 (XSDs no longer need to be in the current folder).
Add: New API call: MissionSpec::requestVideoWithDepth.
Add: New API call: AgentHost::peekWorldState.
N.B. This release contains a bug in ALE_HAC.py. This is fixed in master and will be fixed in the next release.