挂机型外挂开发-游戏数据管理类

当数据包被解析分发后,我们需要一个类来管理保存数据

这里创建个基类

  TGameObjNode = class
     private
       mId:Int64;
       mName:String;
     public
       constructor Create(_Id:Int64;_Name:String);

       property Id:Int64 read mId;
       property Name:String read mName;
  end;

  TGameObjBase = class
    private
      List:TList;
      Cri:TCriticalSection;

    protected
      Function AddItem(p:Pointer):Integer;
      Function DelItem(p:Pointer):Integer;

    public
      constructor Create(HandleName:String);

      Procedure Clear();
      Function GetObjById(Id:Int64):TGameObjNode;
      Function GetObjByName(Name:String):TGameObjNode;
      Function GetObjByIndex(Idx:Integer):TGameObjNode;

  end;

角色信息,环境信息,背包信息,任务信息等等,都可以继承该类后扩展

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
游戏中如何读取压缩包文件       我们在市场上买了一个游戏,很少会轻易的看到游戏目录里一堆的BMP,PCX资源图片。难道他们不使用BMP之类的文件作为图片资源吗?非也,其实他们把这些资源图片进行了打包、压缩。   举几个游戏的例子吧,大名鼎鼎westernwood的《红色警戒》的.mix文件就是一种压缩包,里面包含了一堆堆的游戏图片,声音等资源。还有blizzard的《星际争霸》、《暗黑破坏神》、《魔兽系列》的.mpq文件也是一种压缩包,里面包含了各种游戏使用的资源。几乎所有的游戏都用到了压缩包。   那么为什么要使用这种压缩包呢?原因很多,首先就是压缩,游戏中使用的图片等资源都是极其适合压缩的,这样就减小了游戏的体积。如果把《红色警戒2》的资源全部解开相信会超过3G。其次压缩后文件体积的减小会带来读盘速度的显著提高。通常一个2M的BMP文件可以被压缩到700K以内,读取一个2M的文件和读取一个700K的文件然后再内存中解压的速度对比是可想而知的。最后,将大量的资源文件打包能使得游戏目录清晰,而不是一堆堆的文件夹和文件,这样能减少磁盘空间的浪费,也减少了磁盘碎片。 说了那么多压缩包的好处,我们在游戏中到底怎么使用压缩包呢?   1.我们需要定义我们自己的压缩包文件存储格式。   2.根据1我们写一个压缩工具来对游戏中的资源进行压缩存储。   3.根据1我们写一个解压缩的库以便我们游戏中使用。   4.在游戏的代码中,我们调用这个库,来读取我们包中的文件。   看到这儿,似乎我们需要做的工作还是很多、很复杂的。要定义一个文件结构,又要写压缩工具、还要写解压库。而我们真正使用确实在最后一步,而且是简单的调用一个库而已。似乎有点得不偿失了。好了,我们现在要找一条捷径来完成我们游戏使用压缩包的问题,对于1和2来说其实很好办,现成的就有很多压缩软件可以生成压缩包,winzip,winrar,winace ……都是非常好的压缩工具,这样我们不用定义压缩包的存储格式,也不用编写压缩工具。不费任何力气就完成了1和2两步。那么第3步又如何呢?文件存储格式不是我们设计的,我们无法知道文件是如何组织、如何压缩的,跟不用说知道如何压缩了。不过上网搜索一下,我们还是能得到一些winzip,winrar格式的解压缩源代码的。不过研究起这些代码来又是件痛苦的事情,更何况还要用在自己的游戏里。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值