铁血丹心

 找回密码
 我要成为铁血侠客
搜索
查看: 12320|回复: 10

[其他] Free Pascal + SDL 编译复刻版代码的介绍

[复制链接]
发表于 2012-12-19 23:25 | 显示全部楼层 |阅读模式

马上注册,结交更多侠友!

您需要 登录 才可以下载或查看,没有账号?我要成为铁血侠客

x
本帖最后由 weyl 于 2013-1-15 03:49 编辑

Free Pascal(或者Free Pascal Compiler,简称fpc)有什么好处吗?答案无非是:免费,跨平台,而且都还能用。我们以前一直使用的Delphi则是商业软件,价格不菲,最糟的是做这个的公司也不把它当回事,编译器很久不更新,跨平台也搞得马马虎虎。

自己编译的话,首先可以用svn导出最新的完整游戏和代码。
  1. svn checkout http://kys-jedisdl.googlecode.com/svn/trunk/
复制代码
一、在 Windows 中配置 Free Pascal + SDL 和编译前必须的修改

我的建议是下载 fpc 的一个 IDE 环境 Lazarus,为了使用SDL,需要win32版本。不要用64位版,因为目前(或者说我们正在用)的 SDL 是32位的。下载最新版本,安装即可。
那么如何配置 SDL 环境呢?这里不需要,因为fpc中已经包含了SDL所需的头文件。安装之后,如果需要转换已有的 delphi 工程到 Lazarus 工程,可以使用自带的转换工具,通常情况下问题不大。对比转换前后的文件可以知道,主要的改变是 uses 的部分单元名称变化,增加了 {$MODE DELPHI} 编译选项,源码的改动是很少的。

对于 Pascal 版的源码来说,有些地方是需要手动修改的,比较关键的是:

1. 转换中文编码时用到了两个 Windows 的 API:MultiByteToWideChar 和 WideCharToMultiByte,fpc是不支持的。但是fpc提供了更简单的几个转码函数,我们使用 CP950ToUTF8 和 UTF8ToCP950 来代替它们。

2. fpc 默认的 string 格式是 UTF8,而不是 Ansi,这样我们在处理中文输出的时候会出些问题。首先,包含有中文的代码文件应该是UTF8编码,并且最好没有BOM标记!SDL_ttf 提供了用于渲染 UTF8 和Unicode 字符的功能,在之前我们一直用的是 Unicode。这样我们有两个解决方案,一是改写字体输出的部分,改用 UTF8 编码,二是将所有程序中需要的中文字符全部转为 Unicode。
第一种方案改写的地方比较少,但是难度稍大,而且兼容性不太好,widestring 需全改为 string。第二种方案比较简单,但是工作量稍大一点。这里我们用第二种方法,就是将原来用来输出中文的 widestring 字串的赋值全部改写[有更简单的方法,见楼下]。例如,原来的
  1. str := ' 查看隊員狀態';
复制代码
改成:
  1. str := UTF8Decode(' 查看隊員狀態');
复制代码
MultiByteToWideChar 采用 UTF8Decode(CP950ToUTF8(str)) 代替,即将转得的 UTF8 字串再编码为 Unicode。
唯一需要将 Unicode 转为 BIG5 的是输入姓名的部分,因为接收到的字串是 UTF8,这里可以不再通过 Unicode。
以上提到的几个函数可以查看fpc的帮助。

处理了以上两点之后,一般来说就可以编译通过了,可能还需要一些小的微调就不提了。

编译之后,可能会发现生成的文件特别大,这是 fpc 相比 delphi 的一个弱点。我们打开工程-工程选项,在里面找到链接这一条,把第一个“为GDB产生调试信息”前面的钩去掉,并打上“从可执行程序中去除符号,减小程序体积”的钩,可以大大减小 exe 文件的体积。但是仍然会比 delphi 大很多。

3. 如果希望代码在 Windows 下面仍能够被 Delphi 编译,那么以上的部分均需要进行选择编译处理,可以用 fpc 这个记号。下面举几个例子:

所需库的处理:
  1.   {$IFDEF fpc}
  2.     LCLIntf, LCLType, LMessages, LConvEncoding,
  3.   {$ELSE}
  4.     Windows,
  5.   {$ENDIF}
复制代码
上面前3个库是代替 Delphi 的 Windows 库的,LConvEncoding 是用来转字符编码的。

