重新编译了一下spring

看样子这个引擎不支持显示汉字,可惜我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文档

贴个链接,方便查找
http://taclub.net/taclub/newTa/viewthread.php?tid=4401

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还可以看看

对于菜单的汉化没兴趣,但游戏内的聊天频道如果能打中文就好了