Mungo Impress v1.0.0-rc.1 is released!

Today I’m excited to present to you the first public version of my Monkey X fork - Mungo Impress.

What does Impress mean?

As I wrote earlier, I decided to split the development of Mungo up into two independent branches. I named them Impress and Influence, to make branches easier to distinguish.

Impress - version inspired by Monkey, which will extend the existing Monkey X functionality

Influence - version which, I hope in the future, will have an impact on the development of Monkey. This version will be significantly different from Monkey X, but will be still backward compatible.

Development

The first thing I wanted to change is the approach to development in general. Monkey development is conducted primarily by one person, in what I see an issue. Of course it’s simpler to develop by yourself and requires less work with the community, but at the same time it slows down the development of the project. Many things that can be done collectively are made either slowly or aren’t made at all.

I want to develop Mungo as much open and flexible as possible for community development. Most things (even including the site itself) will be open sourced, and everyone will have the opportunity to contribute.

All this requires a bit more work on the documentation and tools for developers involved in the development. So I closed my fork on GitHub and split up repository into submodules.

I decided to conduct development on my own server with GitLab. I’ve been using this software more than a year for my internal projects and still haven’t been disappointed in it. I also decided to use GitLab for the following reasons:

  1. Convenient repositories grouping
  2. Unlimited number of private repositories
  3. Unlimited number of users, including in private repositories

GitHub and Bitbucket impose some restrictions on it, and their tariff plans can be quite expensive for group of users.

Monkey repository was split into submodules in order to exclude the need to copy the code to two Mungo branches to work with. Perhaps in the future, with the appearance of the package manager, submodules will be replaced by dependencies.

Changelog

This version of Mungo Impress is based on the latest develop version of Monkey v80a.

Tools

  • All BlitzMax code was removed from the repository and was rewritten on Monkey and C++. So MServer was rewritten in C++ with QT, and the Monkey application was renamed by Mungo and was rewritten on Monkey. At the moment, it simply launches IDE, nothing more.

  • Default Ted IDE was replaced by Jentos from FingerDev Studio.

  • Added a new template documentation - wiki. This template is used by default.

  • Improved Makedocs, added support of documentation translations. Translations should be placed in the folder lang-{code} in monkeydoc directory. Russian translation (not completed) was added to documentation files. To enable the generation of documentation in the desired language, replace name of the template in the bin/docstlye.txt file by the following line: {template_name}:{lang_code}. For example, for Russian it will be wiki:ru

Translator

  • Added TARGETS_PATH configuration setting, which allows you to specify an additional folder for targets.

  • Improved CONFIG.MONKEY handling. Now the app config settings defined in it are accounted by the preprocessor, but they still have a lower priority than the definitions in the source files of the project and can be redefined.

  • Improved build process. Now translator generates build metadata, which it uses later to determine changes of target version. So, now translator won’t create unnecessary build folders, if it’s not needed.

New! Java Tool target

  • Added Java Tool target from Playttle LLC, which allows you to build Java command-line applications, including translator!

HTML5 target

  • Added CLOSURE_COMPILER configuration setting, which allows minificate JS code using closure compiler, path to which is specified in this setting. To enable minification you should also set #HTML5_OPTIMIZE_OUTPUT = True. Minification works only in release mode.

  • Translator now generates metadata for sounds for HTML5 target (like images). So now functions LoadSound and PlayMusic return the same values in all targets

  • Added support of #MOJO_IMAGE_FILTERING_ENABLED to HTML5 target (not for all browsers). With #HTML5_WEBGL_ENABLED = True it works correctly in all browsers

  • Added preloader support for HTML5 applications. Preloader displays the actual loading process, has a small size for a quick start and loads main.js file in addition to resources.

    To enable preloader, use #HTML5_PRELOADER_ENABLED = True. For setting the loading audio files order, use #HTML5_SOUND_PRELOADING_ORDER, and set a value as extensions separated by commas, in order of higher priority. For example, #HTML5_SOUND_PRELOADING_ORDER = "ogg,mp3" will try to load ogg files first and only then mp3 files. The value of this parameter is an empty string by default, with this value preloader does not load audio files at all.

  • Changed update rate control function. Now update rate control is done by using requestAnimFrame, just as when setting SetUpdateRate 0, so when setting update rate nonzero. This shows better performance in some cases.

  • Fixed TouchX/TouchY with scaled canvas

Mojo

  • Added WebGL support for HTML5 target. Code is significantly different from the code of my patch. And it gives ~10 times better performance than the patch. In addition, this version works in IE11. You can see the demo here.

  • Fixed WebAudio support check in Android browsers

  • Fixed WebAudio activation in mobile browsers

Future plans

After a short break I will start to work on the site. Then again I’ll return to work on Impress. However, I do not plan to work on it too long as my priority is Mungo Influence

Also an important part of development is to improve development infrastructure. So I already wrote a script which builds the project automatically. In the future I would like to make the development more compatible with the continuous integration practice, to add unit tests and to write some help for developers. Yet it doesn’t have a high priority

In conclusion

Mungo development is still at an early stage, things can change. It’s difficult to speak about community development so far, but if you are interested in the development of Mungo, please let me know about it. Also, if you have any questions or suggestions, please leave them in the comments section below.

Thanks for reading the whole post. If you’re interested in Mungo you can download the latest version from the homepage (currently available only for Windows). There is also a link to the source files there.

Enjoy!