wenjiang 的个人资料morning's blog照片日志列表更多 工具 帮助

日志


10月14日

星际争霸汉化总结

结束星际争霸汉化的研究,做一下总结:
汉化一个英文游戏,主要包含2个方面:
1.原始字符串的提取并翻译,有几种方式:
 1.1 静态资源汉化:提取资源,然后翻译其中的字符,并回写,这涉及很多方面,包括资源格式,当然,工作量往往很大,而且会存在汉化遗漏的问题.
 1.2 实时动态汉化:在字符串即将显示时,进行即时汉化,由于是实时获取,所以,只需分析内存中有关字符串处理的结构即可,把游戏大致玩一遍,保存所有程序传过来的字符串,然后把这些字符串翻译做成字典,那么,在使用时,根据这个字典实时翻译即可.当然这其中包含一些技巧,例如 字符串通配算法,翻译缓存,字典的管理.它们决定了实时翻译的速度.
2.修正中文显示支持:
 2.1 中文的显示
 ANSI语言的程序员(其实绝大多数没双字节概念的程序员都有这个问题)会假设字符串是单字节的,直接++,而不是_tcsinc.
 由于ASCII的字符数很有限,游戏开发者为了优化游戏性能,可能会做成字库,但中文就死翘翘了.
 两种办法解决:
  2.1.1 制作一个包含游戏用到几种大小的包含所有字符的字库(字符图片),这个办法性能一般较快,因为等需要显示时,直接把字符所对应的点阵拷贝过去就可以了,但是由于中文(仅GB2312部分)字符在7000左右,如果游戏用到了3个大小的字体,哦...可以想象这个字库是多大了.
  2.1.2 现在的计算机处理字符已经非常快了,另外,游戏出现大量对白的画面毕竟少数,所以,采用GDI绘制到一个bitmap缓冲,然后贴图,这也是一个办法,比起前者,灵活性较高.通过算法优化,速度不比前者差.(现在支持中文/日文/韩文的游戏一般采用这个办法)
 2.2 更多信息
 我们要显示字符,不可能仅仅把字符贴到(0,0)的位置上,还包括以下信息
  2.2.0 绘图目标:surface/缓冲的起始地址,宽度,高度,色深,最终的字符串图片会合成到这个缓存的准确内存地址.
  2.2.1 绘图坐标:决定字符串的显示位置
  2.2.2 绘图区域:决定字符串的区域,有多少宽,有多少高
  2.2.3 字符串风格:斜体/粗体,字体大小,这些决定了我们该使用的中文字体的height和weight
  2.2.4 颜色:是的,还有颜色,当然,可能还包括透明度,先生成256色深的白底黑字的图片,然后转成具有alpha等级的对应颜色点阵图.
  2.2.4 其他:默认的单字符宽度,默认的TAB宽度等

评论 (1)

请稍候...
很抱歉,您输入的评论太长。请缩短您的评论。
您没有输入任何内容,请重试。
很抱歉,我们当前无法添加您的评论。请稍后重试。
若要添加评论,需要您的家长授予您相应权限。请求权限
您的家长禁用了评论功能。
很抱歉,我们当前无法删除您的评论。请稍后重试。
您已超过了一天之内允许提供的评论数上限。请在 24 小时后重试。
因为我们的系统表明您可能在向其他用户提供垃圾评论,您的帐户已禁用了评论功能。如果您认为我们错误地禁用了您的帐户,请联系 Windows Live 支持部门
完成下面的安全检查,您提供评论的过程才能完成。
您在安全检查中键入的字符必须与图片或音频中的字符一致。

若要添加评论,请使用您的 Windows Live ID 登录(如果您使用过 Hotmail、Messenger 或 Xbox LIVE,您就拥有 Windows Live ID)。登录


还没有 Windows Live ID 吗?请注册

水水发表:
谢谢,这个还不错嗯^^
10 月 17 日

引用通告

此日志的引用通告 URL 是:
http://ywjheart.spaces.live.com/blog/cns!2067FCA683114503!900.trak
引用此项的网络日志