转码部分:
  1. function Big5ToUnicode(str: PChar): widestring;
  2. var
  3.   len: integer;
  4. begin
  5.   {$IFDEF fpc}
  6.     result := UTF8Decode(CP950ToUTF8(str));
  7.   {$ELSE}
  8.     len := MultiByteToWideChar(950, 0, PChar(str), -1, nil, 0);
  9.     setlength(result, len - 1);
  10.     MultiByteToWideChar(950, 0, PChar(str), length(str), pwidechar(result), len + 1);
  11.   {$ENDIF}
  12.   result := ' ' + result;

  13. end;
复制代码
文件名和字串处理:
  1. {$IFDEF fpc}

  2. {$ELSE}
  3.   function FileExistsUTF8(filename: pchar): Boolean; overload;
  4.   function FileExistsUTF8(filename: string): Boolean; overload;
  5.   function UTF8Decode(str: widestring): widestring;
  6. {$ENDIF}
复制代码
  1. implementation

  2. {$IFDEF fpc}

  3. {$ELSE}
  4.   function FileExistsUTF8(filename: pchar): Boolean; overload;
  5.   begin
  6.     result := FileExists(filename);
  7.   end;

  8.   function FileExistsUTF8(filename: string): Boolean; overload;
  9.   begin
  10.     result := FileExists(filename);
  11.   end;

  12.   function UTF8Decode(str: widestring): widestring;
  13.   begin
  14.     result := str;
  15.   end;
  16. {$ENDIF}
复制代码
因为 Lazarus 把文件是否存在换成了 FileExistsUTF8,所以我们还把这个函数用原来的 FileExists 弄回来。
而 Delphi 里面一般是不需要将字串从 UTF8 编码成 Unicode 的,可以直接使用 widestring,这个函数实际是屏蔽了原来的。

需要注意的是,Delphi 可以指定源码文件的编码,但是 UTF8 则可能需要BOM,当使用 Delphi 编译的时候,可以自己多试几次,总有一个会是正确的。我们为了与 Unix 达到较好的兼容效果,约定使用 UTF8 编码源代码文件。

点评

KA
坐等填坑  发表于 2012-12-20 09:38
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
 楼主| 发表于 2012-12-20 00:11 | 显示全部楼层
本帖最后由 weyl 于 2013-4-11 20:40 编辑

二、fpc + SDL 在 Mac OSX 中的配置以及注意事项

这里我们介绍 Mac OSX 下的编译,由于这个系统默认没有提供 gcc,所以 Linux 的情况应该更简单,可以参考实现。显然,在 Windows 下面编译通过不等于在 Mac 下面也可以通过,尽管代码一般不用怎么修改,但 Mac 的调用库方式有相当大的区别,大部分的时间可能会耗在编译环境的配置上。

1、配置Lazarus 和 SDL

如果没有Xcode,首先在Appstore里面找到并安装。之后,在Xcode中安装命令行工具。
下载 Lazarus 的 Mac 版本安装,一般来说现在都用 intel 的 CPU,因此应当下载 i386 版。注意这个版本自带的编译器比较老,所以在需同时下载编译器和编译器源码。可以在 http://sourceforge.net/projects/ ... ac%20OS%20X%20i386/ 目录下面找最新版,全部下载,按照 fpc - fpcsrc - Lazarus 的顺序安装。

要编译 SDL 库的游戏源码,需要安装 SDL 的动态链接库文件,如果全部自己下载,手动安装也可以,但是库的依赖关系非常复杂,一般人很难搞清楚,所以我建议使用 Fink 或者 MacPort 自动安装。我是用的 Fink,安装 SDL,SDL-mixer,SDL-ttf,SDL-image 这几个基本上就可以了,需要其他的再说。注意虽然看似仅有4个库,但是实际上它们也依赖很多其他的库,而 Fink 和MacPort 之类的软件会分析出库的关系,自动都安装上。

然后在 Lazarus 的工程选项里面,要加上这些库所在的目录(-Fl),同时单元输出目录应该留为空,否则编译会出问题。

光是 uses sdl 还不能找到 sdl 其他库的位置,需要在工程文件的一开始添加上:
  1.   {$linklib SDL_ttf}
  2.   {$linklib SDL_image}
  3.   {$linklib SDL_mixer}
复制代码
如果有必要,加上
  1. {$linklib SDL}
复制代码


为了使 Windows 忽略这些选项,应当进行编译选择处理,我是这样写的:
  1. {$IFDEF UNIX}
  2.   {$linklib SDL_ttf}
  3.   {$linklib SDL_image}
  4.   {$linklib SDL_mixer}
  5. {$ELSE}

  6. {$ENDIF}
