视频游戏国际化是使游戏本地化无缝进行的过程。要成功本地化,在开始实际本地化流程之前,应先使用国际化产品。
游戏开发人员犯了一个典型的错误,即假设本地化是"公正"的翻译。在最初的规划阶段,他们无法准备本地化,无法等待以母语充分开发游戏。
如果您从最初的设计阶段开始遵循视频游戏国际化最佳实践,则本地化视频游戏将更容易。
什么是视频游戏国际化,为什么要遵循最佳实践?
视频游戏国际化是"准备"您的游戏进行本地化的过程。使游戏国际化将赋予它的代码、架构和用户界面以多种语言处理和呈现游戏内容的能力。
视频游戏国际化的主要目的是消除代码库中不同于"区域设置"的任何组件。
玩家希望本地化的用户界面与原始用户界面完全一样具有交互性,游戏也一样吸引人。为了实现相同的互动和引人入胜的体验,游戏程序员应在游戏设计和开发的初始阶段采用最佳实践。
视频游戏国际化的最佳实践是什么?
如果您是一名游戏开发人员,您从事设计工作,最好了解视频游戏国际化最佳实践。您应该采用推荐的视频游戏开发方法。视频游戏国际化最佳实践分为两类:
- 本地化友好架构:处理文件结构、组织资产、字符编码、内存问题、命名约定
- 本地化友好编程:处理推荐给开发人员的编程实践(UI、区域设置、文本)
本文介绍建议的最佳实践 本地化友好的架构.编程方法的视频游戏国际化做法值得在单独的职位上充分关注。
本地化友好架构
设计一个本地化友好的结构将有助于您的游戏轻松、快速和准确地进行本地化。为了让您的游戏架构本地化友好,您应该将您的:
- 文件结构
- 游戏资产
- 文本资源
- 艺术资产
- 画音
- 记忆
- 命名约定
1. 文件结构国际化
标准做法是从游戏代码外部化所有可本地化的游戏资产,并将其组织在单独的特定于语言的文件夹中。这样做将能轻松地将可本地化的内容移交给 LSP(语言服务提供商),并且翻译后的资产可以轻松集成到您的游戏中。这是一个重要的视频游戏国际化实践,是简单但强大的。
此处的示例显示了一个示例目录结构,用于组织游戏代码和资产,以便为 游戏本地化.您的开发框架可能提供特定的视频游戏国际化目录结构。有关详细信息,请参阅他们的文档。
代码文件夹("游戏代码")包含所有代码文件,可以使用这些文件创建游戏的本地化主机。资产文件夹("游戏资产")包含要本地化的所有文本、艺术、音频、电影和其他资产。
2. 游戏资产国际化
文本资产、艺术资产和画外音是游戏的关键组成部分,应满足国际化要求。
2.1 文本资产国际化
游戏内文本和 UI 文本是主要的本地化目标。在理想情况下,应将不同文件中的所有可本地化文本(游戏文本、UI 文本、控制台错误消息等)外部化,并将其与实际游戏代码分开。您还应记住在集中位置组织 PC 版本的所有安装程序字符串。
使用外部字符串表存储可本地化的文本,便于组织和集成翻译。通过为每个字符串使用唯一的字符串标识,可以使在开发期间跟踪对字符串的更改变得更简单。
2.1.1 定义字符串表
最简单、最常见的方法是将所有文本存储在纯文本文件中(对于源语言)。此文本文件可以很容易地移交进行本地化,翻译后的版本可以集成到您的游戏的目标语言。如果使用纯文本文件,应坚持使用本地化友好编码,如 UTF-8 或类似内容。
示例文本文件
无论您如何存储字符串,您都会发现为每个文本指定唯一的字符串标识符并使用此字符串 ID 引用代码中的文本非常有用。
示例外部文本文件(包含名为"任务DD"的任务的所有原始文本)
en-US/文本/资产/任务DD/字符串.txt DDSTRING_T1 喜吉斯托!干好? DDSTRING_T2 是的,我没事。 DDSTRING_T3 再见!回头见。
此文件的示例日语(已翻译)版本
ja-JP/文本/资产/任务DD/字符串.txt DDSTRING _ T1 # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # DDSTRING_T2 [ ] DDSTRING _T3 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ __ __ __
2.1.2 已经开发您的游戏?
如果您已经开发您的游戏而不考虑本地化,那么使用一些工具从游戏文件中提取所有文本。将它们移动到字符串表,并分配每个"文本"与唯一的"标识符"。标识符将替换游戏代码中文本的每次出现。
2.1.3 您是否正在开发包含大量文本的游戏?
对于具有大量文本的游戏,如大型 RPG 游戏或冒险游戏,您可以考虑使用数据库。理想情况下,数据库应包含以下内容:
- Id
- 文本
- 备注(提供文本的上下文)
- 文本的顺序
- 最大字符串长度
- 所有文本的本地化条目(可用时)
2.1.4 在代码中使用字符串表
游戏引擎将字符串表加载到内存中。哈希表是常用的数据结构。如果要在 C# 中开发游戏,请使用 STL 地图容器。将字符串表封装到一个包含所有文本的类中,并定义接受标识符并返回已翻译文本的静态方法。
在下面的示例中, GameDDStringTable
是封装字符串表的类。API getDDString(StringID)
是调用并获取字符串 D 的本地化文本(在代码中使用之前)。
没有国际化的代码
DD 字符1。谈话(嗨吉斯托!做好事?); DD 字符2。谈话(是的,我很好)。 DD 字符3.谈话(再见!再见。
国际化代码
DD 字符1。谈话(游戏DDString表::getDDString("DDSTRING_T1"); DD 字符2。谈话(游戏DDString表::getDDString("DDSTRING_T2"); DD 字符3.谈话(游戏DDString表::getDDString("DDSTRING_T3");
2.1.5 保持可读性
外化所有游戏内文本的缺点之一是,在查看代码时,您会发现它已经失去了可读性。因此,进一步的脚本更改可能会变得有点困难。
例如, DDCHARACTER1.Talk(GameDDStringTable::getDDString("DDSTRING_T1"));
由于缺少字符所讲的实际文本,因此不可读。
一些游戏开发团队试图通过在代码中保留原始文本(并使用唯一的字符串 ID)来解决此问题。它们遵循预定义且明确的语法,如下例所示。
DD 字符1。谈话(游戏DDString表::getDDString("DDSTRING[T1]嗨吉斯托,你好吗? DD 字符2。谈话(游戏DDString表::getDDString("DDSTRING[T2]是的,我没事。 DD 字符3.谈话(游戏DDString表::getDDString("DDSTRING[T3]再见!再见。
在上面的示例中,脚本包括格式的文本和标识符
“STRING ID | original text”.
静态方法 getDDString()
将读取 ID(管道字符左侧),并返回已翻译的文本。如果找不到翻译的文本,它将返回原始文本(管道字符的右侧)。
此方法使脚本可读。此外,在没有任何字符串表的情况下,游戏不会失败运行,因为有一个选项可以退却。它将在管道字符的右侧显示原始文本。
2.1.4 翻译说明
如果希望进一步简化翻译过程,则应提供有关所有可本地化字符串的足够信息。您可以在外部字符串表中以注释的形式提供这些注释。您还可以将它们作为特定文档文件夹中的单独注释提供。这是一个高度推荐的视频游戏国际化的最佳实践。
备注帮助译员了解:
- 文本的顺序
- 游戏中文本的上下文
- 引擎仍将支持的字符串的最大长度(转换后)
- 游戏特有的任何其他字符串规则
视频游戏国际化 –文本资产的开发人员检查表
2.2 艺术品资产国际化
通过最小化艺术中显示的文本量,减少在艺术资产本地化上花费的时间。如果您在艺术中使用文本,请遵循以下最佳实践:
2.2.1 文本的单独图层
在图像文件中,在单独的图层中定义文本。这种分层艺术文件很容易本地化,因为您可以快速集成翻译。
2.2.2 以编程方式呈现文本(运行时)
另一种方法是使用字体(以编程方式)呈现图像中的文本。将显示在艺术资产中的所有文本外在一个单独的文本文件中,该文件可以轻松本地化。然后,游戏引擎可以提取适当的文本,并在运行时根据需要在图像上显示它们。
2.2.3 组织资产文件夹
您应该将所有可本地化的艺术资产放在适当的文件夹中,如前面各节所述。
2.2.4 翻译说明
与文本资产一样,包含翻译说明将非常有用。
视频游戏国际化 –艺术资产开发者核对表
2.3 国际化画音
游戏音频可以分为三个轨道,即语音(VO),音效和音乐。最好将所有 VO 轨道与其他两个轨道分开存储,因为这将实现简单的本地化。如果您逻辑地组织所有 VO 文件,您会发现将本地化的 VO 集成到您的游戏中非常简单。
一种方法是使用字符串标识符(为字符串表中的文本分配)命名 VO 声音文件。在上面的示例中,画外音文件可以命名为string_t1.mp3、string_t2.mp3和string_t3.mp3。 此方法的好处是,您可以编写代码,以便提取和播放字符串的画外音(显示在屏幕上)。
您的脚本是 VO 制作的基础。因此,您必须在游戏开发的早期完成脚本,并包含尽可能多的技术方面(例如:长度、单声道/立体声等),以及上下文的精确定义。
本地化供应商应该能够通过阅读脚本来了解您的故事如何流动。视频游戏国际化的画外音将有助于保持您的本地化游戏的原始风味。
子系统
如果可能,为您的游戏实施合适的子系统。您可以设计字幕与正在播放的 VO 文件的内容一起出现在屏幕上,或者用字幕替换 VO 录制。您应该记住在可本地化的文本资源中包含所有字幕文本(并确保跟踪它们以进行翻译)。
视频游戏国际化 –开发者画音表
3. 国际化记忆
加载字符串表文件时,可以将所有文本保留在内存中,因为对于大多数游戏,这平均不应超过一个或两个 MB。如果目标平台的内存有限,则更有可能遇到内存问题。在这种情况下,您可以根据需要加载和卸载游戏的每个级别的特定文本集,等等。
如果您正在开发英语游戏,并且本地化目标语言是日语或其他亚洲语言,您可能会发现很难将其字体放入内存中。可以通过根据需要将游戏特定部分中显示的字形加载到内存中来解决此问题。
如果您正在用亚洲语言(使用双字节字符集)开发游戏,您会发现,对于英语和少数其他欧洲语言,字符串可能会占用更多的内存。
例如,英语使用的字符比日语多 1.5 个字符,德语使用的是日语字母的两倍。为了克服这些问题并避免内存溢出,最好坚持将欧洲字符存储为单个字节的编码(如 UTF-8)。
这种视频游戏国际化的内存最佳实践将确保您的游戏在所有语言中表现良好。
4. 命名公约
应以便于解释它们所代表的语言/区域的方式命名所有本地化特定文件夹和文件。语言也有基于区域的变体。因此,最好将语言的 2 个字母代码与国家/地区的 2 个字母代码合并。示例名称为en-US(美国英语)、ja-JP(日语)、zh-CN(简体中文)、zh-TW(繁体中文)等。
遵循ISO 标准,在全球得到广泛认可,这是一种好的做法。
如果按逻辑命名文件的内容,以便名称描述任务、字符等,则很容易理解这些文件的内容。示例:UI.txt、任务1.txt、任务2.txt等。
上述所有视频游戏国际化架构最佳实践旨在帮助您设计易于本地化的游戏。游戏编程的国际化最佳实践对于实现本地化目标同样是必要的。
如果您在体系结构的早期阶段为本地化奠定基础,您会发现本地化并不一定困难。您的游戏将同样参与所有本地化版本,玩家将无法判断它不是最初为他们的语言开发的。
需要帮助您实现视频游戏的国际化或本地化?为什么不今天联系我们免费报价?