• HGE重新架构资源管理


    在HGE1.81版本开始修改结构。

    为什么不在HGE加强版本上面修复,原因很简单,这个版本的作者D3D功底一般,封装方面的技术一般。不但没有使引擎更符合大型游戏的开发,而且使很多方面搞得相当复杂。不利于引擎的以后强化。

    所以最理想的还是从官方的原版开始修改引擎基础部分。使之更符合大型游戏的开发。

    资源管理方面,HGE提供了一个从Zip压缩文件加载的接口类。其实任何一个商业游戏都是不可能使用Zip压缩文件作为客户端图片资源文件的。因为大家都

    是使用了各自的自定义文件格式资源文件。

    Zip压缩文件适用于补丁的更新。但是目前主流的做法好像已经改变。使用了微端技术。其实说白了,就是玩家一边玩游戏一边下载客户端资源文件。不用再像以前那样需要一次性下载几个G的客户端文件。显然断点续传的功能要做好的。比如那些像迅雷一些功能是需要参考的。但是写入客户端文件就容易了。当然不是那种采用Zip结构的压缩文件进行解压后覆盖原文件的做法,这种做法本来就不应该提倡,因为每一次更新都需要附带以前的那些资源一起更新,造成下载和解压都很耗时,尤其是现在大多数玩家的耐心都是有限的。更不理想的是会造成游戏长期发展的局限性。就好像一些玩家那样,提起游戏是感觉不错,想玩,但是想起几个G的客户端文件就泄气了。因为很多人的时间都是很紧的。另外好不容易坐到电脑目前,但是一打开游戏,面对那些长时间的补丁更新,换成谁,都会很不爽的。显然不利于游戏的发展壮大。

    因此多年以来,资源管理一直是游戏界最头痛的方面。

    显然HGE需要修改以符合目前的主流技术的地方还是相当多的。

    因为我直接采用了DirectX9.0 SDK,所以一些特效方面还是可以加强的。

    废弃了HGE原来的D3DX81mo.DLL,包括其声音类。使用了FMOD——目前商业主流的音源API。

    类的封装不需要过深,提供相应的空间给以后的功能增加。最讨厌的是那些封装太深的类文件,看起来头痛,修复而不出BUG是不可能的。游戏引擎最好的还是直接加直接。

    至于资源文件,采用自己定义的结构化文件,这些是大众化的做法了,没有什么新奇的。采用了简单的加密,其实感觉还是多余的,还没有看到过不被破解得体无完肤的资源文件。

    此资源文件可以导入任何类型的图片,不会像一些人的做法只可以导入指定格式的图片文件。因为D3D接口支持各种图片格式,另外一些图片格式的使用会带来很多好处。按照需要使用合适的图片格式文件是发挥D3D接口的优势。

    另外在这里告诉大家的是:当你导入图片文件到资源文件里面,最好不要通过任何的GDI对象来操作,否则保存的数据会多出很多未知的数据。造成文件变大。不信,你可以测试一下。

    那么如何保存原图片文件大小的数据呢,很简单,通过流复制就行了。

    一个资源文件最小都几十MB,大的两三百MB是很正常,这样大的文件,加载和读取显然是比较困难的,虽然现在的CPU已经很强大了,但是我们还需要想下,是不是每个玩家都是游戏发烧级别的?老牌子机器在国内是非常非常多的。

    其实资源文件虽然已经读入内存,但是通过索引来搜索我们需要的那个图片文件,显然根据文件结构树的深化程度,CPU所需要的时间是不同的。这种情况大家在解压这些rar压缩文件的时候就应该深有体会了。就为了这几张图片,把这样大的文件驻留在内存里面显然不是理想了,但是频繁地加载显然更不合理。

    所以就需要寻找合适自己的资源加载和管理方式了。我目前的做法是使用流来操作。效率相当高。

  • 相关阅读:
    3.live555源码分析----延时队列
    RTP包的结构
    2.live555源码分析----服务端doEventLoop()函数分析
    1.live555源码分析----RSTPServer创建过程分析
    RTSP协议介绍 (转)
    搭建最简单的流媒体系统(服务器和客户端)
    谈一谈 MPU6050 姿态融合(转)
    Nginx的优化
    LAMP与LNMP加速与缓存优化
    Nginx在LNMP架构中的作用与虚拟主机配置
  • 原文地址:https://www.cnblogs.com/GameDelphi/p/2374929.html
Copyright © 2020-2023  润新知