复制代码
2、程序文件目录
UNIX 系统中表示路径的是“/”而不是“\”,将所有打开文件所需的字串全部进行修改。Windows 中好像二者都可以接受。
修改了这些之后,如果库文件已经都安装好,应该就能够通过编译了。
需要注意,我们在 IDE 或者终端中运行程序的时候,所在的路径是程序文件的路径,而直接打开程序的时候却是默认的用户路径。这样会导致直接打开程序时很多文件找不到。所以我们需要对路径进行特殊处理。

增加一个全局字符串变量,并在程序最前初始化:
  1. AppPath: string;
  2. ......
  3. AppPath := ExtractFilePath(ParamStr(0));
复制代码
将全部涉及文件打开的部分修改,例如:
  1. font := TTF_OpenFont(pchar(AppPath + CHINESE_FONT), CHINESE_FONT_SIZE);
  2. idx := fileopen(AppPath + 'save/ranger.idx', fmopenread);  
复制代码
SDL 的函数需要加 pchar,fileopen 函数可以不加 pchar,自己多尝试。

这个方法在 Windows 中可能会失效,这是因为 fpc 对中文的支持有些问题,在 Windows 中含有中文路径的 fileopen 基本是无解的!但是我们可以利用 Windows 中程序的运行路径就是自身路径,所以我们可以这样初始化:

  1.   {$IFDEF UNIX}
  2.     AppPath := ExtractFilePath(ParamStr(0));
  3.   {$ELSE}
  4.     AppPath := '';
  5.   {$ENDIF}
复制代码
注意这样就不要在程序所需的资源中使用非英文数字的字符了。

3、数据存储顺序引发的问题
这时字体的颜色可能会不正确,这是因为 Unix 和  Windows 保存数据的顺序相反,TSDL_Color 类型强制转换得到的结果是相反的,需要在处理字体颜色的部分修改一下。具体可以参考我发布的代码。
这个游戏里面涉及存储顺序的部分仅此一项,特别地,如果设置游戏为全屏时,颜色可能还是不一样,这就需要多尝试几种组合。

4、SDL的问题
SDL_UpdateRect 在 Mac 系统中,更新范围是无效的!只要更新就是全屏,所以要对一些不更新全屏的地方进行特殊处理。
为了尽量少修改源码,我直接对 putpixel 子程进行了修改,即绘制的时候只绘制部分,这样刷新全屏才能得到与更新范围有效时相同的效果。

SDL-mixer 在 Unix 中不能用 .mp3 扩展名欺骗程序播放 mid 了,因此把音乐的扩展名均恢复为 mid。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?我要成为铁血侠客

x
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
 楼主| 发表于 2012-12-20 22:15 | 显示全部楼层
本帖最后由 weyl 于 2013-1-15 03:51 编辑

三、lua的嵌入方法

本来不做这个也无所谓,但是想到如今广泛利用这个嵌入的只有小猪3,这里不管猪3的移植就是泡影。本着对站长负责的态度,介绍一下如何在 lazarus 里面嵌入 lua。

这里介绍在 mac 下面如何嵌入 lua,Windows 下面简单得多,不需要自己编译库文件。
因为以前使用的 lua 是5.0 版,如今已经有了 5.2,那么我们用最新的,lua.pas 使用 lua-users wiki 中推荐的翻译版:
http://lua-users.org/wiki/LuaInFreePascal,其中有 lua52.pas 的下载。

lua 5.2 的库文件需要自行编译,从 lua 的网站下载源代码,按照说明文件进行编译。注意我们需要修改编译选项,将其编译至 i386 平台。打开 src 文件夹中的 Makefile 文件,找到 MYCFLAGS 和 MYLDFLAGS,改成:
  1. MYCFLAGS= -arch i386 -arch x86_64
  2. MYLDFLAGS= -arch i386 -arch x86_64
复制代码
然后用以下命令安装(需要 gcc,在 mac 中要安装 Xcode ):
  1. make macosx
  2. sudo make install
复制代码
这时生成了一个静态库文件 liblua.a,默认放在 /usr/local/lib/ 下面,编译器也需要加上这个路径来查找库文件。
因为 Fink 自动安装的 lua 版本太老,找不到对应的 pas 文件配合,所以使用最新的。如果用 Fink 安装过 lua 库就卸掉。

lpr 文件(相当于 dpr 文件)中需要加上:
  1. {$linklib lua}
复制代码
kys_script.pas 需要作少量的修改,因为有的函数名字变了。

