[龙之谷专题]游戏修改,研究,工具汇总
事情源于我对《龙之谷》这款游戏的任务模型的好奇心,因为模型实在做得不错,人物轮廓清晰,而且贴图也做得非常精巧. 网上折腾了一天终于找到了提取方法,遂导入至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.
MSHConverter
"龙之谷MSH模型转换器"是一款用于龙之谷模型文件(*.msh)与其他通用模型文件相互转的便捷工具.使用方法请看压缩包里面的ReadMe.txt.
DNPacker
"龙之谷PAK资源文件打包程序"是一款用于龙之谷资源修改后的重新打包的一个非常方便的工具.使用方法请看压缩包里面的ReadMe.txt.
DNModelBroswer
"龙之谷模型查看器"是由liuliqiang写的一个龙之谷模型查看程序,最新1.0a,新增OBJ导出功能.
QuickBMS
"QuickBMS"是一个通用文件提取工具,支持使用脚本提取各种的资源包,前提是你必须知道资源包的结构.以下是用于提取《龙之谷》pak包的脚本,解压到QuickBMS目录下,运行QuickBMS并按照提示依次选择该脚本,pak文件,解压目录就可以提取游戏的"所有"资源了
GameAssassin
"GameAssassin"(以下简称GA)是一个通用3D游戏资源截取工具,可以对运行中的游戏模型/骨骼(收费功能)/动画进行实时截取.
需要注意的是,由于《龙之谷》使用了由盛大开发的GPK保护引擎,如果直接使用GA的"运行"方式打开dnlauncher.exe将会出现无法运行的问题.正确的用法是:先运行GA,取消软件的"激活"复选框,运行游戏,出现游戏主窗口后再点选"激活"复选框便可以正确抓取.
游戏MOD
暂时没有什么大作品哦,不过在 MSH模型转换器开发日志 一文中有一个小小的相关制作–琪露诺的冰翼




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)
发现那些0K文件 只有在02里有诶,目前解决方法 没的只能用其他同性别职业改名替换 真悲剧- -
擦。。。本来只想稍微。。仅仅是稍微研究下模型修改的。。竟然一脚踏进这外形领域了。。盲目。。
在掌握了最基本的模型修改后就想看看能不能自己做模之类的=3=
先留个脚印。。
提取文件时,可以只解压非0字节大小的文件,而跳过0字节文件吗?0字节文件有点恼人。对quickbms脚本不了解,不知道脚本该如果修改?我用if ZSize > 0 好像有点问题。还有一个问题就是龙之谷程序对pak文件的加载顺序,比如我需要修改Resource01.pak的一个文件,那么如果我打包出的补丁文件名应该是Resource00-sp.pak还是Resource01-sp.pak?
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”也是可以保证最后加载的
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
上面的少发了一段
怎么回事?总是发不完整呢
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
貌似把之间的都过滤掉了。算了,反正是已经ok了
作者,你好。首先,我很感谢你出了这个修改补丁,这是我梦寐以求的东西,但是在我使用后发现一个相当严重的问题,这个补丁只是单单把模型反馈到了游戏当中,其贴图和骨骼出现了严重的问题,求解决。。谢谢
呃…你说的是哪个工具,可以详细说明一下么?
就是将.msh文件转换为.fbx文件的那个工具,我试着转化了一个弓手的装备,并删除了原有的模型,在骨骼上建立了一个全新的模型,赋予了材质和全新的骨骼权重(每个顶点被骨骼控制的数量不超过4个)
材质错误请把模型按照原来的Mesh个数划分,还有UV点数必须小于等于定点数(msh要求)
骨骼错误请在绑定骨骼前把骨骼结点和Mesh先Freeze一下(本地位移置零),详情请参考说明视频~
也就是说,模型的面数必须小于等于原模型?
我来总结下,是不是模型的面数不能超过原有模型的数量,UV也不能超过原有的UV数量,骨骼的旋转数值全部冻结为0?
不是面数和UV数要求哦…
是每个MSH文件里面的模型 个数 要和原来相同…
例如某个人物模型,按照头部,身体,双手,臀部,双脚划分为5个Mesh…
自制的模型就要按照这个规则划分~
然后每个mesh(Polygon什么的,每个软件叫法不一样)的面数顶点数没有限制,但是一定要为三角面,而且UV点数要小于等于顶点数,即一个顶点不可以对应一个以上的UV点…
哦哦~我和作者一样,用的是MAYA,如何才能了解UV点数小于等于顶点数?那个“poly count”的命令可以用来观察么?
这个应该是游戏规范吧,通常会在制作模型的时候就注意到的…
在maya上可以观察UV点是否重复:
在模型上选中UVPonit模式,然后打开UV Texture Editor,在模型上选中某点,看看UVTextureEditor窗口上有没有显示一个点以上的,如果只有一个点就证明UV是正确的,否则就要修改一下模型或UV…
修正模型方式:
把出现重复UV的地方的直接分裂成两个顶点
修正UV方式:
这个要看你的模型了,
通常一个关于面对称的模型可以直接用Planner方式对模型自动生成UV,这个可以避免UV重复…
如果模型不对称的话,就要自己考虑一下再作修改~
T_T老大。。还是不行,我能不能把我做的文件传给你,你帮忙看下啊?
+我扣扣吧~
298068728
或者msn
gpbeta@live.com
都没有的话email吧
studiocghibli@gmail.com
瞄了一眼,那个猜测的.lua就是一个叫lua的嵌入式脚本语言的脚本啦。魔兽世界的整个UI都是lua写的,与西和西佳佳可以很好的OOXX。嗯
还有妹汁谷和她的开发商是被盛大收购啊喂=3=
麻花藤:“这次真不是我的事儿。”
噗-,-这文章出来的时候龙之谷还米被收购的说- -
灰常感谢楼主提供的脚本和工具。
太慢发现这块园地!不知道版上有人有汉化经验吗?
目前遇到的问题是游戏介面、任务汉化都正常,但是关卡中的提示还是一样是韩文,但查uistring里明明都有翻到呀…
难道有什么地方没改到吗!?
UIString不只一个,在各个pak包里面都有可能存在副本,全部解压出来好好对比一下试试吧