看样子这个引擎不支持显示汉字,可惜我vc++搞得少,不然可以改改看。
哪位达人有时间搞一下 。
[ 本帖最后由 chaosch 于 2007-7-21 12:44 编辑 ]
看样子这个引擎不支持显示汉字,可惜我vc++搞得少,不然可以改改看。
哪位达人有时间搞一下 。
[ 本帖最后由 chaosch 于 2007-7-21 12:44 编辑 ]
在插死的支持下
我也成功编译了spring…
首先做的事情是在StdAfx里面添加
#define UNICODE
#include <tchar.h>
随后麻烦就来了
:Q :Q :Q
spring所用到的一些库是支持UNICODE自动转换的,而主程序代码里面很多很多地方却写死为 (char *),string…于是接口部分就开始编译报错
我估计他们最开始写程序的时候就没考虑宽字节情况,char应该都用TCHAR代替,字符串常量应该用_T来包装一下,因为TCHAR和_T宏都支持UNICODE自动编译转换。但是却没有这么做。
而还有麻烦就是string和wstring的转换。STL似乎没提供默认的转换接口。这个地方也是很不爽的。
另外还有若干未知错误,也跟直接转换有关…总之这个问题是很复杂的问题。
如果各位有什么相对较容易的方法,可以说说看。
[ 本帖最后由 sulbon 于 2007-7-22 01:01 编辑 ]
看看他的编码方式?
如果能改成UTF-8就好了
把这个问题反应给官方吧,看看他们怎么说
因为他们上个礼拜才知道有中国玩家,所以没考虑过双字节问题。
我对UTF很不了解
我觉得应该有这么一种方式来解决问题
所有游戏内部都用单字节,只需要在显示部分转为中文。我记得似乎有一种办法自动识别某个串是否为中文串。如果这样的话就相对简单一些了。游戏本身绝大部分保持不变,只在显示的地方加识别转换。
你搞搞看。
记得还有一种汉化方法,就是加外挂程序替换文字
我只知道java里编码问题很普遍,一般做国际化用properties文件
加外挂的方式效能太低,不爽。
官方论坛里关于这个编码问题貌似讨论的很热烈啊,好像插死的马甲也在发言哦
问题是
我现在还不知道显示文字的函数在哪个地方
不熟悉OGL
查sdk文档
sulbon,进展怎么样?
有个地方看不懂
贴出来看看阿
rts\rendering\glFont.cpp
之中
void CglFont::printstring(const unsigned char text)
这个函数作用是显示开始菜单的列表
底下的这个地方
glCallList((ch - charstart) + listbase);是显示单个英文字节
从这里可以看出是CglFont类先载入字体文件,然后每一个字符的显示对应一个整数index。
CglFont类载入字体文件的地方在构造函数里面:
CglFont::CglFont(int start, int end, const char fontfile)
这个函数底下的东西一点都看不懂
仅仅把载入的字体文件修改为中文文件肯定是不行的。而关于编码的转换,我感觉用现有的方法可能仍然无法解决。因为就在CglFont::CglFont(int start, int end, const char* fontfile)底下,里面似乎有一些东西写得比较死,从这几句话就看得出来
FT_Set_Char_Size(face, FONTSIZE << 6, FONTSIZE << 6, 96,96);
// clamp the char range
end = min(254, end);
start = max(32, start);
因为实在是不熟悉ogl和这么大的代码量,所以感觉无从下手。
努力啊,c偶懂得不多,java还可以看看
对于菜单的汉化没兴趣,但游戏内的聊天频道如果能打中文就好了