Sunday, December 3, 2017

melonJS 5.0.x !

Greetings ! 

As the end of the year is almost there, it's finally time to release a new version of melonJS, that we have been slowly cooking on GitHub for months now.... 

As announced previously in anticipation for ES6, we completely dropped support for all legacy browser/devices not fully supporting ES5, which means that we removed all related polyfill and/or deprecated events from melonjs. If for any obscure reasons you still need to run things on these oldies, you can use an es5-shim to provide with the missing ES5 features (and it is actually now also included in our boilerplate). 

More details on the changelog are available here, but this new version include the following changes :
  • usual update to the audio module
  • fix and improvement to fullscreen and orientation features
  • tons of fixes to input management for gamepad, keyboard, pointer and multitouch
  • fix for renderable when applying transform and anchor points
  • new `isKinematic` property allowing to opt-out from collision and input events
  • support for group layers (Tiled 1.0) 
  • massive update in the build process (switch to karma, and use of chrome headless for the test unit) thanks to the help of kibertoad
The platformer example has been improved as well and now features a virtual gamepad for when used on touch-enabled devices. Definitely a good start for those looking at adding one to their game, give it a try here !

Also do note that a 5.0.1 version has been published in the mean time, fixing a couple of regressions, so make sure to download that latter version from here

Don't forget to check our Wiki for further information on how to use melonJS but also all for how to use the third party tools that we support like Tile of course, but also TexturePacker, PhysicEditor, BitmapFont Generator, PhoneGap, Ejecta, and others ! And of course comments and feedback on this last version are welcome through our forum

As this will probably be the last post of the year, we wish you all a Merry Christmas and an 
Happy New Year ! 

-- the melonJS team

Sunday, January 15, 2017

melonJS 4.1.0 and next ...

We had lots of great feedback after the last 4.0.0 version, some good ones about the new features introduced, but as well bug reports, so together with the new year it's time for a new release.

More details can be found in the changelog, but basically 4.1.0 is about the following improvements :
  • Audio : support the latest howler and new things like a seek function
  • Loader : path configuration, memory usage improvements, support CrossOrigin for WebGL
  • WebGL : added error management for NPOT textures, removed the automatic creation of a canvas overlay for standard font (as a reminder, you should not use regular fonts with WebGL, but rather bitmap fonts) which will save you a couple of sweet megabytes.
  • Pointer Event : fixed a bug on device allowing both mouse & touch events, fixed multiple regressions on multi-touch and mousewheel events.
  • Particles : fixed a huge performance regression 
  • Tiled : cleaned-up and exposed the TMX renderers classes, added several utility methods to convert vector and shapes from and to isometric space coordinates.
  • Debug : fixed the show/hide button in the plugin
  • Documentation: improvements, thanks to krojew, as he tracked down several issues or inconsistencies while working on a Typescript version of the library
Known issuethere is currently a limitation in the 4.1.0 release (from the 4.0.0 version), where applying a transformation to a Sprite does not work if added directly to the game world (as opposed to use that sprite as the renderable component for an entity). This can easily be fixed though by setting the sprite `autoTransform` property to true (see the ticket here). Although it seems an easy fix, this has triggered other changes in the engine linked to anchor management and will therefore only be included in the next major version (as it causes changes in behaviour).

Finally, 4.1.0 being a non major release, there is therefore no API changes at all, so you can just replace the previous 4.0.0 version with this one.

Last but not least, a few words about what will happen for the next two major versions coming :
  • melonJS 5.0.0 : this is 2017 guys, ES6 is almost there and we should almost all already be using it ! But as a first step we decided to completely drop support for all legacy browsers (e.g. not fully supporting ES5). So starting from the next major version, all ES5 polyfills will be removed which means that it's definitely time to update your browser if you want to keep using melonJS. If for any obscure reasons you still need to run things on these oldies, you can use an es5-shim to provide with the missing ES5 features.
  • melonJS 6.0.0 : what rhymes with 6 ? yes, ES6 ! as you maybe saw it coming we will then do the same here and will start supporting ES6 browsers starting from the 6.0.0 version (probably gradually, starting for example with the module support). Now we will certainly keep supporting the 5.x branch in parallel, but most of the big new features will certainly be added only on the 6.x branch, but let's see when we reach that point :)
