诚毅小家|集美大学生活【集美大学,诚毅学院,水产学院,师范学院,美术学院,财经学院,体育学院,航海学院,集美学村,石鼓路,龙舟池】

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
热搜: 活动 交友 discuz
查看: 400|回复: 0

【GBA、NDS、PSP】汉化基础教程——文字篇(四)by PGCG

[复制链接]
发表于 2010-8-24 16:33:58 | 显示全部楼层 |阅读模式
本帖最后由 守护¥云 于 2010-8-24 17:30 编辑

汉化基础教程——文字篇(四)by PGCG

  
文本到底有没有导出完?这个问题基本上就是凭经验了,先大体上玩玩游戏,看看游戏中那些地方会出现文本句子。一般来说游戏制作者会把游戏中剧情对话做成一个脚本块;NPC对话做成一块;道具名称做成一块;菜单指令介绍等一块;相关介绍一块……。块与块一般情况下还是分开放置的,所以有时候就得分开查找。例如在《光明之魂2》中文本文字按照出现地点可以分为剧情对话、NPC对话、道具名称、介绍、指令和图鉴部分。运气特别好,虽然这几部分内容是独立的,但都被放在了一起(《光2》程序员BT啊,怪物图鉴部分竟然要做两套内容完全一样的文本脚本,分别对应一周目和二周目。当初我也没发觉这个问题,这也造成当时有很多人说图鉴部分没有汉化的原因)。


  文本脚本也是非常之灵活多变的,基本上每启动一个游戏汉化项目就得重新做一次导入导出工具(也不是全部重新来,基本上修改个别参数、某个结构就可以了)。文本脚本在总体结构上可以分为三种类型:顺序结构、指针表结构、跳跃结构。


  顺序结构:



  这种结构最为常见也最简单,每一个文段都是紧挨着的,段与段之间有一个承接符来表示前一段的结束和后一段的开始。句子有伸长缩短改改这个控制符的位置就可以了,很简单的。这种结构在《光明之魂2》中相当的多,而承接控制符就是“FFFE”了,大家自己可以试试!
  指针表结构:



  接触过编程的人一定会知道指针是什么意思吧,指针就是指向目标的地址,多个指针构成的向量表就是指针表(实在搞不懂就把它想象成码表)。在指针表内指针按一定次序依次排列,程序就是靠他引导定位文本脚本的,有的游戏一句话就有一个指针,但有的是一个场景对话才有一个指针。通过对指针的修改就能达到移动文段的目的,比如当“文段1”修改后长度如果出现增加,为了不影响句子的正确显示,这时我们就得把“文段2”往后(高地址方向)移动,并修改对应的指针让它再次指向“文段2”的头部。还是《光2》上面那句话为例子,该句从0x368574开始到0x368589结束。取得句首地址0x368574把它转换为GBA内存地址0x08368574(不同的游戏机由于硬件基础不同,转换的方法也不同。对于GBA来说游戏机把卡带内容影射到内存中从0x08000000到0x09FFFFFF的一块区域内进行寻址操作的,所以直接在地址前加上08000000就可以了)。高低反得到“74853608”,用《UE》搜索找到唯一一个地址:


  
观察一下不难发现该段很有规律。的确,你所看到的就是指针表,一个个指针顺次排列。把我们搜索到的指针改为下一句话的起始地址0x36858A,在游戏中原先的那句话变成了你所修改指针的指向的这一句了。现在你该体会到指针表的含义了吧。继续对指针表研究,不难发现其规律——《光明之魂2》是每一小段剧情一个对话指针的。

  跳跃结构:


  这种结构最为麻烦,规律最难把握。文段与文段之间夹杂很多“垃圾”,比如程序指令等等,少则几个字节,多的可能几百个字节也不为过,有时候移动一下位置都会造成问题,对于这种情形只能祈祷游戏中少出现些了。处理这种结构的时候一定要小心中间的那些“垃圾”千万别真的把它们扔掉了!!,导入导出程序也要考虑怎样合理处理这些“垃圾”,必要时候手工操作也是难免的嘛。《光明之魂2》中道具名称就属于这类情况,经过反复对照试验发现同一类型的道具名称地址的差是一个定值,相对来说降低了不少难度。

  由此可见三种结构在《光明之魂2》中都有所出现,在你今后汉化游戏的时候肯定会遇到这样那样的特殊结构,但无论哪种结构都不外乎以上三种的有机组合。大家一定不要吝惜花在结构分析上的时间,否则“一失足成千古恨”。  
  文本导出完毕后大体上检查一遍,如果没什么问题的话就可以进行翻译了。翻译可以交给懂外语的朋友或者网友等等的,当然如果你自己会的话更好。翻译的时候仍然要注意书写的格式,为了避免导入时候不必要的麻烦一定要采用统一的格式。一般地,翻译内容都是跟在原文以后的。以下是《光明之魂2》的翻译片断,仅供参考:


引用
<368578>

···ヒソヒソ
---
···咕~

<36858E>

···え?そうなんですか?
---
···嗯?有动静?

<3685B0>

シッ!  
今···物音がしたぞ
---
嘘!
刚才···有什么声响

<3685D2>

あ···今の···
私のおなかの音です
---
啊···刚才是···
我肚子发出的声音

     原文和译文之间加入的“---”只是为了方便导入程序识别而已。如果你要使用《SIN》来导入的话还需阅读说明文本并按照它的版式要求书写译文。等到所有文本都翻译完毕后还有一个非常必要的环节——文饰。翻译的时候基本上都是以文字字面意思来进行的,单独一句是没有什么问题,但拿到游戏中连续起来问题就大了。所以在完成翻译后要整理译文,让对话通顺流畅符合中文习惯等等,如果再追求一点可以让译文突出说话角色的性格特征等等,如果方便可以请教有文学功底的朋友来进行剧情润色。润色完毕后还要对整篇文章逐句安全检查。看看每行字符是否超出范围;控制符书写是否正确、是否配对完整(比如文字变色、慢速等等有起始符还有终止符);标点符号是否统一,特别注意半角符号和全角符号,在电脑看来“,”和“,”是不同的符号,除非你在做码表的时候都有定义……。文本检查相当重要马虎不得!!!


小结:


  本节内容不多、分量十足,文本导出的落脚点不是仅仅为了翻译,而是要为翻译后的导入过程。导出是否完善直接影响导入的成功与否,在设计辅助工具的时候要想着怎样排版既方便翻译时正确阅读理解文字内容,还要考虑这样排版日后是否能使工具正确识别转换其中的文字信息并写入游戏文件中正确的位置。特别是有跳跃脚本(也称“飘浮脚本”)的游戏怎样避免改动文段间的指令部分是设计的关键。建议在完全把握脚本后先写导入工具然后再写导出工具,导出后先利用一小段文本测试导入工具,确认没有任何问题后再进行翻译。翻译的时候考虑到别人可能对汉化并不太了解,所以一定要给对方说清楚具体操作。最后需要说一点:导出文本的时候如果脚本有包含说话人的信息也要一并导出来,这样会提高翻译时的效率和准确率。对于《光明之魂2》,前面说过在每一句开头的4个字节就是说话人,这些信息也最好导出,哪怕是导出个说话人的代码也可以。而当初我并没有在意这一点,所以整个汉化消耗的时间大部分都浪费在了翻译上,没有说话人的翻译是很伤脑筋的。

您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|Archiver|手机版|小黑屋|诚毅小家 ( 小家社区工作室 闽ICP备05007965号 )

GMT+8, 2024-5-3 18:46 , Processed in 0.071681 second(s), 24 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表