大概三个月前,我在试着用几款2D游戏引擎。
第一款是SDL,这是同事推荐给我的一款跨平台的2D游戏引擎。这款引擎评价很高,总的来说是因为它够底层,实现的功能非常基本,又提供了一套平台无关的接口。所以开发人员在此之上可以天马行空的开发。不过我不是那么热衷底层……于是我在写了几个实验性的程序之后放弃了他。呵呵,当时研究它主要是因为自己也在做嵌入式,对跨平台很感兴趣。但是当时看一个老外,好像叫lazyfoo,写的开发教程让我学到了很多游戏开发方面基本的知识。
然后第二款是HGE,它是基于driectX的一款开源2D游戏引擎,也是提供较底层的功能。最核心的大概是它提供基于帧的逻辑和渲染回调,开发人员来实现每帧进行的操作。HGE还提供了一套我觉得非常不好的教程,对于新手是绝对的误导——它的教程里的代码都乱七八糟,感觉就像个C++新手写的代码一样,各种全局变量,各种魔数,各种乱命名,可读性和框架性都较差。(可能也是HGE的开发者为了求简,不过我觉得这个教程可以做的更好。)
这时,我自己做的一套简单的游戏,已经简单的设计好UI接口。于是我用HGE来实现这套接口。
我觉得HGE很恶心的地方就是它基于每帧的回调(当然你可以修改HGE内核来去除这一点,不过将带来更多麻烦,因为HGE很多函数就是基于帧回调机制的。)所以你不能像使用一个Canvas一样来进行实时绘制。于是我在游戏里自己实现了一套消息机制,把整个HGE框架跑在另一个线程中,游戏数据核心线程通过发消息的方式去通知界面更新,或者获取玩家操作。
这是当时自己弄的设计,DirectX or Ddraw改成HGE,后来自己也实现了。
刚开始的时候感觉还好,后来代码稍微上规模的话,就觉得很吃力了。因为我是基于具体游戏功能来封装HGE的接口。在之后又重构了几次,整体架构还算清晰,但是界面和代码之间的耦合度实在太大。最后可以实现一定的界面功能,但是还是太不爽了,所以决定放弃使用HGE。在此总结一下自己的想法,如果要用HGE真正开发一款稍微上规模的游戏,应该怎么做,可能也有很多不正确的地方,欢迎指正。
1. 实现页面栈、控件树
我也不知道该怎么定义这个名称,姑且叫它页面栈和控件树吧,其实就类似于WINDOWS的窗口系统,建立起树状结构的控件系统。对于每一个页面记录各种状态如焦点控件等。并通过栈维护各页面的层次关系。可以从配置文件或者页面脚本载入页面。比如游戏中的主角属性页面、装备页面等,框架都是一定的,使用的一些图片资源什么的也是一定的,应该写成配置文件,直接从文件读入。
2. 在页面树的基础上实现消息路由
消息的路由机制必须实现。
3. 建立资源管理器及配置管理器
专门的资源管理器用来加载和卸载各种图片、特效、音乐资源。同理配置管理器,管理整个HGE的配置。
4. 定义界面文件格式并使用界面文件生成具体画面,同时配套开发界面编辑器
如使用XML来定义具体界面,界面编辑器生成XML。
在1,2,3,4条满足的情况下,再进行具体游戏功能性的接口开发。甚至应该把1,2,3,4这部分抽成 引擎无关、平台无关的中间层,向下提供移植接口,用HGE来port。—— 那么整个游戏界面部分以上应该是高度可移植的。
HGE 的 gui 工具是个好东西,特别是里面的 hgeGUIObject,要多用。说个要注意的点,官网上面貌似都没给详细说明……
hgeGUIObject 的 rect 成员是该控件的操作响应作用域——不是显示的。让一个控件disable只要rect.Set(0,0,0,0)就行了。注意有时控件莫名其妙的不响应鼠标操作了,也可能是这个冲突导致的。这问题曾经让我崩溃的调了半天。。。
总结一下。
HGE完全开源、基于directX,功能较为基础。我觉得很适合个人学习和开发小型游戏,但是如果要做稍微大型的游戏的话,必须将整个UI的调度机制设计、封装好(我觉得这个工作量挺大),然后整以相关的开发工具。
OK,HGE就告一段落。
分享到:
相关推荐
总之,HGE 1.81作为一款强大的2D游戏引擎,不仅提供了丰富的功能,还注重开发者的使用体验。无论你是游戏开发的新手还是老手,HGE都能成为你创作2D游戏的强大助力。通过学习和掌握HGE,你将能够构建出富有创意和乐趣...
《HGE游戏引擎超详细教程》是一份专为游戏开发者准备的宝贵资源,它深入浅出地介绍了如何利用HGE引擎进行游戏开发。HGE全称为"Hidden Gem Engine",是一款基于DirectX8技术的游戏开发框架,特别适用于使用Delphi编程...
4. **hge注意事项.docx**:这个文档可能总结了在使用hge引擎时需要注意的问题,包括常见错误、性能优化技巧以及兼容性问题。遵循这些提示,可以避免在开发过程中遇到的许多陷阱。 5. **hge游戏引擎.docx**:这份...
2D游戏引擎_HGE的一个简单教程.pdf 1 HGE基础介绍.doc 2 HGE架构图介绍.doc 3 HGE 核心 层介绍.doc 4 HGE输入介绍.doc 5 HGE渲染介绍.doc 6 HGE声音介绍.doc 7 HGE精灵介绍.doc 8 HGE动画介绍.doc 9 HGE粒子系统...
总结,HGE引擎为初学者提供了一个易于上手的游戏开发平台,通过实例学习,可以快速理解游戏开发的基本流程和HGE的核心功能。"Test鱼的测试"就是一个很好的起点,它将帮助开发者建立起对2D游戏开发的直观认识,为...
HGE引擎M2说明书.chm
HGE引擎修复工具是针对该引擎开发的一个专用程序,用于解决在使用HGE引擎时可能出现的各种问题,如文件损坏、配置错误或系统兼容性问题等。 当你的HGE引擎在运行过程中出现异常情况,例如游戏无法启动、报错或者...
【HGE引擎】【第二课】配置单机登陆器
在压缩包中,我们首先注意到的是"HGE系列之四小试牛刀+Codes.rar",这很可能是包含一系列示例代码和项目,让用户能够逐步了解并实践HGE引擎的使用。通过这些例程,开发者可以学习如何控制游戏对象的移动、碰撞检测、...
游戏开发中的一个重要环节是使用游戏引擎来创建交互式体验,而HGE(Hyper Game Engine)是一个面向初学者和专业人士的开源游戏开发框架。这个“游戏引擎HGE结合Lua脚本 教程.zip”压缩包提供了关于如何利用HGE与Lua...
"案例1"可能是开发包提供的一个实际游戏或互动演示,用于展示HGE引擎的功能和使用方法。通过分析和运行这个案例,开发者能够直观地看到HGE如何应用于实际游戏开发,了解如何组织代码结构、处理游戏事件以及优化性能...
HGE(HGE -Harnessing the Game Engine)是一款专为2D游戏开发设计的开源引擎,它以其强大的功能和易用性,深受开发者们的喜爱。本讲解课件将帮助你更好地理解和运用HGE引擎,无论是进行商业项目还是个人创作,HGE都...
HGE(Happy Game Engine)是一款免费的游戏开发引擎,尤其适合初学者和小型游戏项目。它的特点是简单易用,功能全面,且在国内有着一定的用户基础。通过学习HGE,开发者可以快速地构建2D游戏,实现游戏的基本逻辑、...
总结,Visual C++、HGE游戏引擎和Lua脚本的结合,为开发者提供了一种高效的游戏开发方案。通过这种方式,开发者可以利用C++的强大性能和Lua的灵活性,打造出功能丰富、易于维护的游戏作品。不断学习和实践这些技术,...
HGE(High Gear Engine)是一款高效、易用的游戏开发引擎,其源码开放,为开发者提供了深入研究和学习的机会。这款引擎以其简洁的设计和强大的功能,成为了许多游戏开发爱好者和专业程序员的首选。本文将详细介绍HGE...
HGE181是该引擎的一个版本,它提供了一系列强大的工具和功能,帮助开发者快速、高效地实现游戏创意。 一、HGE引擎的核心特性 1. **音频处理**:HGE内建了全面的音频管理模块,支持MP3、WAV等多种音频格式,方便...
HGE(Happy Game Engine)是一款基于C++的开源游戏开发引擎,主要面向2D游戏的制作。这个引擎设计简洁,易于上手,为开发者提供了一系列的游戏开发工具和库,包括图形渲染、音频处理、物理模拟、输入管理等功能,极...
本教程针对的是对游戏开发感兴趣的初学者,特别是那些希望使用HGE(High Gear Engine)这一高效、易用的游戏引擎进行创作的人群。HGE是一款基于C++的开源游戏开发框架,它为开发者提供了一系列便利的工具和库,使得...
总结来说,《五子棋 HGE引擎DEMO》是一个利用HGE图形引擎实现的五子棋游戏,它结合了编程、游戏逻辑、图形渲染和AI技术等多个方面,对于想学习游戏开发的初学者来说,这是一个很好的实践项目,可以帮助他们理解和...
易语言HGE引擎模块是一款专为易语言设计的游戏开发组件,它基于开源的HGE(Happy Game Engine)引擎进行了封装,使得易语言用户能够更方便地进行2D游戏的开发和商业化运作。HGE是一个高效、简洁且功能丰富的C++游戏...