There is no date yet specifically about these two versions, but 5.0.0 will obviously be the next major version, followed by a 6.0.0 later this year as well.

That's it for today ! Once again thank you guys for your support and feedback on melonJS and see you around on our forum or chat !

-- the melonJS team

Monday, November 28, 2016

melonJS 4.0.0 !

Wahooooo 4.0.0 already !

First of all, lots of improvements have been made since the last version, and especially focusing on the matrix and shape implementation, and related bounding box, transformation. This is not maybe super obvious for now, and more will certainley be done around this in the coming weeks, but it enables a lots of cool things like body shapes free transformation (with bounding box automatically resizing accordingly), free transformation for any renderables (which allows for some more cool stuff like rotating a TMX level easily), and also (for later) to use it as a projection matrix for our viewport/camera. 

Then we also have some really awesome great new stuff like finally a proper support for bitmap font (in the sense that we are not limited to fix-size font anymore as previously), support for sub-pixel rendering, and of course the usual batch of bug fixing including a big fix on our debug panel that finally works in WebGL mode :)

This new version should be quite stable already, it has been used for a couple of projects already, and no major issues were detected. We also spend a bit of time improving our automatic test units, in order to improve code quality and limit regressions in newer versions.

Last but not least, API changes are really minimal (see the upgrade guide), the only reason behind the major version bump being the bitmapfont, as a new font data is now required for the constructor, and thus breaking the previous API compatibility.

More details on the changelog and download links here :

Small reminder, don't forget that our Wiki also contains a tons of information on how to use melonJS but also all the third party tools that we support like Tile of course, but also TexturePacker, PhysicEditor, BitmapFont Generator, PhoneGap, Ejecta, and others !

Have fun, and once again we would like to thank you guys, melonJS would not be there without you ! Sure there are certainely things to improve here and there, new features to add, and your support, feedback and even Pull Request for some of you is definetly what keep this whole community ticking every day :)

-- the melonJS team

Sunday, May 22, 2016

melonJS 3.1.0 - new cool stuff and other fixes !

A little bit after the small maintenance release that was mostly fixing some issues with Ejecta and the new Apple TV,  we're pleased to announce the arrival of its first minor release version since we started to better follow semantic versioning: melonJS 3.1.0!

Download 3.1.0 here:

Some highlights from the full changelog include:

  • required startup code has been greatly simplified, be sure to check the latest boilerplate
  • tons of improvements on the Audio : improved the API to allow things like changing the play rate or allow streaming audio clip, and also of course includes all the latest fixes/addition from Howler made since 3.0.0
  • me.Color now support the new #RGBA and #RRGGBBAA CSS formats
  • all Ejecta hacks from 3.0.0 have been removed, following the improvements made on Ejecta since then, so be sure to grab the last development version as well
  • fixes when using bare renderable objects in the game world around initialisation and recycling.
  • tons of improvements and fix to the TMX support (latest features from latest versions of Tiled,  regression fixes)
  • fixed a huge regression with pointer events not firing with "floating" regions (you definitely want/need to update to 3.1.0 if you make extensive use of pointer/touch events)
  • fixes to the WebGL renderer (rendering under Safari, TMX clearTile function, compatibility with browser supporting Canvas2DContextAttributes.alpha)

In a few words; bug fixing and new features with no breaking changes; this should be a simple drop-in replacement if you're already using v3.0.x !

Special thanks to everyone who contributed to this release with bug reports on the forum, github, and in our gitter chat. We appreciate all the effort you've put into making melonJS the awesome little community it has become.

So, it's time to update! Do let us know what you're building with melonJS, and don't be shy to ask for help or suggestions. We have some friendly developers in the forum that contribute all the time!

- the melonJS team

Tuesday, February 23, 2016

melonJS 3.0.1 and the new apple TV

Hi Guys,

Following the last major release, I wanted to have some fun time and spent a few days experimenting with Ejecta and the new apple TV ! After a few fixes that are now available in the last 3.0.1 version of melonJS, I managed to get our platformer running on it, and created a quick guide in our wiki (here) that explains the process on how to get your melonJS game working with it :)

