[龙之谷专题]游戏修改,研究,工具汇总

    事情源于我对《龙之谷》这款游戏的任务模型的好奇心,因为模型实在做得不错,人物轮廓清晰,而且贴图也做得非常精巧. 网上折腾了一天终于找到了提取方法,遂导入至maya,渲染后发给某包,居然有这这样的回复啊:

~包子特派员~ 12:55:50
出动画吧=w=
~包子特派员~ 12:56:04
说不定可以拍电影=w

    嘛~虽然不是很现实,不过找款游戏研究下挖下坑还是不错的…XD …于是有了这篇文章~(众:这什么理由啊- -)

前言

    网上其实早在2010年头就有不少关于破解/修改《龙之谷》这款游戏的言论和研究成果了,这篇文章应该说并不是完全原创的,二是对网上各种研究等的概括总结.本文提供的任何说明及工具仅供参考研究学习使用,请勿用于商业用途,由此文产生的商业纠纷本人一概不负责任.请各位使用者慎用.

资源结构

    《龙之谷》由韩国EYEDENTITY GAMES(以下简称EG)开发(现在貌似被腾讯收购了),游戏使用EG自行研发的方式压缩打包成,PAK格式,资源包内不少格式属于EG自行研发并在文件头部写上"Eternity Engine XXX(格式) File XX(版本号)"标识,现在暂时没有(或没发现)相关格式的编辑工具.因此目前提取游戏资源后能直接编辑的格式仅有OGG(音频),DDS(贴图).

文件格式

   从PAK提取的文件来看,《龙之谷》这个游戏使用了不少自行开发的"非通用"未知格式,如要对游戏进行修改,就必须进行格式转换,然而目前尚没有对这些未知格式进行通常转换的软件,因此只能对这些格式先进行整理了:

后缀名 文件头标识 文件格式
.act Eternity Action File 动画索引
.ani Eternity Engine Ani File 骨骼动画
.cam Eternity Engine Camera File 摄像头配置(猜测)
.dds DDS 贴图格式
.dmv DN_CutSceneData 过场动画(猜测)
.eff Eternity Engine Effect File 特效(猜测)
.env 环境配置(猜测)
.ext 游戏配置
.fontset 字体配置
.lua 游戏脚本(猜测)
.mah Eternity Engine Mesh File (0.12) 模型格式(猜测)
.msh Eternity Engine Mesh File (0.1) 模型和骨骼
.nav  
.ogg OggS 音频格式
.ptc Eternity Engine Particle File 特殊文件(猜测)
.skn Eternity Engine Skin File 贴图骨骼索引
.xml 扩展标记
.ini 信息配置
Eternity World Infomation File  

可用工具

ExtEditor
    "龙之谷EXT二维表编辑器"是一款用于龙之谷二维表配置/索引文件(*.ext)便捷的编辑工具工具.使用方法请看压缩包里面的ReadMe.txt.

龙之谷EXT编辑器1.1 点击下载
龙之谷EXT查看器1.0 点击下载
程序详细说明日志 点击跳转

MSHConverter
    "龙之谷MSH模型转换器"是一款用于龙之谷模型文件(*.msh)与其他通用模型文件相互转的便捷工具.使用方法请看压缩包里面的ReadMe.txt.

龙之谷MSH模型转换器V1.2 点击下载
程序详细说明日志 点击跳转

DNPacker
    "龙之谷PAK资源文件打包程序"是一款用于龙之谷资源修改后的重新打包的一个非常方便的工具.使用方法请看压缩包里面的ReadMe.txt.

龙之谷PAK资源打包器V2.2 点击下载
程序详细说明日志 点击跳转
程序作者主页: 点击跳转

DNModelBroswer
    "龙之谷模型查看器"是由liuliqiang写的一个龙之谷模型查看程序,最新1.0a,新增OBJ导出功能.

龙之谷模型查看器V1.0a 点击下载
程序作者邮箱 点击下载

