游戏引擎PushButtonEngine简介
PushButtonEngine是一个开源的模块化游戏引擎,你可以通过https://github.com/PushButtonLabs/PushButtonEngine得到其代码和相关文档。下面我将介绍一下其功能及一些实现的方式,如果有说得不对的地方请指正。文中的部分讲述直接翻译自官方文档。
PushButtonEngine的作用
应用PushButtonEngine让开发游戏变得简单,高效,PushButtonEngine适合做一些关卡的动作游戏,如超级玛丽等。这款引擎的模块化框架使得使用第三方类库更加容易,且提供了一些游戏需要的核心功能比如资源管理器、日志管理、调试检测、时间管理、全局命名对象等等,还集成了Box2D物理引擎,这样开发一个游戏你只需要配置关卡信息,建立相应的模块就行了,许多其他的事由游戏引擎来帮你完成。
下面是PushButtonEngine实现的一个小游戏,源码在官方github中可以找到。
这个小游戏主要包括4个部分:
1.资源部分,位于assets文件夹中,包括场景和人物图片,声音,关卡配置等
2.UI部分,包括开始视图和游戏视图
3.Controller部分,负责响应按键事件来控制人物
4.主程序,负责配置并启动PushButtonEngine
PushButtonEngine的设计特点
1.运用组件和实体
一个游戏对象被表示为一个IEntity,他包含了一个或多个IEntityComponents。当我们需要为PushButtonEngine增加一个组件时,我们必须要使得该组件类扩展EntityComponent或实现IEntityComponent接口,这样我们就能利用PushButtonEngine的框架来方便的实现各个组件间的相互访问。比如我们可以如下例那样定义一个组件,并进行相互间的访问。
class TestComponent extends EntityComponent
{
public var aProperty:String = "Hello!";
} var value:String = owner.getProperty(new PropertyReference("@Test.aProperty")) as String; Logger.print(this, value); // Outputs "Hello!"
2.事件系统
一个IEntity会公开一个EventDispatcher对象,供整个IEntity的IEntityComponent使用,这样我们能方便在所有Component中分发或者监听事件,而不用担心一个Component分发的事件另外一个Component监听不到。
我们这样分发事件:
owner.eventDispatcher.dispatchEvent(new Event(SOME_ACTION));
3.引入对象
当你只是在level文件当中使用组件的时候,flex编译器并不知道他们被使用了,并且在编译的时候会删除他们,为了防止这种情况的产生,我们需要通过PBE.registType函数来引入对象。
PBE.registerType(com.pblabs.rendering2D.DisplayObjectRenderer);
4.一些重要的组件
PBE.startup函数主要的作用就是配置一些组件,下面说明一下:
TemplateManager: PushButtonEngine利用XML来配置关卡信息,而TemplateManager则是用来解析这些信息的。
ResourceManager: 负责关卡信息,图片,声音等资源的加载。
InputManager和InputMap: 负责用户输入控制,输入和操作的绑定等。
SoundManager: 负责声音的管理
ScreenManager:负责UI的控制
LevelManager: 负责关卡的控制和加载
Rendering2D: 提供了一个基本的图形图像渲染框架。
5.循环过程
每个游戏中都会有一些动态的对象,比如一个人物的位置,动作,在游戏中各对象运动的过程中,需要解决的一个重要问题是:多长时间处理(更新)一次游戏中的待处理事件,和更新显示界面。PushButtonEngine提供了一套循环框架来控制需要循环执行或是显示的对象。
这部分功能是由ProcessManager组件实现的,它允许你为执行对象定义优先级。
对于所有动态显示的对象,比如人物对象,引擎里定义了IAnimatedObject接口,并要求你实现onFrame函数来进行显示。
对于所有需要处理的计算,比如人物的位置,引擎里定义了ITickedObject接口,并要求你实现onTick函数来进行计算。
游戏引擎PushButtonEngine简介的更多相关文章
- 开源3D游戏引擎Irrlicht简介
Irrlicht简介 Irrlicht在国内也被叫做"鬼火"引擎,是一款用C++编写的开放源代码的高性能游戏引擎.而且是跨平台的,具有很好的移植性,Irrlicht支持OpenGl ...
- 转:高层游戏引擎——基于OGRE所实现的高层游戏引擎框架
高层游戏引擎——基于OGRE所实现的高层游戏引擎框架 这是意念自己的毕业论文,在一个具体的实践之中,意念主要负责的是物件和GUI之外的其他游戏系统.意念才学疏陋,望众位前辈不吝赐教.由于代码质量不高. ...
- 《Genesis-3D开源游戏引擎完整实例教程-2D射击游戏篇:简介及目录》(附上完整工程文件)
G-3D引擎2D射击类游戏制作教程 游戏类型: 打飞机游戏属于射击类游戏中的一种,可以划分为卷轴射击类游戏. 视觉表现类型为:2D 框架简介: Genesis-3D引擎不仅为开发者提供一个3D游戏制作 ...
- 《Genesis-3D开源游戏引擎完整实例教程-跑酷游戏篇:简介及目录》(附上完整工程文件)
跑酷游戏制作 游戏类型: 此游戏Demo,为跑酷类游戏. 框架简介: 游戏通常由程序代码和资源组成.如果说模型.贴图.声音之类的可以给游戏环境提供一个物理描述和设置,那么脚本和代码块会给游戏赋予生命, ...
- 《Genesis-3D开源游戏引擎--横版格斗游戏制作教程:简介及目录》(附上完整工程文件)
介绍:讲述如何使用Genesis-3D来制作一个横版格斗游戏,涉及如何制作连招系统,如何使用包围盒实现碰撞检测,软键盘的制作,场景切换,技能读表,简单怪物AI等等,并为您提供这个框架的全套资源,源码以 ...
- 开源战棋 SLG 游戏框架设计思考(一)简介和游戏引擎
战棋 SLG 游戏 SLG(Simulation Game)游戏是模拟游戏的简称.战棋类的SLG有两种:一种是 War Game 中的兵棋推演分支,常见的游戏有战争艺术3(TOAW3 — The Op ...
- Genesis-3D开源游戏引擎简介!
Genesis-3D由搜狐畅游公司超百人引擎研发团队历时数年耗费巨资自主研发,是国内外首款商业开源的3D游戏引擎平台.它包括跨平台渲染引擎.2D引擎.物理引擎.音效系统.粒子系统.动画系统.服务器引擎 ...
- UWP简单示例(三):快速开发2D游戏引擎
准备 IDE:VisualStudio 2015 Language:VB.NET/C# 图形API:Win2D MSDN教程:UWP游戏开发 游戏开发涉及哪些技术? 游戏开发是一门复杂的艺术,编码方面 ...
- Unity3D游戏开发初探—1.跨平台的游戏引擎让.NET程序员新生
一.Unity3D平台简介 Unity是由Unity Technologies开发的一个让轻松创建诸如三维视频游戏.建筑可视化.实时三维动画等类型互动内容的多平台的综合型游戏开发工具,是一个全面整合的 ...
随机推荐
- Introduction of Team Member
1. 姓名:xx 性别:男 出生日期:1993.04.16 班级:110616班 职务:小班长 爱好:唱歌.排球 2. 姓名:xxx 性别:男 出生日期:1993.4.20 3. 姓名:xxx 性别: ...
- FK JavaScript之:ArcGIS JavaScript添加Graphic,地图界面却不显示
使用ArcGIS JavaScript,往地图中添加几个Graphic,基本是与官网示例代码一致.绘制的图形一闪而过之后,就没了 核心代码如下: iniToolBar: function () { t ...
- php内网探测脚本&简单代理访问
<?php $url = isset($_REQUEST['u'])?$_REQUEST['u']:null; $ip = isset($_REQUEST['i'])?$_REQUEST['i' ...
- 导出所选行为excle
要实现的是将所选行导出.例如勾选这两条
- WS调用的时候报错
报错内容javax.xml.ws.WebServiceException: Method recognizeIdentityCardByFilePath is exposed as WebMethod ...
- php课程---随机数
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- 【iCore3双核心板】iCore3双核心板使用说明(图文)
1.iCore3供电.程序下载线路连接示意图(使用iTool2) 2.iCore3供电.程序下载线路连接示意图(使用J-link和Blaster) 3.iCore3供电.读U盘线路连接示意图
- Bootstrap 轮播插件
一.轮播 //基本实例. <div id="myCarousel" class="carousel slide"> <ol class=&qu ...
- 【行业交流】2016 TiD质量竞争力大会——移动互联网测试到质量的转变之路
◆版权声明:本文出自胖喵~的博客,转载必须注明出处. 转载请注明出处:http://www.cnblogs.com/by-dream/p/5691233.html TiD质量大会在北京召开,有幸去参加 ...
- Intelligencia.UrlRewriter在IIS 7.0下的完全配置攻略
在项目中,之前公司是使用IIS 7.0官方的URL重写模块,官方的使用说明请参见官方URLRewrite ,添加伪静态支持,后来经理问我有没有涉及伪静态,我说之前项目中我一直是用Intelligen ...