Of course it's initially thanks to the amazing work of Dominic Szablewski on Ejecta, but I must say that seeing a pure javascript game running on a TV is pretty cool, especially considering the very small amount of effort that was required to "convert" it ! That's it for today, and if you have yourself the opportunity to give it a try, please provide us some feedback on your experience through our forum  :)

Last but not least, a small reminder on our small giveaway contest, where you can win a license of the awesome Master Spy game, still plenty of time to enter and try your luck !

--- the melonJS team

Thursday, February 4, 2016

Win a free copy of Master Spy !

Hi Guys,

To celebrate the release of the latest 3.0.0 version of melonJS, and thanks to Turbogun, we are giving away 2 licenses of Master Spy ! Master Spy is a stealth-based precision platformer with old school cutscenes, that was initially developed using melonJS, and available through Steam !

If you have not yet heard about it, and if you like challenging stealth games with high quality pixel arts, I strongly encourage you to check it out

Master Spy is an expertly-crafted stealth game blended seamlessly with a precision platformer.” 
4.5/5 – Hardcore Gamer 

So how does it work ? Very simple, to enter to win, post a reply on this post, or on the dedicated forum post here,  and just show us the game you are working on (or start a new one!),  and two winners will then be chosen randomly among the valid entries.

To make it fair though for everybody, here are a few criterias :
- the game should be in a playable state, we obviously don’t ask for a full commercial game, but something more like of a demo/mini-game rather than a prototype, it should have at least a playable level, npc/enemies, scoring system etc…
- you should obviously be the author of the game (1 license per team will be given, if this is a team effort)
- the game shall use melonJS 3.0.0
- it should be something “new” : an active development, or a new creation/remake
- assets used should be free (,, etc…) or an original creation (no rip of copyrighted/commercial content)
- source code should be available (ideally hosted on github).
- game should be playable online (e.g., gh-pages or others)

The contest will run from today through 12:00 a.m. GMT+8 on February 22nd (approximatively 2 weeks, past this weekend) February 29th. The winners will be chosen randomly and will be contacted by email.

so are you ready? 3... 2 ... 1... go !

Monday, February 1, 2016

melonJS 3.0.0 is finally there

Dear melonJS lovers,

After a (too) long time and a couple of release candidates, it's finally time to release a new version of melonJS ! To comply with the philosophy of the semantic versioning we are now following since the last major release, this version has been labelled 3.0.0 as it brings new features without guarantee of any backward compatibility in terms of API.

In this release, we were able to bring long-standing features, but also new ones and numerous fixes to the engine, bringing it a step closer from what developers are expecting from a modern game engine.

The CHANGELOG for this release being pretty long, here is a list of  highlight :
  • compatibility with some 3rd party libraries and SDK (e,g, facebook) has been fixed
  • ES6 compliance has been improved (by relying on more on ES6 functions when possible)
  • vector class improvements; few issues have been fixed and we also added a 3d vector class
  • level loading is now asynchronous and allow for more parameters to be passed to the related callback
  • the gamepad API is finally supported, meaning that you can now use your favorite game controller
  • mouse/pointer event have been optimized and now also use spatial localization/detection
  • default anchoring value is now the center (as opposed to the top-left coordinates previously inherited from Tiled); that makes it more coherent/natural with what is used by default in the "industry"
  • entity and renderables are now positioned respectively to their anchor value
  • renderables are now using a 3d vector for positioning (bringing melonJS a step closer to a "3D" world)
  • you can now define animation delay on a per-frame basis, and specify per-frame pivot points
  • added support for the Physics Body Editor (on top of the already supported PhysicsEditor tool), allowing to define complex collision shapes
  • we added support for the latest version of Tiled, that includes TMX orthogonal maps, or layer data encoding in JSON format
  • more video scaling mode have been added (flex and fill-min)
  • the repeat texture feature (e.g. for scrolling background) has been rewritten to better match the webGL philosophy

Download here:

Also do note that starting from this release, our builds are no more versioned, this allows to provide a more seamless release process.

As usual, 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.

As always, please post any bugs to our issue tracker, visit the forums if you have any support requests, or just come to say hello as we always love to hear about what you are guys doing with melonJS.

Finally, we are trying to add more and more examples that are showcasing specific features of melonJS, with a few of them already available here, but don't hesitate as well to submit any examples you would deem useful to the community.

- the melonJS team