QuickBMS
    "QuickBMS"是一个通用文件提取工具,支持使用脚本提取各种的资源包,前提是你必须知道资源包的结构.以下是用于提取《龙之谷》pak包的脚本,解压到QuickBMS目录下,运行QuickBMS并按照提示依次选择该脚本,pak文件,解压目录就可以提取游戏的"所有"资源了

QuickBMS下载页 点击跳转
提取脚本(由某包提供) 点击下载

GameAssassin
    "GameAssassin"(以下简称GA)是一个通用3D游戏资源截取工具,可以对运行中的游戏模型/骨骼(收费功能)/动画进行实时截取.

GameAssassin下载页 点击跳转

    需要注意的是,由于《龙之谷》使用了由盛大开发的GPK保护引擎,如果直接使用GA的"运行"方式打开dnlauncher.exe将会出现无法运行的问题.正确的用法是:先运行GA,取消软件的"激活"复选框,运行游戏,出现游戏主窗口后再点选"激活"复选框便可以正确抓取.

游戏MOD

    暂时没有什么大作品哦,不过在 MSH模型转换器开发日志 一文中有一个小小的相关制作–琪露诺的冰翼

    • 我的电脑
    • 十一月 20th, 2010

    Resource00.pak Resource01.pak都可以正常的解压和打包。
    但是Resource02.pak解压后不做任何操作直接打包,如果再解压BMS会提示:
    Error: the compressed zlib.deflate input is wrong or incomplete(-5)
    Error: there is an error with the decomperssion
    the returned output size is negative(-1)

    • 琴酒
    • 十一月 20th, 2010

    发现那些0K文件 只有在02里有诶,目前解决方法 没的只能用其他同性别职业改名替换 真悲剧- -

  1. 擦。。。本来只想稍微。。仅仅是稍微研究下模型修改的。。竟然一脚踏进这外形领域了。。盲目。。
    在掌握了最基本的模型修改后就想看看能不能自己做模之类的=3=
    先留个脚印。。

    • 小狄
    • 十一月 28th, 2010

    提取文件时,可以只解压非0字节大小的文件,而跳过0字节文件吗?0字节文件有点恼人。对quickbms脚本不了解,不知道脚本该如果修改?我用if ZSize > 0 好像有点问题。还有一个问题就是龙之谷程序对pak文件的加载顺序,比如我需要修改Resource01.pak的一个文件,那么如果我打包出的补丁文件名应该是Resource00-sp.pak还是Resource01-sp.pak?

      • 小狄
      • 十一月 28th, 2010

      IDString “EyedentityGames Packing File 0.1″
      goto 0×104
      get Files long
      get noffset long
      goto noffset
      for i = 0 0
      clog NAME OFFSET ZSIZE1 SIZE
      endif
      next i
      关于0字节文件跳过,我改为这样就搞定了,之前if里面把另外几个get包含了进去,结果读数据出现了问题。剩下的问题就是加载顺序了,见上

    • 顺序问题和windows的排序机制是一样的,

      你希望那个补丁覆盖前面的数据,就把文件名改″大”一点,

      如果不清楚直接用”zzzzz.pak”也是可以保证最后加载的

    • 小狄
    • 十一月 28th, 2010

    IDString “EyedentityGames Packing File 0.1″
    goto 0×104
    get Files long
    get noffset long
    goto noffset
    for i = 0 0
    clog NAME OFFSET ZSIZE1 SIZE
    endif
    next i
    上面的少发了一段

      • 小狄
      • 十一月 28th, 2010

      怎么回事?总是发不完整呢
      IDString “EyedentityGames Packing File 0.1″
      goto 0×104
      get Files long
      get noffset long
      goto noffset
      for i = 0 0
      clog NAME OFFSET ZSIZE1 SIZE
      Endif
      next i

    • 小狄
    • 十一月 28th, 2010

    貌似把之间的都过滤掉了。算了,反正是已经ok了

    • 鼠尾草
    • 十二月 24th, 2010

    作者,你好。首先,我很感谢你出了这个修改补丁,这是我梦寐以求的东西,但是在我使用后发现一个相当严重的问题,这个补丁只是单单把模型反馈到了游戏当中,其贴图和骨骼出现了严重的问题,求解决。。谢谢

    • 呃…你说的是哪个工具,可以详细说明一下么?

    • 鼠尾草
    • 十二月 27th, 2010

    就是将.msh文件转换为.fbx文件的那个工具,我试着转化了一个弓手的装备,并删除了原有的模型,在骨骼上建立了一个全新的模型,赋予了材质和全新的骨骼权重(每个顶点被骨骼控制的数量不超过4个)

    • 材质错误请把模型按照原来的Mesh个数划分,还有UV点数必须小于等于定点数(msh要求)
      骨骼错误请在绑定骨骼前把骨骼结点和Mesh先Freeze一下(本地位移置零),详情请参考说明视频~

    • 鼠尾草
    • 十二月 27th, 2010

    也就是说,模型的面数必须小于等于原模型?

    • 鼠尾草
    • 十二月 27th, 2010

    我来总结下,是不是模型的面数不能超过原有模型的数量,UV也不能超过原有的UV数量,骨骼的旋转数值全部冻结为0?

    • 不是面数和UV数要求哦…
      是每个MSH文件里面的模型 个数 要和原来相同…

      例如某个人物模型,按照头部,身体,双手,臀部,双脚划分为5个Mesh…
      自制的模型就要按照这个规则划分~

      然后每个mesh(Polygon什么的,每个软件叫法不一样)的面数顶点数没有限制,但是一定要为三角面,而且UV点数要小于等于顶点数,即一个顶点不可以对应一个以上的UV点…

    • 鼠尾草
    • 十二月 29th, 2010

    哦哦~我和作者一样,用的是MAYA,如何才能了解UV点数小于等于顶点数?那个“poly count”的命令可以用来观察么?

    • 这个应该是游戏规范吧,通常会在制作模型的时候就注意到的…
      在maya上可以观察UV点是否重复:
      在模型上选中UVPonit模式,然后打开UV Texture Editor,在模型上选中某点,看看UVTextureEditor窗口上有没有显示一个点以上的,如果只有一个点就证明UV是正确的,否则就要修改一下模型或UV…
      修正模型方式:
      把出现重复UV的地方的直接分裂成两个顶点
      修正UV方式:
      这个要看你的模型了,
      通常一个关于面对称的模型可以直接用Planner方式对模型自动生成UV,这个可以避免UV重复…
      如果模型不对称的话,就要自己考虑一下再作修改~

    • 鼠尾草
    • 十二月 29th, 2010

    T_T老大。。还是不行,我能不能把我做的文件传给你,你帮忙看下啊?

  2. 瞄了一眼,那个猜测的.lua就是一个叫lua的嵌入式脚本语言的脚本啦。魔兽世界的整个UI都是lua写的,与西和西佳佳可以很好的OOXX。嗯

    • 还有妹汁谷和她的开发商是被盛大收购啊喂=3=
      麻花藤:“这次真不是我的事儿。”

    • Paspy :

      还有妹汁谷和她的开发商是被盛大收购啊喂=3=
      麻花藤:“这次真不是我的事儿。”

      噗-,-这文章出来的时候龙之谷还米被收购的说- -

    • ayami
    • 一月 25th, 2011

    灰常感谢楼主提供的脚本和工具。

    • 小z
    • 五月 3rd, 2011

    太慢发现这块园地!不知道版上有人有汉化经验吗?
    目前遇到的问题是游戏介面、任务汉化都正常,但是关卡中的提示还是一样是韩文,但查uistring里明明都有翻到呀…
    难道有什么地方没改到吗!?

    • UIString不只一个,在各个pak包里面都有可能存在副本,全部解压出来好好对比一下试试吧

  1. 八月 17th, 2010
    应用来源:greensea 的 blog