简介
这篇文章主要介绍:
- 如何创建一个3D游戏项目;
- 如何整合LuoYing RPG游戏框架到JMonkeyEngine游戏中;
- 如何使用落樱编辑器创建一个3D游戏场景,并将游戏场景载入到JME3游戏中。
文章会从创建项目、创建场景到导入场景作一个完整的包含图示、代码演示、视频演示的讲解过程。
资源准备
整个过程中需要用到以下资源,你可以从以下的链接中下载到相应的资源。
- JME SDK下载:https://github.com/jMonkeyEngine/jmonkeyengine/releases
- JME SDK下载(分流):http://pan.baidu.com/s/1pK7ZQ5d
- 落樱RPG-核心包:https://git.oschina.net/huliqing/LuoYing/releases
- 落樱RPG-编辑器:https://git.oschina.net/huliqing/LuoYing/releases
JME SDK下载可以到JME的github,也可以从分流的百度盘下载,文件演示所依赖的版本为JME SDK 3.1.0-Stable稳定版。
创建场景
在下载了相应资源之后,先安装JME SDK, 如果你在安装后首次启动出现界面中文乱码,请参考一下这篇文章:http://bbs.jmecn.net/t/topic/99
JME SDK实际上是Netbeans的定制版,如果你很熟悉Netbeans的话,那开发起来一点问题都没有,当然也可以使用eclipse进行开发。只不过首次使用的话,强烈建议直接使用JME SDK,因为会少很多配置上的麻烦。
如果你习惯于直接用Eclipse、MyEclipse、Netbeans等进行开发的话,那么可以参考一下这篇文章:http://bbs.jmecn.net/t/topic/25/3
如果在配置过程中存在问题也可以从这个Q群中寻找一些帮助:423979787
下面接下来游戏创建过程将直接使用JME SDK进行示例, 如下一步步,因为比较简单,就不啰嗦:
创建一个JME3 BasicGame,如下图
填写项目名称,并选择项目保存路径,然后点击Finish完成创建,如下图:
现在我们创建了一个游戏项目,名称: SimpleGame, 路径: C:\home\workspace\sample\SimpleGame
同时SDK为我们创建了一个默认的启动类,如下:package mygame;
import com.jme3.app.SimpleApplication;
import com.jme3.material.Material;
import com.jme3.math.ColorRGBA;
import com.jme3.renderer.RenderManager;
import com.jme3.scene.Geometry;
import com.jme3.scene.shape.Box;
public class Main extends SimpleApplication {
public static void main(String[] args) {
Main app = new Main();
app.start();
}
@Override
public void simpleInitApp() {
Box b = new Box(1, 1, 1);
Geometry geom = new Geometry("Box", b);
Material mat = new Material(assetManager, "Common/MatDefs/Misc/Unshaded.j3md");
mat.setColor("Color", ColorRGBA.Blue);
geom.setMaterial(mat);
rootNode.attachChild(geom);
}
@Override
public void simpleUpdate(float tpf) {
//TODO: add update code
}
@Override
public void simpleRender(RenderManager rm) {
//TODO: add render code
}
} 创建后就可以直接运行了,运行后可以看到一个非常简单的立方体在画面中,这就是一个最简单的JME 3D游戏了,如下图:
整合落樱RPG框架到JME3
在创建了一个非常简单的JME游戏之后,接下来我们看一下怎么把“落樱RPG”框架整合到JME3,操作很简单,只要两个很普通的步骤。
第一步导入jar:在JME SDK中选择项目 -> 属性(右键)-> Libraries(库)-> Add JAR/Folder
然后把落樱RPG核心包中的三个jar添加进去就可以,如下图:
第二步初始化:这一步也非常简单,只要在主类的simpleInitApp方法中加入如下语句就可以:
LuoYing.initialize(this);
代码如下所示:package mygame;
import com.jme3.app.SimpleApplication;
import com.jme3.material.Material;
import com.jme3.math.ColorRGBA;
import com.jme3.renderer.RenderManager;
import com.jme3.scene.Geometry;
import com.jme3.scene.shape.Box;
import name.huliqing.luoying.LuoYing;
public class Main extends SimpleApplication {
public static void main(String[] args) {
Main app = new Main();
app.start();
}
@Override
public void simpleInitApp() {
Box b = new Box(1, 1, 1);
Geometry geom = new Geometry("Box", b);
Material mat = new Material(assetManager, "Common/MatDefs/Misc/Unshaded.j3md");
mat.setColor("Color", ColorRGBA.Blue);
geom.setMaterial(mat);
rootNode.attachChild(geom);
// 初始化落樱RPG
LuoYing.initialize(this);
}
@Override
public void simpleUpdate(float tpf) {
//TODO: add update code
}
@Override
public void simpleRender(RenderManager rm) {
//TODO: add render code
}
} 现在整合落樱RPG到JME3游戏中就算完成了,整合后什么也没有做,那么接下来我们来看看落樱RPG可以用来做些什么。
创建游戏场景
现在我们需要使用落樱编辑器来创建一个游戏场景,并最终将这个场景载入到刚刚创建的游戏项目:SimpleGame中,作为游戏场景使用。
那么接下来,打开“落樱RPG编辑器”,并指定一个游戏资源文件夹,直接指定到刚刚创建的项目SimpleGame的assets目录。
这个资源文件夹是JME SDK在创建项目的时候自动创建的,这个文件夹是默认的游戏资源文件夹,所有游戏的相关资源都将放在这里,包括场景、模型、贴图等。
因为我们要用编辑器为这个游戏创建一些游戏资源,所以要选择这个游戏项目的资源文件夹,如下图:
编辑器打开SimpleGame的资源文件夹后,可以看到右边资源栏中列出了这个文件夹的目录结构,接着(右键)在Scenes目录下创建一个场景"scene.lyo",如下图:
双击打开这个场景,默认场景是空的,如下图:
接下来将创建一个简单的场景作为示例,过程如果用图示的话会比较麻烦,所以我做了一个简单的演示视频:
为了演示,并且也没有准备足够的资源,所以场景做得比较简单。
导入场景
现在我们已经在游戏的资源文件夹下做了一个场景:Scenes/scene.lyo
那么接着,来看看如何使用落樱RPG的功能导入这个游戏场景。
首先把JME创建项目时自动在场景中添加的一个立体体的相关代码去掉,因为不再需要。
然后添加以下代码到simpleInitApp方法中即可.
Scene scene = Loader.loadLyo("Scenes/scene.lyo");
scene.initialize();
rootNode.attachChild(scene.getRoot());
代码如下:package mygame;
import com.jme3.app.SimpleApplication;
import com.jme3.renderer.RenderManager;
import name.huliqing.luoying.LuoYing;
import name.huliqing.luoying.object.Loader;
import name.huliqing.luoying.object.scene.Scene;
public class Main extends SimpleApplication {
public static void main(String[] args) {
Main app = new Main();
app.start();
}
@Override
public void simpleInitApp() {
// Box b = new Box(1, 1, 1);
// Geometry geom = new Geometry("Box", b);
//
// Material mat = new Material(assetManager, "Common/MatDefs/Misc/Unshaded.j3md");
// mat.setColor("Color", ColorRGBA.Blue);
// geom.setMaterial(mat);
//
// rootNode.attachChild(geom);
// 初始化落樱RPG
LuoYing.initialize(this);
// 载入落樱编辑器所创建的场景
Scene scene = Loader.loadLyo("Scenes/scene.lyo");
scene.initialize();
rootNode.attachChild(scene.getRoot());
// 让镜头移动速度快一些
flyCam.setMoveSpeed(50);
}
@Override
public void simpleUpdate(float tpf) {
//TODO: add update code
}
@Override
public void simpleRender(RenderManager rm) {
//TODO: add render code
}
} 接着再运行这个项目,就可以看到载入后的场景了,如下图:
按WASD移动镜头,鼠标旋转转动镜头。关于游戏逻辑,不是这篇文章的重点,所以这里不作介绍。
总结
这是一个关于LuoYing RPG游戏框架的使用教程,主要介绍了如下几点:
- 如何使用JME SDK来创建一个游戏
- 如何整合落樱RPG到JME游戏中
- 如何使用落樱RPG编辑器创建3D场景,并载入到JME3游戏中
LuoYing RPG是一个开源框架,还有其它很多功能模块,场景功能只是其中一个小部分,由于篇幅关系,后续有空我再一一介绍和演示。
如果你对这个框架有兴趣,可以关注一下这个项目:https://git.oschina.net/huliqing/LuoYing
|