一、简介

JMonkeyEngine3(JME3)

jMonkeyEngine简称为JME3, 是一个主要用 Java 编写的一款开源免费的3D游戏引擎。其极简主义和代码优先的方法使其非常适合希望获得游戏引擎支持的开发人员,他保持对代码的完全控制,并能扩展和调整引擎以适应他们的工作流程。 从本质上来说,JME3就是一个第三方的java类库。它的API非常简洁明了,只需要花很少的学习时间就能够掌握其使用方法。JME3主要功能如下:

  • 场景管理
  • 可编程材质(着色器)
  • 图形用户界面
  • 内存资源管理
  • 输入系统
  • 声音系统
  • 碰撞检测
  • 物理引擎
  • 特效系统
  • 骨骼动画
  • 地形系统
  • 灵活易扩展的逻辑模块
  • 性能优化(八叉树、层次细节、硬件加速等)

JME3组件

jME3类库的Group ID是org.jmonkeyengine,可以在maven中央库中查看。下列组件已经全部上传到公共仓库中,你可以通过Gradle或Maven去获取它们:

  • jme3-core - 任何jME3项目都需要的核心库
  • jme3-effects - 各种滤镜、粒子、水面等特效。
  • jme3-networking - jME3的网络模块(别名SpiderMonkey)。
  • jme3-plugins - 加载orge、fbx等模型文件的插件。
  • jme3-jogg - 加载jogg格式的音频文件。
  • jme3-terrain - 地形生成API,可使用高度图来生成3D地形。
  • jme3-blender - 加载blender模型文件,仅适用于桌面开发,手机显卡不支持。
  • jme3-jbullet - 基于jbullet的物理引擎(仅适用于桌面开发,手机用不了,而且JCenter上没有这个组件)。jme3-jbulletjme3-bullet只能二选一,不能同时存在于同一个项目中。
  • jme3-bullet - 基于BulletPhysics的物理引擎,需要jme3-bullet-nativejme3-bullet-native-android
  • jme3-bullet-native - BulletPhysics所需的静态库文件(dll、so),仅适用于桌面开发。注意:jbulletBulletPhysics是两码事,它不需要这些本地库文件。
  • jme3-bullet-native-android - BulletPhysics所需的静态库文件(dll、so),仅适用于Android开发。
  • jme3-niftygui - 为jME3添加NiftyGUI支持,可以使用NiftyGUI来制作图形用户界面 (JCenter上没有这个组件)。
  • jme3-desktop - jME3桌面应用开发所需的核心API。
  • jme3-lwjgl - jME3的桌面应用渲染模块,依赖LWJGL。
  • jme3-lwjgl3 - jME3.1新增的模块! 使用LWJGL3为桌面进行渲染。
  • jme3-jogl - jME3的桌面应用渲染模块,依赖JOGL。它是LWJGL和LWJGL3的替代品,可选。有LWJGL你就不需要JOGL,用JOGL就不需要LWJGL。
  • jme3-android - jME3的Android应用核心模块。
  • jme3-android-native - jME3开发Android应用所需的本地库文件。
  • jme3-ios - jME3开发iOs应用的核心API (JCenter上没有这个组件)

jME3开发桌面应用,你至少需要下面这几个组件:

  • jme3-core
  • jme3-desktop
  • jme3-lwjgljme3-lwjgl3

jME3开发Android应用,你至少需要下面这几个组件:

  • jme3-core
  • jme3-android
  • jme3-android-native

jME3 SDK

jMonkeyEngine3 SDK是开发团队基于NetBeans平台开发的jME3集成开发环境。它包含场景制作、模型预览、材质编辑等诸多游戏开发所需的功能。jMonkeyPlatform跟jME3 SDK是一码事,说的都是这个东西。

官方推荐初学者使用jME3 SDK来开发游戏。官方下载地址为: https://github.com/jMonkeyEngine/sdk/releases

无论你习惯用jME3 SDK,还是Eclipse、IntelliJ IDEA,或者Android Studio,都可以使用jMonkeyEngine3来开发游戏。毕竟这个引擎的本质就是一堆jar文件,选择自己熟悉的工具可以提升你的开发效率。

Gradle

	repositories {
	    jcenter()
	    //maven { url "http://dl.bintray.com/jmonkeyengine/org.jmonkeyengine" }
	}
	
	dependencies {
	    def jme3 = [v:'3.5.1-stable']
	    compile "org.jmonkeyengine:jme3-core:$jme3.v"
	    compile "org.jmonkeyengine:jme3-desktop:$jme3.v"
	    compile "org.jmonkeyengine:jme3-lwjgl:$jme3.v"
	}

Maven

<properties>
		<jme3_v>3.5.1-stable</jme3_v>
</properties>

<dependencies>
		<dependency>
			<groupId>org.jmonkeyengine</groupId>
			<artifactId>jme3-core</artifactId>
			<version>${jme3_v}</version>
		</dependency>
		<dependency>
			<groupId>org.jmonkeyengine</groupId>
			<artifactId>jme3-desktop</artifactId>
			<version>${jme3_v}</version>
			<scope>runtime</scope>
		</dependency>
		<dependency>
			<groupId>org.jmonkeyengine</groupId>
			<artifactId>jme3-lwjgl</artifactId>
			<version>${jme3_v}</version>
		</dependency>
</dependencies>

官方教程和例子

在jME3的github页面中,有一个名为jme3-examples的模块,其中有大量的示例源代码,全面展示了jME3的各种功能和特性。

所有例子中,jme3test.helloworld包中的13个例子是最基础的。官方推荐的学习顺序是:

  1. 第一个JME3程序(HelloJME3) – 实现一个简单的程序
  2. 场景管理(HelloNode) – 在场景图中改变几何体和节点属性
  3. 资源管理(HelloAssets) – 加载三维模型、场景和其他的资源
  4. 事件循环(HelloLoop) – 在事件循环中实现事件控制功能
  5. 输入处理(HelloInput) – 对于键盘和鼠标的输入作出响应
  6. 材质(HelloMaterial) – 设置材质、纹理、透明度
  7. 动画(HelloAnimation) – 控制动画模型
  8. 拣选(HelloPicking) – 射击、压下按钮、选择、捡起选项
  9. 碰撞(HelloCollision) – 建造墙壁和固体地板
  10. 地形(HelloTerrain) – 使用贴图创建小山的风景
  11. 音效(HelloAudio) – 按照位置和事件来实现三维音效
  12. 特效(HelloEffects) – 创建粒子特效,比如:火焰、爆炸、魔法
  13. 物理(HelloPhysics) – 撞球和坠落的砖头

相关资源

  1. 官网
  2. 官方文档
  3. JME3 SDK下载地址
  4. 引擎
  5. SDK