天佛降世吧 关注:3,541贴子:34,758
  • 5回复贴,共1

天龙八部单机游戏文件格式解析及重制思路

取消只看楼主收藏回复

我是名程序员,对老游戏有些兴趣。想具体解析一下天龙八部这个游戏的资源文件。所有游戏文件格式解析出来,对游戏修改、Mod制作很有帮助,进而开发出可以新建原创剧情、道具、武功的Mod工具,甚至最后可以利用原有美术资源进行重制游戏程序。这种重制在《剑侠情缘》贴吧里有成熟案例。


IP属地:湖北1楼2021-02-19 00:56回复
    最近几天大致分析了下游戏资源的结构。以flags.dat、item.dat、Monsters.dat、npcdata为代表的数据文件,为游戏定义的二进制文件,分别存储了剧情(包含对话、动画播放、人物剧情演出、人物控制等等)、物品(道具及武功)、怪物、NPC数据。贴吧里有部分帖子对其进行了解析,大多以修改为目的,没有特别系统地介绍各个文件格式如何定义的。吧里找了有个“天龙八部剧情修改器”,可以读取不少信息,说明之前有大佬作过解析。


    IP属地:湖北2楼2021-02-19 00:57
    回复
      着重对flags.dat进行了研究,参考吧里的部分帖子可以的出:
      第一行(前16个字节)勉强算是文件头,存储了GFrogsCmbLnkV100这串字符串,没什么实际意义。
      接下来是数据部分,数值以小端模式存储,低位在先高位在后,第一个4字节,代表剧情块的索引编号,紧跟的4字节指明了该剧情中剧情指令的数量和文本的数量,两个字节是该剧情快中剧情指令的数量,后两个字节是该剧情块中文本的数量。

      接下来就是剧情指令的数据区,每个剧情指令由16字节构成,可以大致分为4部分,第一个4字节存储的是指令名称,后三个4字节则可以理解为该指令需要的参数param1,param2,param3。参数可以是人物代码、武功代码、剧情块代码、战斗场景代码、或者是直接给的数值(金钱值、经验、时间)。其中二维坐标参数格式稍有区别,用一个4字节的高位2字节低位2字节分别存储了(x,y)。

      剧情指令完毕之后,文件中就是以字符串存储的文本了,单个文本以00结束,文本总数量和之前存储的数量相同。所有文本读完之后,该剧情块完毕。接下来4字节为下一个剧情块的索引,格式于前相同。


      IP属地:湖北3楼2021-02-19 00:59
      回复
        我从flags.dat中读取到1385个剧情块,少于“天龙八部剧情修改器”的1387个,后面还有几百字节的数据没能识别出来是什么。从flags.dat中的剧情块里提取剧情指令,汇总得到不重复指令120个。我分析了一下剧情指令的功能,只有30-40个大概明确是什么用途。列表如下

        贴吧中应该有大佬梳理过所有剧情指令功能,但由于贴吧抽风等原因,我现在已经找不到很完备的介绍。希望有大佬能提供一份完整的剧情指令列表,或者有天龙Mod制作的群可以拉一下。
        @dp2858517 @来掉61肥的


        IP属地:湖北4楼2021-02-19 01:03
        回复
          游戏中的图片资源、动画帧资源在游戏目录中
          ANM为人物动画
          MapSprites为地图的Sprite图
          BattleSprites为以人物角色为单位的多帧动画图片和战斗时用的Sprite图(一般为武功特效的Sprite)
          Bitmap中为UI的图形资源
          以上资源都可以在RPGViewer中预览得到。
          下一步解析的重点可能是Dragon.map文件。
          需要弄清楚地图上的阻挡物是如何设置的,触发器是如何设置的,如何与MapSprites中的图片匹配上的


          IP属地:湖北5楼2021-02-19 01:05
          回复
            先弄清楚文件格式都是如何定义的,解析出每个文件中数据的意义,理解了整个游戏如何运行的,那离重新实现这个游戏又迈进了一步。


            IP属地:湖北6楼2021-02-19 01:06
            回复