A cross-platform game engine for adventurous Java developers.


What is jMonkeyEngine?

It’s a free, open source game engine, made especially for Java game developers who want to create 3D games using modern technology. The software is programmed entirely in Java, intended for wide accessibility and quick deployment.

Java served HOT!

Done Right, Java can be blazing fast. To be blunt: Java will always be easier to Do Right than C++. We provide Java developers with the tools they need to make highly performant 3D games on par with any other engine out there, without the headaches of compiler code.

Cross-platform and -peripheral

jMonkeyEngine games can be published to Windows, Mac and Linux, as well as Android and iOS. Furthermore we support unique new peripherals for AR and VR technologies, most noteworthy being the Oculus Rift.

Who is jMonkeyEngine for?

It’s not a visual RPG Maker or an FPS modder. You’ll get the most out of the engine if you bring some programming aptitude to the table. Pace yourself, and jMonkeyEngine can be a starting point for any aspiring 3D games developer.

Hacker’s Haven

jMonkeyEngine is extensible by design, and doesn’t try to tell you how to make your game. The New BSD License means you are free to do whatever you’d like with our code. And if you’d like to share something back, the jME3 SDK brings its very own plugin framework with automatic updates.

Extensive Docs & Support

There’s no excuse for poor documentation, and we don’t need one. Peruse our wiki and you’ll find hundreds of pages detailing all things jME3. On top of that, our community of developers is easily one of the most engaged and helpful pack of monkeys alive.


Light and Shadow

We’ve got all the usual suspects to simulate candle light, sun light and flashlights as well as global lights. Shadows are created with techniques like PSSM and SSAO. (For Android we recommend baked shadows.)

Shaders and Materials

The jME3 material system is entirely shader-based. Through an innovative design called Shader Nodes, shaders become super modular and can be edited in a visual editor. Of course, you can always make your own from scratch.

Filters and Effects

jME3 comes with a wide array of special effects, primarily through the use of post processor filters and particle emitters. These are the “smoke and mirrors” tricks that allow you to emulate the wondrous stuff of nature, such as water, fog, light scattering and of course, explosions

Game Logic

Application States

AppStates are the building blocks for your application. They help you separate your application into logical parts and can be used to quickly extend the base application. They can also be reused in other applications so you will quickly build your own library of AppStates and integrate publically available extensions easily into your application.

Custom Controls

Custom Controls are like AppStates but at a smaller scene-object based level. They allow you to add functionality to objects in the scenegraph to animate, control and integrate objects into a workflow.


Input is a big deal. jMonkeyEngine makes it easy to target a wide array of platforms through unified input conventions, enabling keyboards, joysticks and touch all from the same interface.



For its physics simulation, jMonkeyEngine relies on jBullet, a Java port of the Bullet Physics library favored by top industry developers.


Sculpt and paint your terrain using the SDK’s in-built terrain editor,TerraMonkey. You can also import heightmaps, drop in a SkyBox, apply lighting and enjoy automatic LOD optimization.


Use the cinematic tools to build your own little movie set for your cut scenes. With a few well tuned motion paths and sound events, it doesn’t take many keyframes to tell a good story.


SpiderMonkey helps you make your game connected. If UDP, TCP, compression and thread safety is already cemented in your vocabulary, you may proceed.


NiftyGUI is a standalone library, integrated with jME3 as its default GUI tool. Designers and developers can construct interfaces in XML or Java. Since every monkey is different, we also have two solid plugin alternatives.