jMonkeyEngine is a modern developer friendly game engine written primarily in Java.
Its minimalistic and code first approach makes it perfect for developers who want the support of a game engine while retaining full control over their code with the ability to extend and adapt the engine to their workflow.




Skullstone powered by jMonkeyEngine

Skullstone – a retro styled grid-based dungeon crawler RPG inspired by the good old titles such as Dungeon Master, Stonekeep, Eye of Beholder and many other classics. In a few words – a party of …
See game page

- -
Become a backer and leave a message...

JMonkeyEngine 3.5.2 release

JMonkeyEngine is pleased to announce the 3.5.2-stable release of its game engine for Java programmers. JMonkeyEngine 3.5.2 is an interim release that solves a couple issues with 3.5.0/3.5.1 and upgrades the underlying LWJGL libraries to version 3.3.1. The 3.5.2-stable libraries can be found in the Maven Central repository under the “org.jmonkeyengine” group ID. To browse the change list and/or download the source code, go to https://github. … Read More...
More development updates...

Host migration and funding

As you might have noticed already, our services were progressively migrated, during the month of October, to a cloud provider that, I believe, provides the best price/quality for our project. Up till now we have been using amazon aws with one year of credits donated by @adi.barda, that allowed us to never use any of our community fund, but from now on you will see monthly expenses submitted to the fund to pay for hosting and related services. … Read More...
More community updates...

MacOS renting and development in the cloud

MacOS cloud renting has started to proliferate with the new Apple Silicon M1 chip and it turned out to be a pretty decent way to test graphical applications on MacOS without buying apple’s pricey hardware or resorting to hackish ports and vms of questionable legality. I am reporting here the procedure to quickly get a MacOS M1 cloud service up and running for testing jmonkey applications without too much hassle. … Read More...

jMonkeyEngine

Powerful Graphics

jMonkeyEngine is only one level of abstraction away from OpenGL.
The engine exposes modern opengl capabilities and benefits from high performances due to its low level of abstraction.
Notable features include:
  • Physically Based Rendering
  • Singlepass Lighting
  • Instanced Rendering
  • Multitarget Rendering
  • Tessellation
  • Geometry Shaders
  • Offscreen Rendering
  • sRGB support with linearization
  • Floating point textures
  • Tone Mapping (HDR)
  • Steep Parallax
  • Shadows
And more...

Physics

jMonkeyEngine supports multiple physics solutions
  • jBullet: java porting of Bullet Engine
  • Minie : A binding to Bullet Engine, with support for rigidbody and softbody physics

Networking

There are multiple options to write netcode in jMonkeyEngine:
  • Spidermonkey: A feature rich java client-server networking API that uses TCP and UDP packets. With support for RMI and Object Serialization.
  • SimEthereal : A high performance library for real-time networked object synching
  • Monkey Netty : A implementation of a server-client system using Netty.IO that utilizes both TCP and UDP.

GUI

In jMonkeyEngine there are several established choices for GUIs:
  • Lemur : a modular library for 2D and 3D interactive guis, with a groovy-based styling language
  • Nifty GUI: a library to build interactive user interfaces with support for xml layouts.
  • IGUI : a minimalistic immediate GUI with minimal input handling

Postprocessing

jMonkeyEngine supports postprocessing out of the box and comes with several filters ready to use.
Such as:
  • Bloom
  • FXAA
  • Cartoon Edges
  • Light Scattering (GOD rays)
  • SSAO
  • Tone Mapping
  • Volumetric Light
And more...

3D Audio

jMonkeyEngine supports 3D audio with
  • OpenAL: Cross platform 3D audio. With basic support for positional sound and precomputed reverb.
  • jmePhonon : Binding to SteamAudio for immersive sounds. With support for HRTF, occlusion, realtime reverberance and more... (pc only)

Terrain

There are several libraries and frameworks that aid in the creation of terrains in jMonkeyEngine.
Notable choices are:
  • TerraMonkey: An high performance editable heightmap based terrain with autogenerated LOD and triplanar mapping.
  • Blocks : A voxel engine with support for custom shapes, physics and endless terrain.
  • IsoSurface : An isosurface terrain
  • SimArboreal : A library to generate procedural trees
  • SeaMonkey: Postprocessing filter that simulates water and underwater effects

Particles

jMonkeyEngine comes with particles capabilities in the core and multiple advanced thirdparty alternatives:

Multy Paradigm

Thanks to its flexibility, jMonkeyEngine can be used with different paradigms:
  • Spatial-Control model: An intuitive model where Spatials are game entities and Controls determine their logic
  • Zay-ES : High-performance entity-component-system model (ECS)

By The Community

During the years jMonkeyEngine has received many contributions in form of addons, assets and libraries.
Recently we launched the Software Store to collect all of them in a single place.

For The Developers

Simple, easy to setup, modular and minimalistic in its approach, jMonkeyEngine is made for the developers.
Its flexibility allows it to be adapted to different workflows and easily extended to support new features.

Free for everyone

jMonkeyEngine is free and opensource. Released under the permissive BSD 3-Clause license.
No splash screens, no fees and no requirement to mention jMonkeyEngine in your game at all.
And More ...

Contribute

Improve the Documentation

Good documentation is as important as good code, we are always looking for help to improve the wiki and document new features.
Make sure to let us know if you are working on tutorials, books or some other form of learning resource related to jMonkeyEngine, so that we can give it the appropriate exposure.

Find and Report Bugs

If you find an issue or defect in jMonkeyEngine and related projects you can submit a report to the issue tracker.
From there we will be able to pinpoint and resolve the issue for everyone.
If you are unsure if the issue is caused by a misunderstanding or bug in your code, you can ask for an opinion in the community hub.