New desktop deployment for 3.1

Hey,

I’ve been working on a new way to do desktop deployment in the SDK.

The 3.1 release will allow you to create Windows .exe, MacOSX .app and Linux binary launchers for your applications and you will now also be able to bundle a JRE with your application so your users won’t have to install Java anymore. This is already somewhat possible in 3.0 stable by providing the JREs manually and configuring the launch4j properties for windows, the start script for linux and the application package for OSX but its always a bit cumbersome to do this.

Now you get a nice checkbox for everything and the SDK will automatically download the correct JRE for each platform and include it in the application zip files. (thanks to @david_bernard_31 for the hints on how to automatically download the JRE from Oracles website)

The created zip files allow you to easily distribute your games to different platforms, create installers or publish them via the various application stores (Steam, AppStore etc.). The whole process now uses the application stubs provided by Oracles “JavaFX deployment” but while with Oracles solution you can only deploy to the platform you are running on our solution allows you to use this kind of deployment for all platforms, no matter on which platform you work yourself.

Cheers,
Normen

21 Likes

Awesome! Really looking forward to using 3.1! Do you have any idea when it is gonna be released? is there still alot of work to do? Thanks for all the effort you guys are putting into JME!

Yes, still a lot of work.

This is great news. Cheers normen.

Fantastic!

Amazing!

Awesome! 3.1 can’t come soon enough! :wink:

yay. It’s like christmas all over again.

I moved 3 posts to a new topic: Desktop deployment with Gradle Getdown Plugin

I moved a post to an existing topic: Gradle-getdown-plugin

As an update to this, the new desktop deployment now also extracts the JNI binaries for the specific platform, adds them to the application zip file in the correct place and removes the jar file with all the different platform binaries from the zip.

This way there won’t be any binary files extracted to the users home folder by your game and you get less bloat distributed with your application.

3 Likes

Great job. I have a few questions for you:

  • Do you plan to provide anything “better” than a simple ZIP archive for GNU Linux and Microsoft Windows?
  • Is it possible to bundle OpenJDK (or any custom JVM) instead of Oracle Java?
  • What are your sources of inspiration? LibGDX PackR?
  • Does your tool support signing application with a “trusted” certificate?
  • Do you plan to provide a mechanism for automatic update?

I have used JNDT (my own tool) for several months to do something similar, it creates several compressed archives for all platforms. A few end users (especially non technical ones) prefer having a better desktop integration, that’s why I create some packages for GNU Linux (RPM, DEB) too but I have found no cross-platform solution to create MSI files for Microsoft Windows, I just know that Apache POI is helpful to manipulate this kind of file. Let me know whether you have found how to solve this problem. However, the Windows Store accepts APPX files…

Keep up the good work :smile:

  1. No, theres so many ways to distribute an app and for the various store systems (Steam, AppStores etc.) you’ll need to package it their way anyway. So you just get a “normal” application that you can distribute with any installer you like.
  2. No and theres no good reason to do so anyway
  3. Oracles app distribution system, thats what its based on
  4. Not really but the aforementioned ways of making installers should allow this
  5. No, the various store systems all have their own way to do this anyway
      1. Ok, in my humble opinion it is acceptable, it means that packaging the application for a centralized package repository or an application store is still up to the developer. It wasn’t clear for me when I read your very first post.
  1. The “small VM” JEP is over, its objective was to provide a JVM not larger than 3 MB and I know some private corporations that prefer bundling OpenJDK instead of Oracle Java for legal reasons (and to avoid the install of deceptive softwares).
  2. How do you use it? I have looked a bit at your source code here but I don’t get which class is responsible for the creation of the APP file for Mac OS X and the zip archives for the other operating systems.
  1. Theres no software installed, the JRE just sits in a folder and is solely used to run the app
  2. The binaries just get extracted. They’re basically just small binary stubs that do java -jar MyGame.jar with the contained JRE. The .app file for OSX is just a folder structure, it gets created directly in the ZIP file by the ANT build script (which also allows setting the executable attribute which doesn’t exist on windows), same for the folder structures for the other platforms. The code you point at just inserts the ANT script into the main build script and extracts/downloads the needed files to the project folder.

Normen this is great, I would really love to utilize this before our launch. Is there an eta on stable 3.1 yet, or a place I can go to check the roadmap for updates so people don’t have to constantly ask you? :slight_smile: Thanks so much for your hard work on making this the best open source engine out there!

Checkout git, git build, cd sdk, ant zip.

oh wow so everything that’s in there is considered stable already!? count me in!!

No its not, you asked to get your hands on it before it was launched.

For dummies (disclaimer: I’m a dummy!):