文档章节

LuoYing RPG教程-JME3游戏创建、场景编辑、载入完整示例教程

h
 huliqing
发布于 2017/05/11 20:14
字数 1893
阅读 560
收藏 17

简介

这篇文章主要介绍:

  • 如何创建一个3D游戏项目;
  • 如何整合LuoYing RPG游戏框架到JMonkeyEngine游戏中;
  • 如何使用落樱编辑器创建一个3D游戏场景,并将游戏场景载入到JME3游戏中。

文章会从创建项目、创建场景到导入场景作一个完整的包含图示、代码演示、视频演示的讲解过程。

资源准备

整个过程中需要用到以下资源,你可以从以下的链接中下载到相应的资源。

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,操作很简单,只要两个很普通的步骤。

  1. 导入落樱RPG相应的jar包
  2. 初始化落樱RPG

第一步导入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

© 著作权归作者所有

共有 人打赏支持
h

huliqing

粉丝 12
博文 5
码字总数 13706
作品 1
广州
程序员
加载中

评论(2)

爪哇豆
爪哇豆
必须要点赞,厉害了
kubei
kubei
真牛逼
huliqing/LuoYing

##落樱RPG## 落樱(LuoYing)是一个用于简化3D角色扮演游戏开发的游戏框架,该项目基于Java及JME3(JMonkeyEngine)进行开发,兼容JME,创建的游戏可以蹖多个平台发布(WindowLinuxMacAndroidIOS)...

huliqing
2017/05/02
0
0
Java 3D RPG游戏开发框架--LuoYing RPG

落樱RPG(LuoYing)是一个用于简化3D角色扮演游戏开发的游戏框架,该项目基于Java及JME3(JMonkeyEngine)进行开发,兼容JME,创建的游戏可以蹖多个平台发布(WindowLinuxMacAndroidIOS)等。 这个...

huliqing
2017/04/16
392
0
如何利用Cocos2d-x开发一个游戏?

[Cocos2d-x相关教程来源于红孩儿的游戏编程之路 CSDN博客地址:http://blog.csdn.net/honghaier] 红孩儿Cocos2d-X学习园地QQ群:249941957 加群写:Cocos2d-x 如何利用Cocos2d-x开发一个游戏...

长平狐
2012/11/19
279
0
如何利用Cocos2d-x开发一个游戏?

[Cocos2d-x相关教程来源于红孩儿的游戏编程之路 CSDN博客地址:http://blog.csdn.net/honghaier] 红孩儿Cocos2d-X学习园地QQ群:249941957 加群写:Cocos2d-x 如何利用Cocos2d-x开发一个游戏...

长平狐
2013/03/19
448
0
Cocos2d-x 2.0 TestCpp框架源码分析

[Cocos2d-x相关教程来源于红孩儿的游戏编程之路CSDN博客地址:http://blog.csdn.net/honghaier] 红孩儿Cocos2d-X学习园地QQ群:249941957 加群写:Cocos2d-x 本章为我的Cocos2d-x教程一书初稿...

长平狐
2013/03/19
294
0

没有更多内容

加载失败,请刷新页面

加载更多

Linux命令备忘录: jobs 显示Linux中的任务列表及任务状态命令

jobs命令用于显示Linux中的任务列表及任务状态,包括后台运行的任务。该命令可以显示任务号及其对应的进程号。其中,任务号是以普通用户的角度进行的,而进程号则是从系统管理员的角度来看的...

开元中国2015
53分钟前
1
0
springboot Whitelabel Error Page(Not Found)解决方案

当出现上图图的错误时注意 报错信息 There was an unexpected error (type=Not Found, status=404). Not Found代表未访问到资源 解决方案:比较访问路径和代码的路径有没有写错 正确的访问路...

斩神魂
53分钟前
2
0
记一次hbase master停止服务的原因以及恢复

在Hdfs空间不足的情况下,拒绝写入,hbase会down掉。如果hdfs空间没有清理的情况下,重新启动hbase,会报splitlog失败,原因是wal日志重写过程中会写hdfs,写不进去导致的。重启不成功。 解决...

PageYi
57分钟前
1
0
如何从平面设计转行到UI设计?

时代的变迁,科技的进步,工具的发展,薪资的差距,促使许多人转行的原因,但平面与界面两者之间有着哪些的差异呢?如果,想要转行又该具备哪些条件呢? 平面、界面设计之间的差异性 平面设计...

mo311
今天
4
0
线程池整理

一般在生产环境中,我们都不会直接new一个Thread,然后再去start(),因为这么做会不断频繁的创建线程,销毁线程,过大的线程会耗尽CPU和内存资源,大量的垃圾回收,也会给GC带来压力,延长GC停顿时间...

算法之名
今天
14
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部