3DMGAME 3DM首页 新闻中心 前瞻 | 评测 游戏库 热门 | 最新 攻略中心 攻略 | 秘籍 下载中心 游戏 | 汉化 购买正版 论坛

注册 登录

QQ登录

只需一步,快速开始

查看: 6265|回复: 51
打印 上一主题 下一主题

[讨论] [简单的技术分析]关于游戏无中文

  [复制链接]

15

主题

646

帖子

569

积分

高级玩家

Rank: 4

贡献度
13
金元
5167
积分
569
精华
0
注册时间
2010-7-26
跳转到指定楼层
主题
发表于 2011-7-31 16:35 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 xlfdll 于 2011-7-31 18:34 编辑

我也来这里瞎扯两句

看到这里的朋友都在说这个游戏没有中文,再看游戏截图,我就有点怀疑这游戏是用XNA写的

结果下下来一看,Windows Installer的单MSI安装界面,并且需要XNA Framework 3.1,果然是用XNA做的!

装完之后:



Content目录,和相应的类库,确认是XNA无误

——————

XNA游戏默认支持的只有部分ASCII字符,以前写自己的XNA游戏的时候,为了让它支持中文,也是费了一番功夫
Correction: 于是楼下有人对我这句话产生误解了——这里的意思是指默认不支持中文字符直接显示,并不是不支持中文字体

Add: 如果你新建一个XNA 3.1的Windows游戏工程,默认情况下,Content文件夹里会有一个扩展名为.spritefont的文件,它指定了游戏所用的字符

这个东西是一个XML文件:



图中的CharacterRegions就用来划定游戏所使用的字符范围。可以看到Start和End是从32到126,这是属于ASCII码的字符,26个英文字母的大小写、数字和符号。下述的第一种方法就是改写此处,将数值扩大,从而包括全部汉字。
但是这样做会造成编译极度缓慢,因为编译器需要对每个范围内的字符都生成一个Font Sprite用来显示。
不要小看汉字只有几千到几万个,编译器需要生成符合各种缩放可能的字符显示,工作量会非常的大——我听说过有人用这个方法,一个游戏编译1个多小时的。

具体来说,如果想让它支持中文(或者其它默认不支持的字符集,比如日文),我所知道的有两个方法:
  • 改写配置,把支持字符的字符编码范围扩大——简单是简单,但是会造成编译时间超级长,汉字太多,需要一个一个进行处理(而且中文字符的范围不好确定,需要查阅Unicode标准)
  • 重写一个叫做Font Description Processor的类,让它能够在处理ASCII字符的同时,从某个地方读入需要显示的汉字字符(比如我从文本文件读,这个文本包含了所有在游戏里要显示的汉字)。这个方法虽然比第一个复杂,但是效果不错,只处理要显示的字符,而不是全部汉字(具体参考:http://msdn.microsoft.com/en-us/library/bb447751(v=XNAGameStudio.31).aspx



Correction: 类名叫做Font Description Processor,并不是说XNA自带的那个只支持英文字体。XNA支持的字符集是Unicode,但是默认情况下,它为了节省资源,将可显示字符的范围限制在ASCII当中了,所以我说它不能直接显示中文,需要将中文字符也进行处理才可以。

(我只是用XNA写小游戏玩的,估计其它高手应该有更好的方法……献丑了)

如果只是为了放Demo的话,使用英文可以省去这些步骤,毕竟Demo不是正式发布,只是用来演示的一个版本。它比较省时省事。

所以,虽然说起来感觉很搞笑,但是这个限制是XNA的,个人觉得程序员能做出来这东西已经让我服了……

P.S.
因为XNA游戏是.NET程序,所以用Reflector是可以反编译的……
当我反编译了一下之后,果然不出所料——代码被混淆了(混淆=把程序代码的所有名字打乱),不过还好只是部分混淆
支持中文字符的代码模式都是差不多的,如果只有繁体中文版的话,说不定是可以找出字符位置并直接改成简体的。

P.S.2
好吧,看起来好多人不是太了解XNA,我简单介绍一下好了

XNA实际上叫XNA Game Studio,是微软在.NET Framework上面搭建的一层游戏平台类库和与Visual Studio兼容的工具包。
出来的游戏需要安装运行库,即XNA Framework,版本与游戏开发时所用Game Studio的版本相同(这个游戏用的是3.1,开发平台估计是Visual Studio 2008)
(当然DirectX必不可少)

这个平台生产出来的游戏,原生支持Xbox 360手柄。并且只需要改动很小的一部分,就能在Windows,Xbox 360,Zune(微软的MP3播放器)和Windows Phone 7(需要Game Studio 4.0和Visual Studio 2010)之间移植。所以这游戏如果支持Xbox 360我不会感到意外。
(这一点有点像虚幻3引擎,Unreal 3)

.NET Framework本身使用的是Unicode(UTF-16)字符集,所以XNA理所当然是支持Unicode的。但是根据Unicode标准,支持并不等于就能显示,因为Unicode字符集只负责目标程序是否包含对这个字符的支持,而不管目标程序是如何将它渲染到屏幕上的。

因为使用的语言是C#和VB,用.NET Framework作为基础平台,如果是写.NET程序的程序员,写一个XNA游戏应该不算是什么难事。本身C#语言就挺好用。
(当然如果你是那种喜欢往底层调校的骨灰级游戏开发者,这个得单说了)
个人觉得,这个平台挺适合开发非性能攸关的游戏,比如类似Key社的CLANNAD那种言情类,或者是类似手机上的那些休闲小游戏。如果是开发大型FPS,我感觉它和Unreal 3比起来差太远了= =

现在微软把XNA平台的侧重点放在Windows Phone 7上面了,对于桌面PC的游戏开发貌似被淡化了不少。它使用的DirectX功能也仅仅是一个子集而不是全部。

P.S.3
对这游戏的个人看法:

两个字,加油!
我不怎么玩国产游戏的……但是作为一名程序员,我深知耍嘴皮子总是要比自己动手造东西要容易得多。
就像前两天我在某个Q群里提了一下我喜欢看名侦探柯南,立即就有觉得自己很能的人跳出来要对我争“柯南那个也算推理?!”……
(顺便在这里好好鄙视下……你(和谐)的又不是侦探也不是公安,你就知道什么是推理么?

上过学的都知道,老师经常会说一个词叫“眼高手低”。只有真正做过的人才会懂得这个词是什么意思。

还是那句话,自己造东西永远比你想象的要难得多。所以不管人家是炒作还是什么,人家总得要吃饭。
终归是花费了时间与成本出来的产品。

至于咱国为什么做不出像国外那样的大作什么的这类问题我就不胡扯了……

所以不管这游戏最后做得好不好,我都支持。

评分

4

查看全部评分

回复

使用道具 举报

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

本版积分规则

Archiver|手机版|3DMGAME ( 京ICP备14006952号-1  沪公网安备 31011202006753号

GMT+8, 2026-4-1 03:33 , Processed in 0.031726 second(s), 21 queries , Memcached On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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