一次失败的总结,HGE引擎该如何用?

大概三个月前,我在试着用几款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就告一段落。

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 3k引擎是一款较为古老的游戏引擎,而hge引擎(Hiroshima Game Engine)则是一款采用C++编写的轻量级游戏引擎。如果要将一个基于3k引擎的项目转换为hge引擎,以下是一些基本的教程步骤: 1. 首先,了解hge引擎的基本特性和使用方式。可以参考官方文档和教程以及在线论坛来获取相关信息。 2. 分析3k引擎项目的代码结构和功能。了解项目中使用的主要功能和类,以便在转换过程中进行相应的调整和修改。 3. 在hge引擎中创建一个新项目。根据自己的需求和项目的特性来设置项目的相关参数,例如窗口大小、显示模式等。 4. 将3k引擎项目中的资源文件(例如图片、音频等)复制到hge引擎项目中的相应目录下。确保资源文件的路径和名称在hge引擎中能够正确访问。 5. 逐个转换和调整3k引擎项目的功能和代码。根据hge引擎的语法和功能进行相应的修改,包括更新事件循环、渲染、碰撞检测等相关代码。 6. 调试和测试hge引擎项目。在转换过程中会遇到一些问题和bug,使用调试工具和测试用例来排查和修复这些问题。 7. 最后,将hge引擎项目打包和发布。根据平台的要求和项目的需求来生成可执行文件或者库文件,准备发布给用户使用。 总之,从3k引擎转换到hge引擎需要一定的工作量和代码调整。需要熟悉hge引擎的使用方法和特性,并对原始项目的代码结构和功能有一定的理解和分析能力。只有在转换的过程中不断学习和调试,才能顺利将3k引擎的项目转换到hge引擎上。 ### 回答2: 3K引擎HGE引擎的教程可以分为以下几个步骤: 1.了解HGE引擎:首先,需要对HGE引擎有一定的了解,包括其概念、功能和特点。可以阅读官方文档或者在线教程,掌握HGE引擎的基本知识。 2.分析3K引擎代码:将3K引擎的代码进行仔细分析,了解其架构、功能模块和代码结构。这样可以更好地理解3K引擎的代码,并为接下来的转换工作做好准备。 3.选择合适的工具:在转换过程中,可以选择一些合适的工具来辅助完成。例如,可以使用代码编辑器来修改和转换代码,使用调试工具来排查错误等。 4.修改代码适配HGE引擎:根据HGE引擎的要求和特性,对3K引擎的代码进行修改和调整,以使其能够适配HGE引擎的规范和接口。可能需要对输入输出、图形渲染、声音播放等方面进行修改。 5.测试和调试:在代码修改完成后,需要进行测试和调试,以确保转换后的代码能够正常运行并达到预期的效果。可以使用HGE引擎提供的调试工具,对代码进行逐行调试,检查和修复可能存在的问题。 6.优化和完善:转换完成后,还可以对代码进行优化和完善。可以使用一些优化技巧来提高游戏的性能和用户体验,包括资源管理、内存优化、算法优化等方面。 总之,将3K引擎转换为HGE引擎需要深入了解两个引擎的特点和代码结构,并进行相应的修改和调整。同时,还需要进行测试和调试,优化和完善代码,确保转换后的游戏能够在HGE引擎上正常运行。 ### 回答3: 转换3k引擎hge引擎的教程如下: 首先,确保你对3k引擎hge引擎有一定的了解和使用经验。了解两者的基本概念和结构对于转换工作非常重要。 第一步是了解3k引擎的主要特点和功能。3k引擎是一个开源的2D游戏引擎,它提供了丰富的功能和工具来帮助开发者创建2D游戏。熟悉3k引擎的API和工具将为你转换到hge引擎提供必要的基础知识。 接下来,了解hge引擎的主要特点和功能。hge引擎是一个用于Windows平台的2D游戏引擎,提供了高效的渲染和输入处理功能。了解hge引擎的API和工具是你成功转换的关键。 一旦你对两个引擎都有了一定的了解,你可以开始将你的项目从3k引擎转换到hge引擎。 首先,创建一个新的hge引擎项目。确保你按照hge引擎的项目结构来组织你的代码和资源文件。 接下来,逐个将3k引擎中的功能和代码迁移到hge引擎中。这可能涉及到修改你的代码逻辑、重新组织你的资源文件,以及使用hge引擎的API来实现你之前在3k引擎中使用的功能。 在转换过程中,你可能会遇到一些挑战和问题。这时,你可以参考hge引擎的官方文档和开发者社区来获取帮助和支持。 最后,测试和调试你的转换后的hge引擎项目。确保所有的功能都正常运行,并且没有出现任何错误或异常。 总结起来,将3k引擎转换到hge引擎需要你对两者有一定的了解和熟悉。然后,你需要逐步迁移你的代码和资源文件,并在转换过程中解决可能出现的问题。最后,测试和调试你的转换后的hge引擎项目,确保一切工作正常。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值