之后把 lua52.pas 放到工程目录里面,修改其中的库文件选项:
  1. {$IFDEF MSWINDOWS}
  2.    LUA_LIB_NAME = 'lua52.dll';
  3. {$ELSE}
  4.   {$IFDEF DARWIN}
  5.     LUA_LIB_NAME = 'liblua.a';
  6.   {$ELSE}
  7.     LUA_LIB_NAME = 'liblua52.so';
  8.   {$ENDIF}
  9. {$ENDIF}
复制代码
以上配置在 Mac 下面就可以编译通过了。

在 Windows 下面,需要下载 lua52.dll (http://luabinaries.sourceforge.net/download.html),如果还要兼容 Delphi(我的建议是可以放弃对 Delphi 的兼容,fpc 的编译效率已经基本赶上 Delphi 了),需要自行补充几个类型关键字:
  1. {$IFDEF fpc}

  2. {$ELSE}
  3.   type
  4.     PtrInt = LongInt;
  5.     PtrUInt = LongWord;
  6.     PLongBool = ^LongBool;
  7. {$ENDIF}
复制代码
为了保证与 Delphi 的兼容性和大小写不敏感,lua 脚本统一规定使用 UTF8 编码,而使用字串时,无论在Delphi还是fpc中,最好都用UTF8Decode处理一下。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?我要成为铁血侠客

x

评分

参与人数 1声望 +15 收起 理由
winson7891 + 15 最大限度了

查看全部评分

【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
发表于 2012-12-21 16:30 | 显示全部楼层

强力技术帖!可以将前传移植多个平台上了。。
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
发表于 2012-12-22 15:18 | 显示全部楼层
坐等 苍炎,前传,金水安卓苹果版!!!膜拜ing!!
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
 楼主| 发表于 2012-12-27 18:08 | 显示全部楼层
本帖最后由 weyl 于 2012-12-28 13:58 编辑

四、在ubuntu下面编译的介绍

首先要有代码,现在可以用svn命令在你的本地生成一个副本:
  1. svn checkout http://kys-jedisdl.googlecode.com/svn/trunk/
复制代码


获取fpc和lazarus(其实应该是用命令行也可以编译,但是有IDE还是方便一些)。

用apt-get install就可以了,然后获取sdl的相关库libsdl, libsdl-image, libsdl-mixer, libsdl-ttf, libsmpeg,最好都是dev版。

如果报告名字不对不要怕,这几个库是不可能没有的,名字不对只是你输入的名字跟库里面的名字配合得不好,用google找正确的名字。

用apt-get install获取lua库,最好是5.2.1dev的。注意如果自动获取的低于5.2版,就只能自己编译了。lua库可能依赖另外两个库,稍微麻烦一些。

修改源程序的一部分,一般情况只需要修改kys_ori.lpr和lua52.pas开头的部分,其余部分不要动!

首先修改lua52.pas,开头有一部分预编译是指定lua库文件的名字的,修改为你的正确库文件名字,扩展名为so的,这个文件在ubuntu里面一般藏在/usr/lib/i386-linux-gnu/里面。

lpr文件一般不用修改,有可能开头几个编译指令在某些版本里面会链接不到正确的库,如果发生这种事,将其注释掉。

这时就一般来说运行就能成功了,如果发现无法出现标题的3个选项,是因为路径文件的大小写设置不正确,linux里面是严格区分大小写的。需要将代码里面的文件名和实际的文件名大小写改成一样的。这里我就不介绍怎么改了,一般可以搜到很多方法。
注意代码里面多数写的是小写,只有几个存档相关的是大小写混合,如何修改看你自己的意愿,一致就可以。

之后基本上就解决90%了。字体颜色可能有问题,这可能是不同的系统的存储顺序和screen的色彩格式好像都不一样,自己慢慢改(经过我试验,设置ColColor和画字体的部分与Windows一样即可,之前用unix标记mac系统,现可以改为darwin)。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?我要成为铁血侠客

x
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
 楼主| 发表于 2013-1-10 17:28 | 显示全部楼层
本帖最后由 weyl 于 2013-1-11 01:41 编辑

字串处理的另一个方法

fpc对widestring直接赋值的处理方法十分诡异,如果仅将显示文字的子程修改(如下),就可以不必在源码中添加很多UTF8Decode,可以省去很多麻烦。
但是追求完美的可以发现,实际上该子程接收到的参数并不总是Unicode,因此显得有些诡异。
  1. //显示unicode文字

  2. procedure DrawText(sur: PSDL_Surface; word: PUint16; x_pos, y_pos: integer; color: Uint32);
  3. var
  4.   dest: TSDL_Rect;
  5.   tempcolor: TSDL_Color;
  6.   len, i, k: integer;
  7.   pword: array[0..2] of Uint16;
  8.   word1: ansistring;
  9.   word2: widestring;
  10.   p1: pbyte;
  11.   p2: pbyte;
  12. begin
  13. {$IFDEF fpc}
  14.   //widestring在fpc中的默认赋值动作是将utf8码每字节间插入一个0.
  15.   //此处删除这些0, 同时统计这些0的数字, 若0的个数与字串长度相同,
  16.   //即认为是一个纯英文字串, 或者是一个直接赋值的widestring,
  17.   //需要再编码为Unicode, 否则即认为已经是Unicode
  18.   len := length(pwidechar(word));
  19.   setlength(word1, len * 2 + 1);
  20.   p1 := @word1[1];
  21.   p2 := pbyte(word);
  22.   k := 0;
  23.   for i := 0 to len - 1 do
  24.   begin
  25.     p1^ := p2^;
  26.     inc(p1);
  27.     inc(p2);
  28.     if p2^ = 0 then
  29.     begin
  30.       k := k + 1;
  31.       inc(p2);
  32.     end
  33.     else
  34.     begin
  35.       p1^ := p2^;
  36.       inc(p1);
  37.       inc(p2);
  38.     end;
  39.   end;
  40.   p1^ := 0;
  41.   if k >= len then
  42.   begin
  43.     word2 := UTF8Decode(word1);
  44.     word := @word2[1];
  45.   end;
  46. {$ENDIF}

  47.   pword[0] := 32;
  48.   pword[2] := 0;

  49.   dest.x := x_pos;

  50. //{$IFDEF darwin}
  51.   {tempcolor := TSDL_Color(color shr 8);
  52.   if Fullscreen <> 0 then
  53.   begin
  54.     tempcolor.b := (color shr 0) and $FF;
  55.     tempcolor.g := (color shr 8) and $FF;
  56.     tempcolor.r := (color shr 16) and $FF;
  57.     tempcolor.unused := 0;
  58.   end;}
  59. //{$ELSE}
  60.   tempcolor := TSDL_Color(color);
  61. //{$ENDIF}


  62.   while word^ > 0 do
  63.   begin
  64.     pword[1] := word^;
  65.     inc(word);
  66.     if pword[1] > 128 then
  67.     begin
  68.       text := TTF_RenderUnicode_blended(font, @pword[0], tempcolor);
  69.       //dest.x := x_pos;
  70.       dest.x := x_pos - 0;
  71.       dest.y := y_pos;
  72.       SDL_BlitSurface(text, nil, sur, @dest);
  73.       x_pos := x_pos + 20;
  74.     end
  75.     else
  76.     begin
  77.       //if pword[1] <> 20 then
  78.       begin
  79.         text := TTF_RenderUNICODE_blended(engfont, @pword[1], tempcolor);
  80.         //showmessage(inttostr(pword[1]));
  81.         dest.x := x_pos + 10;
  82.         dest.y := y_pos + 2;
  83.         SDL_BlitSurface(text, nil, sur, @dest);
  84.       end;
  85.       x_pos := x_pos + 10;
  86.     end;
  87.     SDL_FreeSurface(text);
  88.   end;

  89. end;
复制代码
另外,在Windows下面Delphi编译出的程序速度与Fpc总体相差不多,但是在某些地方的效率则远远胜出,比如一台配置一般的电脑,在黑屏的时候有很明显的区别。因此为了游戏的流畅程度,Delphi仍是Windows下的第一选择。
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
发表于 2013-1-14 20:08 | 显示全部楼层
回复 lsl_lsq 的帖子

求老大继续更新PSP版本。
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
发表于 2013-6-9 20:59 | 显示全部楼层
linux下移植时一定要把resource,save文件夹下的文件名改成小写字母,权限也要改,否则不能正确运行
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
发表于 2013-10-18 11:12 | 显示全部楼层
非常的不错,学习,谢谢了
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
发表于 2013-10-18 11:13 | 显示全部楼层
乾坤大挪移 发表于 2013-6-9 20:59
linux下移植时一定要把resource,save文件夹下的文件名改成小写字母,权限也要改,否则不能正确运行

嗯。Windows大小写不敏感,所以大小写认为是一个文件,但是linux等系统就不可以!
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。

本版积分规则

小黑屋|手机版|铁血丹心

GMT+8, 2024-11-23 16:12

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

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