Recent from talks
Contribute something
Nothing was collected or created yet.
JMonkeyEngine
View on WikipediaThis article has multiple issues. Please help improve it or discuss these issues on the talk page. (Learn how and when to remove these messages)
|
| jMonkeyEngine | |
|---|---|
| Developer | The jME core team |
| Stable release | 3.7.0
/ October 21, 2024[1] |
| Repository | |
| Written in | Java |
| Operating system | Cross-platform |
| Platform | Java (JVM) |
| Type | Game engine |
| License | New BSD license |
| Website | jmonkeyengine |
jMonkeyEngine (abbreviated JME or jME) is an open-source and cross-platform game engine for developing 3D games written in Java.[2] It can be used to write games for Windows, Linux, macOS, Raspberry Pi, Android, and iOS (currently in alpha testing). It uses Lightweight Java Game Library as its default renderer, and also supports another renderer based on Java OpenGL.
jMonkeyEngine is community-centric and open-source. It is released under the New BSD license. It is used by several commercial game studios[3][4] and educational institutions.[5][6][7] The default jMonkeyEngine 3 comes integrated with a software development kit (SDK).
jMonkeyEngine 3 SDK
[edit]By itself, jMonkeyEngine is a collection of computing libraries, making it a low-level game development tool. Coupled with an integrated development environment like the official jMonkeyEngine 3 SDK, it becomes a higher-level game development environment with multiple graphical components.
The SDK is based on the NetBeans Platform, enabling graphical editors and plugin capabilities. Alongside the default NetBeans update centers, the SDK has its own plugin repository and a selection between stable point releases or nightly updates.
Since March 5, 2016, the SDK is no longer officially supported by the core team. It is still being actively maintained by the community. The term "jMonkeyPlatform" is also used interchangeably with "jMonkeyEngine 3 SDK."
History
[edit]jMonkeyEngine helps to improve the lack of full featured graphics engines written in Java. The project has evolved over time.
jMonkeyEngine 0.1 – 2.0
[edit]Version 0.1 to 2.0 of jMonkeyEngine marks the time from when the project was first established in 2003, until the last 2.0 version was released in 2008. When the original core developers gradually discontinued work on the project throughout the end of 2007 and the beginning of 2008, Version 2.0 had not yet been made officially stable. The code-base became adopted for commercial use and was most popular with the engine's community at the time.
- 2003
- Initial work on jMonkeyEngine was begun by Mark Powell (aka MojoMonkey) as a side project to see if a fully featured graphics API could be written in Java. Much of the early work on the API was inspired by David Eberly's C++ book 3D Game Engine Design.
- January 2004
- Mark was joined by Joshua Slack (aka Renanse) and together over the following two years, with the help of other community contributors, a commercially viable API was developed.
- August 15, 2008
- Joshua Slack announces to step back from active development of the jMonkeyEngine.[8][9]
jMonkeyEngine 3.0
[edit]Since the departure of jME's core developers in late 2008, the codebase remained practically stagnant for several months. The community continued to commit patches, but the project was not moving in any clear direction. Development on Version 3.0 started as an experiment.
The first preview release of jME3 in early 2009 drew positive attention[10] from many members in the community, and the majority agreed that this new branch would be the official successor to jME 2.0. From there on, all the formalities were sorted out between the previous core developers and the new.
- April 1, 2009
- Kirill Vainer "shadowislord" starts a new branch in the official jMonkeyEngine repository and commits the first publicly available code for jMonkeyEngine 3.0. Soon after, the branch was renamed to reflect its "test" status.[11]
- June 24, 2009
- The project sees a new beginning in the official jMonkeyEngine 3.0 branch, initially designed and developed solely by Kirill Vainer. Management responsibilities are picked up by Erlend Sogge Heggen, shortly later accompanied by Skye Book.[12]
- May 17, 2010
- The first Alpha of jMonkeyEngine 3 is released.[13] The same date marked the first Alpha release of the jMonkeyEngine SDK, only a few months after the first planning stages.[14] The "jMonkeyEngine SDK" has since become the default product download recommended to all jME3 developers.
- September 7, 2010
- The jMonkeyEngine website was completely re-designed. A new domain, jmonkeyengine.org, is dedicated to all project and community activities. The old jmonkeyengine.com is re-purposed as a product promotion site.[15]
- October 22, 2011
- jMonkeyEngine 3 SDK Beta is released. Stable update track is introduced as an alternative to downloading bleeding edge nightly builds.[16]
- February 15, 2014
- jMonkeyEngine 3 SDK Stable is released. In spite of being technically stable for a long time, the official 3.0 SDK release was delayed until February 2014.[17]
Projects powered by jMonkeyEngine
[edit]
- Nord, a browser-based massively multiplayer online game (MMO) on Facebook, created by Skygoblin[18][19][20]
- Grappling Hook, a first-person action and puzzle game, created by an independent developer[21][22][23]
- Drohtin, a real-time strategy game (RTS)[24]
- Chaos, a 3D fantasy cooperative role-playing game (RPG) by 4Realms[25]
- Skullstone, a 3D retro-styled single player dungeon crawler game, created by Black Torch Games[26][27]
- Spoxel, a 2D action-adventure sandbox video game, created by Epaga Games[28]
- Lightspeed Frontier, a space sandbox game with RPG, building, and exploration elements, created by Crowdwork Studios[29][30]
- Subspace Infinity, a 2D top-down space fighter MMO[31]
- 3079 and 3089, randomly generated and open-world RPGs by Phr00t's Software
- New Star Soccer, a mobile football video game, created by New Star Games.[32]
Reception
[edit]Ardor3D fork
[edit]Ardor3D began life on September 23, 2008, as a fork from jMonkeyEngine by Joshua Slack and Rikard Herlitz due to what they perceived as irreconcilable issues with naming, provenance, licensing, and community structure in that engine,[37] as well as a desire to back a powerful open-source Java engine with organized corporate support.
The first public release came January 2, 2009, with new releases following every few months thereafter. In 2011, Ardor3D was used in the Mars Curiosity mission both by NASA Ames[38] and NASA JPL[39] for visualizing terrain and rover movement.
On March 11, 2014, Joshua Slack announced that the project would be abandoned, although the software itself would remain under zlib license and continue to be freely available.[40][41] However, a subset of Ardor3D called "JogAmp's Ardor3D Continuation"[42][43] was still actively maintained by Julien Gouesse as of 2014.[44][45]
References
[edit]- ^ "jMonkeyEngine 3.7.0-stable". github.com. Retrieved 2024-10-21.
- ^ "JMONKEYENGINE". jMonkeyEngine.
- ^ "Nord, a jME-powered MMOG developed by SLX Games".
See website footer for reference.
- ^ "bbgsite.com's review of Poisonville, a browser-based MMOFPS powered by jME". Archived from the original on 2012-03-10. Retrieved 2010-11-04.
- ^ "Southern Illinois University Game Development Class". Archived from the original on 2013-12-14. Retrieved 2013-12-14.
Software Aspects of Game Development
- ^ "Press Coverage of Georgia Tech Student Projects". Archived from the original on 2008-01-14.
- ^ "Betaville Project at BxmC". Archived from the original on 2012-09-24.
- ^ Joshua Slack (2008-08-15). "a break". jMonkeyEngine forum. Archived from the original on 2011-07-26. Retrieved 2009-08-12.
- ^ Joshua Slack (2008-08-14). "At the end of the tour..." Archived from the original on 2009-07-03. Retrieved 2009-08-12.
- ^ "jME3 project". jMonkeyEngine forum. 2009-04-01. Archived from the original on 2013-07-04. Retrieved 2013-04-23.
- ^ Kirill Vainer (2009-04-01). "New Branch and Management". jMonkeyEngine GoogleCode Project.
- ^ Erlend Sogge Heggen (2009-06-24). "New Branch and Management". jMonkeyEngine Blog. Archived from the original on 2010-01-01. Retrieved 2009-12-07.
- ^ Erlend Sogge Heggen (2010-05-17). "First jME3 Alpha released". jMonkeyEngine Blog. Archived from the original on 2010-07-06. Retrieved 2010-11-04.
- ^ Normen Hansen (2010-02-01). "First jME3 SDK Alpha released, aka jMonkeyPlatform Alpha-1". jMonkeyEngine Forum. Archived from the original on 2010-09-30. Retrieved 2011-01-16.
- ^ Erlend Sogge Heggen (2010-09-07). "Complete website redesign". jMonkeyEngine Blog. Archived from the original on 2010-11-13. Retrieved 2010-11-04.
- ^ Normen Hansen (2011-10-22). "jMonkeyEngine3 SDK Beta released!". jMonkeyEngine Blog. Archived from the original on 2011-12-24. Retrieved 2012-02-10.
- ^ Erlend Sogge Heggen (2014-02-15). "jMonkeyEngine 3 SDK Stable released!". jMonkeyEngine Blog. Archived from the original on 2015-02-06. Retrieved 2015-09-20.
- ^ "SLX Games Launches Nord on Facebook". EngageDigital / Authored by Alicia Ashby. 2010-09-16. Archived from the original on 2010-11-06.
- ^ "Nord: 3D Virtual World on Facebook". Beta Games. 2010-09-19.[permanent dead link]
- ^ "Swedish SLX Games Takes First 3D MMO To Facebook". ArcticStartup. 2010-09-22. Archived from the original on 2012-10-30. Retrieved 2010-11-05.
- ^ "Grappling Hook IndieDB entry". Christian Teister via IndieDB. 18 September 2009.
- ^ John Walker (2009-09-24). "What It Says On The Tin: Grappling Hook". Rock Paper Shotgun.
- ^ Michael Rose (2009-10-03). "Indie Game Pick: Grappling Hook (Speed Run Games)". Indie Games – The Weblog. Archived from the original on 2010-01-31. Retrieved 2010-11-06.
- ^ "Drohtin – The indie strategy Game". 2014-01-22. Archived from the original on 2014-01-13. Retrieved 2014-01-14.
- ^ Idix, Prostate. "Interview: 4realms - Dossiers / Chroniques RPG France". www.rpgfrance.com (in French). Archived from the original on 2017-06-08. Retrieved 2017-07-27.
- ^ "Skullstone - Dungeon Crawler in Development | News @ RPGWatch". www.rpgwatch.com. Retrieved 2017-07-27.
- ^ "Skullstone | IGDB.com". IGDB.com. Retrieved 2017-07-27.
- ^ "Spoxel | IGDB.com". IGDB.com. Retrieved 2018-03-11.
- ^ "About Lightspeed Frontier | Lightspeed Frontier Official Wiki @ Gamepedia". lightspeedfrontier.gamepedia.com. Retrieved 2018-03-11.
- ^ "Lightspeed Frontier | IGDB.com". IGDB.com. Retrieved 2018-03-11.
- ^ "Subspace Infinity Source Repository | Github Repository". www.github.com/assofohdz/Subspace-Infinity. Retrieved 2018-05-09.
- ^ MCV Editors (2019-05-15). "Making an indie hit: New Star Soccer uncovered". MCV. ISSN 1469-4832. Retrieved 2023-04-27.
{{cite news}}:|last=has generic name (help) - ^ "JavaOne presentation keynote". Oracle/Sun.
- ^ "Presentation slides" (PDF). Oracle/Sun.
- ^ "JavaOne blogpost with videos". jMonkeyEngine Blog. 2010-09-07. Archived from the original on 2011-07-26. Retrieved 2010-11-04.
- ^ "PacktPub nominees announcement". PacktPub. September 2010. Archived from the original on 2010-09-30. Retrieved 2010-11-04.
- ^ Joshua Slack (September 23, 2008). "A new focus: Ardor3D". Archived from the original on April 10, 2016.
- ^ NASA (March 19, 2014). "NASA VERVE: Interactive 3D Visualization within Eclipse".
- ^ NASA, Jet Propulsion Laboratory and California Institute of Technology (September 17, 2009). "Interactive 3D Mars Visualization". YouTube. Archived from the original on 2021-12-12.
- ^ Joshua Slack (March 11, 2014). "Winding down". Archived from the original on December 2, 2014. Retrieved March 26, 2016.
- ^ Joshua Slack (March 11, 2014). "Winding down". Archived from the original on April 10, 2016. Retrieved March 26, 2016.
- ^ Julien Gouesse (November 22, 2014). "JogAmp's Ardor3D Continuation user's guide is available".
- ^ Julien Gouesse (August 2, 2014). "JogAmp's Ardor3D Continuation overview".
- ^ Julien Gouesse (November 22, 2014). "Official homepage and Github for Ardor3D".
- ^ Julien Gouesse (March 17, 2014). "Ardor3D, JOGL 2". Archived from the original on December 2, 2014. Retrieved March 26, 2016.
External links
[edit]JMonkeyEngine
View on GrokipediaOverview
Core Features
jMonkeyEngine adopts a minimalistic, code-first approach that prioritizes Java scripting for building and manipulating 3D scenes, offering developers greater flexibility compared to reliance on visual editors.[1] This design philosophy enables rapid prototyping and customization, allowing programmers to define game logic, assets, and behaviors directly in code without mandatory GUI intermediaries.[8] At its foundation, the engine provides built-in support for hierarchical scene graphs to organize complex 3D models and environments efficiently.[8] It integrates Bullet Physics for realistic simulations of gravity, collisions, and forces through the jBullet package, enabling dynamic interactions in real-time applications.[9] Audio handling is managed via OpenAL, supporting formats like .ogg and .wav for both buffered and streamed 3D positional sounds.[10] Rendering relies on OpenGL, leveraging its hardware acceleration for high-performance graphics output.[1] Advanced graphics capabilities include physically based rendering (PBR) for more realistic material interactions with light, implemented through dedicated material definitions and lighting techniques.[11] The engine supports GLSL shaders, including libraries, permutations, and node-based systems for custom visual effects.[12] Particle systems facilitate effects like fire, smoke, or explosions via configurable emitters that manipulate quads or meshes in real time.[13] Terrain generation tools, such as TerraMonkey, allow for editable landscapes using heightmaps, quadtrees for level-of-detail management, and procedural randomization.[14] Networking capabilities are provided through the SpiderMonkey library for multiplayer and client-server interactions.[1] GUI elements can be built using frameworks like Lemur.[1] The cross-platform rendering pipeline is optimized for real-time 3D rendering across desktop and mobile environments, drawing on OpenGL's compatibility to ensure consistent performance.[1] Its modular architecture supports custom extensions through asset packs and material definitions, permitting developers to add or replace components like rendering backends or physics modules without altering the core.[8] Key performance optimizations incorporate spatial partitioning techniques, such as octrees and bounding volume hierarchies within the scene graph, to cull invisible objects and accelerate collision detection.[15] Animation systems enable blending between multiple tracks on skeleton meshes, with controllable weights and transitions for smooth character movements like walking to running.[16]Supported Platforms and Licensing
jMonkeyEngine provides cross-platform support for desktop environments including Windows, Linux, and macOS, leveraging the Lightweight Java Game Library (LWJGL) as its primary backend for rendering and input handling on these systems.[17] It also extends to mobile development, particularly Android devices running OpenGL ES 2.0 or higher, where it utilizes native Android graphics APIs rather than LWJGL to ensure compatibility with mobile hardware constraints.[18] Experimental support for iOS deployment is available through SDK plugins or the Multi-OS Engine (MOE), enabling native iOS app builds, though it remains in alpha stage with limited features.[19] Additionally, experimental web deployment is possible through transpilation to JavaScript using TeaVM, enabling WebGL 2.0-based rendering in browsers, though this remains a community-driven effort with partial support for core modules like rendering, audio, and input, excluding features such as VR and networking.[20] The engine's hardware requirements are modest for basic functionality, necessitating a graphics card compatible with OpenGL 2.0 or higher (OpenGL 3.2 required on macOS), along with at least 1 GHz CPU and 10-40 MB RAM depending on usage, making it accessible on a wide range of systems from older desktops to embedded devices like Raspberry Pi.[18] For advanced rendering techniques such as physically based rendering (PBR), modern GPUs with robust shader support are recommended to handle complex material computations efficiently, though the engine falls back to simpler modes on less capable hardware.[17] Software prerequisites include Java Runtime Environment 8 or higher for end-users and JDK 8 or higher for developers.[2] jMonkeyEngine is distributed under the permissive BSD 3-Clause License, which permits free use, modification, and redistribution in both source and binary forms for commercial and non-commercial projects alike, with no royalties, fees, or mandatory attributions beyond retaining the original copyright notice and disclaimer.[21] This licensing model imposes no restrictions on asset usage within projects built with the engine, allowing developers full control over their content while prohibiting the use of the "jMonkeyEngine" name or contributors' endorsements for promotion without permission.[21] The BSD terms have remained consistent throughout the engine's development, fostering its adoption in diverse applications since its inception.[21]Development Tools
jMonkeyEngine SDK
The jMonkeyEngine SDK serves as an integrated development environment (IDE) built on the NetBeans Platform, offering specialized plugins for creating, editing, and testing 3D applications with the jMonkeyEngine. It enables developers to visually compose scenes, edit shaders, and debug physics simulations without relying solely on code, streamlining the workflow for Java-based game development.[22][23] Key built-in tools include the Scene Composer, which allows for intuitive visual placement and manipulation of 3D assets such as models, lights, and terrains directly within the IDE interface. The Shader Editor provides a graphical interface for creating and modifying GLSL shaders, supporting real-time previews and error checking. Additionally, the Physics Debugger visualizes Bullet Physics simulations, enabling inspection of collisions, forces, and rigid body behaviors during runtime. These tools integrate seamlessly with the NetBeans editor, providing code autocompletion for the jMonkeyEngine Java API to accelerate scripting and logic implementation.[22] The SDK supports asset import from common formats like OBJ and FBX, automatically converting them to the engine's native .j3o binary format for optimized loading and storage in project folders. It facilitates one-click deployment to desktop executables, WebStart applications, Android APKs, or iOS Xcode projects, with built-in support for cross-platform builds. For quality assurance, the IDE includes integrated JUnit testing capabilities, allowing developers to create and run unit tests for application classes and assert expected behaviors in rendering or physics logic. A profiler, inherited from NetBeans, analyzes performance bottlenecks in rendering pipelines and physics computations, offering metrics on CPU usage, memory allocation, and frame rates.[24][25][26] The SDK's version history aligns closely with jMonkeyEngine releases, starting with its introduction in version 3.0 and evolving through updates like 3.6.1-sdk2 in 2023 for bug fixes and compatibility enhancements, 3.7.0 in 2024 with JDK 21 integration, and culminating in 3.8.0-stable-sdk1 in 2025, which incorporates NetBeans 25, JDK 21.0.7, and engine version 3.8.0 for improved stability and modern Java support. This progression represents a shift from the command-line tools of earlier engine versions to a full-featured graphical IDE. Bundled tutorials and project templates, such as those for first-person shooter prototypes or procedural terrain explorers, provide quick-start scaffolds with pre-configured scenes, controls, and asset pipelines to guide new users.[27][28]API and Integration
jMonkeyEngine provides a Java-centric application programming interface (API) designed for ease of use in 3D game development, emphasizing a code-first approach that allows developers to build applications programmatically without relying on visual editors. The core structure revolves around theSimpleApplication class, which serves as the base for all jMonkeyEngine applications by handling essential functionalities such as the scene graph management via rootNode, asset loading through assetManager, user interface elements with guiNode, input processing, audio rendering, and the main update loop.[29] Developers extend SimpleApplication and override methods like simpleInitApp() to initialize the scene and simpleUpdate() for game logic, enabling a streamlined entry point for custom game loops.[30]
Central to scene construction are classes like Geometry and Material, which facilitate the creation and rendering of 3D objects. The Geometry class represents visual elements by combining a Mesh—defining the polygonal shape—with controls for transforms and culling, allowing attachment to the scene graph for hierarchical organization.[31] Materials, applied to geometries, define surface properties including colors, textures, shininess, and opacity, often using shader-based definitions in J3MD format to support advanced effects like lighting and transparency without requiring low-level OpenGL knowledge.[32]
The API integrates seamlessly with external libraries to extend core capabilities, such as physics simulation through the jme3-bullet module, which wraps the Bullet Physics library for real-time collision detection, rigid body dynamics, and vehicle controls, enabling realistic interactions like gravity and constraints. Audio handling is provided by the built-in JME-Audio system, supporting spatialized sound playback with Ogg Vorbis (.ogg) and WAV formats, where developers load and attach AudioNode instances to spatials for 3D positional audio effects.[10] For multiplayer functionality, the SpiderMonkey networking library offers a high-level API for client-server architectures, message serialization, and synchronization of game states across networked players.[33]
Dependency management is simplified for integration into existing Java projects via Maven or Gradle, with official artifacts hosted on Maven Central Repository under the group ID org.jmonkeyengine. For instance, a basic Maven setup includes dependencies like jme3-core for essential rendering and math utilities, jme3-desktop for platform-specific deployment, and optional modules such as jme3-bullet or jme3-networking, allowing selective inclusion without manual JAR downloads.[34] Gradle users can similarly declare repositories and dependencies in build.gradle for automated resolution and builds.[35]
Extension points in the API promote customization, including the InputManager for defining custom input handlers that map keys, mouse, or joysticks to actions via ActionListener implementations, supporting features like fly-by-camera controls or device-specific inputs.[36] Developers can implement custom renderers by extending Renderer or manipulating ViewPort and RenderManager for alternative backends like headless rendering. For immersive applications, VR and AR integrations are available through community-contributed plugins, such as the Tamarin OpenXR library, which enables headset support for stereo rendering and head tracking without altering the core API.[37]
Practical API usage is demonstrated in common tasks; for loading 3D models, developers invoke assetManager.loadModel("Models/MyModel.j3o") to retrieve a Spatial object, which is then attached to rootNode and optionally scaled or positioned using setLocalTranslation() and setLocalScale(). For AI pathfinding, the jme3-ai contribution library integrates navigation meshes via NavMesh for generating walkable areas and A* algorithms, combined with steering behaviors in SteerControl to guide entities along computed paths, as in PathfinderSteerControl for autonomous movement.[38][39] These elements allow the API to build upon the engine's core features, such as scene graph traversal, for efficient, modular development.
