Tuesday, October 21, 2014

melonJS 1.2.0 now in Beta!

Here's something brand new for you! For the first time ever, we're announcing a beta melonJS release on the blog! This is a big step for us, and we think it just goes to show how happy we are with this coming release.

With this beta, we were able to close several long-standing issues with the engine, bringing it up to speed with features that developers have come to expect from a modern game engine. And now we need your help testing these new features!

Download here: https://github.com/melonjs/melonJS/releases/tag/1.2.0-beta.1

Here's a list of highlights for this release:

  • WebGL support has landed! (Currently alpha-quality)
  • Shape-based collision layer has replaced the tile-based collision layer.
  • Many fixes and improvements with collision detection in isometric maps.
  • Physics bodies now support multiple shapes.
  • Automatic collision response handling is enabled by default, and fully customizable.
  • Shape scaling and rotation are supported (especially in TMX maps, Tiled 0.10+)
  • TMX Tileset animations are supported (Tiled 0.10+)

Full details in the CHANGELOG...

The two biggest changes are WebGL and shape-based collisions! Finally, we have started the processes of creating WebGL bindings for melonJS. It is currently an opt-in flag that can be passed to the me.video.init() method. The default is me.video.CANVAS, and you may chose to enable WebGL with me.video.WEBGL, or autodetect (fallback to Canvas if WebGL is unavailable) using me.video.AUTO. The WebGL renderer is currently slower than Canvas, as it is brand new and entirely unoptimized (hence alpha-quality).

Shape-based collisions finally closes every open issue ticket involving collision detection except this one. Fortunately, that bug is easy to workaround, and can likewise be easily fixed. Along with fixing a lot of bugs that were in the old system, the collision shapes support also greatly enhances the developer experience with isometric maps. Previously, collision shapes could not follow the natural flow of the world in an isometric perspective. Now a designer can place any number of "poly-line" objects into the collision layer of an isometric map, and melonJS will automatically apply the appropriate collision response.

The surprising thing is how little work was necessary to complete the isometric support after the basic collision shapes code was in place; shapes in an isometric map only had to be perspective-transformed with a simple rotate and scale operation. This does mean your objects will always be placed in pixel coordinate space (not isometric coordinate space) but this is a feature we may improve upon if developers voice their opinion that working in isometric coordinate space is preferable.

For more information on collision shapes, and how you can update your game to use them, please visit the following forum post: https://groups.google.com/d/msg/melonjs/pUliTbw-W_c/RYUI5JcS41sJ

Automatic collision response means that entities can now behave "solid" while colliding with one another. Previously this required additional code. Now it just happens by default, and can be disabled by return false; from your onCollision callback. This last point is an important step to customizing collision detections; For an example, the "platform" collision tile is no longer supported, but can be added easily with a few extra lines in the onCollision callback. See the Platformer example for the actual code.

The Upgrade Guide lists additional changes, which you will find helpful if you are porting an existing game, and the corresponding updated documentation is available here. With that, please start testing today, and check back in about two weeks for the final release! As always, please post any bugs to our issue tracker, and visit the forums if you have any support requests.

- the melonJS team

No comments:

Post a Comment