文档章节

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

h
 huliqing
发布于 2017/05/11 20:14
字数 1893
阅读 583
收藏 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
288
0
如何利用Cocos2d-x开发一个游戏?

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

长平狐
2013/03/19
481
0
[ActionScript 3] 【开源】D5Power RPG网页游戏开发套件

分享(0) 收藏(39) 举报 D5Power 沙发 发表于 2011-2-18 09:19:30 第一步 创造第一幅游戏地图 举报 D5Power 板凳 发表于 2011-2-18 09:19:37 使用开发包还原地图并创建游戏角色...

simpower
2015/01/16
0
0

没有更多内容

加载失败,请刷新页面

加载更多

开始看《Java学习笔记》

虽然书买了很久,但一直没看。这其中也写过一些Java程序,但都是基于IDE的帮助和对C#的理解来写的,感觉不踏实。 林信良的书写得蛮好的,能够帮助打好基础,看得出作者是比较用心的。 第1章概...

max佩恩
昨天
7
0
Redux 三大原则

1.单一数据源 在传统的MVC架构中,我们可以根据需要创建无数个Model,而Model之间可以互相监听、触发事件甚至循环或嵌套触发事件,这些在Redux中都是不被允许的。 因为在Redux的思想里,一个...

wenxingjun
昨天
3
0
跟我学Spring Cloud(Finchley版)-12-微服务容错三板斧

至此,我们已实现服务发现、负载均衡,同时,使用Feign也实现了良好的远程调用——我们的代码是可读、可维护的。理论上,我们现在已经能构建一个不错的分布式应用了,但微服务之间是通过网络...

周立_ITMuch
昨天
2
0
XML

学习目标  能够说出XML的作用  能够编写XML文档声明  能够编写符合语法的XML  能够通过DTD约束编写XML文档  能够通过Schema约束编写XML文档  能够通过Dom4j解析XML文档 第1章 xm...

stars永恒
昨天
1
0
RabbitMQ学习(2)

1. 生产者客户端 void basicPublish(String exchange, String routingKey, boolean mandatory, boolean immediate, BasicProperties props, byte[] body) 1. 在生产者客户端发送消息时,首先......

江左煤郎
昨天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部