仙剑奇侠传这个古老的dos游戏相信大家都玩过,我这里要说的是一个使用 SDL 函式库重新编写的经典中文 RPG 《仙剑奇侠传》,可在大多数主流操作系统 (包括 Windows, GNU/Linux, Mac OS X 等等) 及一些嵌入式平台上执行。
注意,这是基于SDL的linux游戏,它的可执行文件是重新编译的linux程序,仅仅是需要一些原游戏的数据资源而已,跟wine的windows游戏不一样,不是执行原游戏的exe文件,该exe文件完全可以删掉。
本文地址:http://hi.baidu.com/qileilu/item/98177e770e2b2d3e70442313
一、什么是SDL
SDL(Simple DirectMedia Layer)是一套开放源代码的跨平台多媒体开发库,使用C语言写成。SDL提供了数种控制图像、声音、输出入的函数,让开发者只要用相同或是相似的代码就可以开发出跨多个平台(Linux、Windows、Mac OS X等)的应用软件。目前SDL多用于开发游戏、模拟器、媒体播放器等多媒体应用领域。
百度百科:http://baike.baidu.com/view/8348.htm
维基百科:http://zh.wikipedia.org/wiki/SDL
二、SDLPAL——基于SDL的仙剑奇侠传
项目主页:http://sdlpal.codeplex.com/
手动安装方法:
1.下载最新的项目源代码:http://sdlpal.codeplex.com/SourceControl/changeset/view/84509
最新版本84509,更新日期是2013.1.16 11:28 AM
2.编译:
首先需要SDL开发文件已安装,在archlinux下运行诸如:
sudo pacman -S sdl
的命令安装。
进入源代码目录,运行命令
make
将会在源代码的顶层目录生成文件名“sdlpal”文件。
(也可以不编译,直接下载一个编译好的sdlpal,只是版本比较老:http://sdlpal.codeplex.com/releases/view/8525)
注:默认的设置比原游戏版本难度稍高,如果要保持原有难度,需要修改源文件中的common.h,去掉下面一行的注释:
//#define PAL_CLASSIC 1
3.复制游戏数据:
由于版权问题运行游戏所需的数据文件不包含在源代码里,您必须从原来的正版CD中获取。
(找不到的话下面我做的安装包中有。)
把原来的CD上的所有文件复制到一个目录,然后复制SDLPAL到该目录,并设为可执行。
需要注意的是GNU / Linux下的数据文件的文件名应该是小写(或其他类UNIX操作系统)。
4.运行游戏:
在游戏目录中运行命令
./sdlpal
即可。
三、制作sdlpal的linux安装包
经上述步骤,已经可以成功运行基于SDL的linux版《仙剑奇侠传》了,为了便于流传有必要做个安装包。
安装包所需内容如下:
1.全部程序文件,即上面游戏文件夹,设放于:/opt/pal
其中仅设置sdlpal为可执行。
2.可执行文件:/usr/local/bin/sdlpal,内容如下:
#!/bin/sh
cd /opt/pal && ./sdlpal
3.图标文件:/usr/share/pixmaps/sdlpal.xpm
4.启动器文件:/usr/share/applications/sdlpal.desktop
[Desktop Entry]
Name=sdlpal
Version=r84509
Exec=sdlpal
Comment=An SDL-based reimplemention of the classic Chinese-language RPG "Xian Jian Qi Xia Zhuan"
Icon=/usr/share/pixmaps/sdlpal.xpm
Type=Application
Terminal=false
StartupNotify=true
Encoding=UTF-8
Categories=Game;StrategyGame;
Name[zh_CN]=仙剑奇侠传
Comment[zh_CN]=基于SDL重制的经典中文角色扮演游戏——仙剑奇侠传
安装包制作,以archlinux的xz包为例:
1.把上诉所有文件按目录打包成:data.tar.gz,放于:~/temp/src中
2.在~/temp中编写PKGBUILD,如下:
pkgname=sdlpal
pkgver=84509
pkgrel=1
arch=(i686)
pkgdesc="SDL-based Xian Jian Qi Xia Zhuan for Linux"
url="http://sdlpal.codeplex.com/"
_arch=i386
license=('GPL')
depends=('sdl')
build() {
msg2 "Extracting files..."
cd "$srcdir"
tar xf data.tar.gz -C $pkgdir
}
3.用makepkg来编译和创建可以用 pacman(Arch Linux 的包管理器)安装的软件包。
$ makepkg
==> 正在创建软件包:sdlpal 84509-1 (2013年 02月 25日 星期一 00:23:37 CST)
==> 正在检查运行时依赖关系...
==> 正在检查编译时依赖关系
==> 获取源代码...
==> 解压缩源码...
==> 正在进入 fakeroot 环境...
==> 正在开始 build()...
-> Extracting files...
==> 正在清理安装...
-> 正在清除不打算要的文件...
-> 正在压缩 man 及 info 文档...
-> 正在从二进制文件和库中清除不需要的系统符号...
==> 正在创建软件包...
-> 正在生成 .PKGINFO 文件...
-> 正在压缩软件包...
==> 正在离开 fakeroot 环境。
==> 完成创建:sdlpal 84509-1 (2013年 02月 25日 星期一 00:24:14 CST)
将会生成安装包:sdlpal-84509-1-i686.pkg.tar.xz
到此,安装包制作完成,我在百度网盘做个共享供大家下载:
http://pan.baidu.com/share/link?shareid … 1946434265
安装与卸载:
安装:
sudo pacman -U sdlpal-84509-1-i686.pkg.tar.xz
卸载
sudo pacman -Rsn sdlpal
这里都是以archlinux为例的,ubuntu的包看下面。
四、ubuntu的deb包
deb包有人做好了,帖子详见:http://forum.ubuntu.com.cn/viewtopic.php?f=34&t=400602
下载地址:http://pan.baidu.com/share/link?shareid=268651&uk=939986085
只是这个包有点小瑕疵:
1.用的是2011年8月的老版本:sdlpal-linux-gnu-x86-r69255
2.包中所有文件都是可执行的!!!!!!!!!!!!!
最后,祝大家玩得开心!
最近编辑记录 qileilu (2013-02-25 22:12:22)
离线
干嘛放网盘啊,放社区源吧 ^_^
离线
干嘛放网盘啊,放社区源吧 ^_^
仙子,教我,我不会放哦,请给个指导链接。
离线
百合仙子 说:干嘛放网盘啊,放社区源吧 ^_^
仙子,教我,我不会放哦,请给个指导链接。
离线
x86_64上編譯的表示可以運行……(雖然不知道會不會需要另外依賴什麼)
pkgbuild改改如何?……
知識很重要,而相當的運用能力更重要。
离线
没想到在仙剑的地方也能看到百合仙子
离线
我运行了 pacman -U sdlpal-84509-1-i686.pkg.tar.xz
他说:
无法准备事物处理(无效的软件包架构)
离线
我运行了 pacman -U sdlpal-84509-1-i686.pkg.tar.xz
他说:
无法准备事物处理(无效的软件包架构)
首先欢迎 Mosalut 回来,好久不见 :-)
软件包架构无效,你用的是 64 位系统的话,应该安装 sdlpal-84509-1-x86_64.pkg.tar.xz
离线
哦 我看看是不是这个 谢谢你欢迎我
离线
但是他这里好像就给了 sdlpal-84509-1-i686.pkg.tar.xz的下载地址
离线
哈哈哈 原来是改那个INFO文件 我弄好啦 谢谢
离线
明明有sdlpal 但是总是说sdlpal不存在 我到目录下./sdlpal也不行 ls -la却在
离线
明明有sdlpal 但是总是说sdlpal不存在 我到目录下./sdlpal也不行 ls -la却在
file sdlpal 的结果是?
PS: 百合仙子无处不在喵~
离线
file ./sdlpal的结果是
./sdlpal: POSIX shell script, ASCII text executable
但是很奇怪 你看我打命令时报的错
[mosalut@MOSALUT ~]$ sdlpal
/usr/local/bin/sdlpal:行2: ./sdlpal: 没有那个文件或目录
他在第二行自己引用自己 第一次打命令的时候找到了 然后引用自己又找不到了 不知到为什么
PS:你也喜欢喵嘛 我的中文名字叫做小耳朵猫 所以我才叫Mosalut = 猫salut
离线
file ./sdlpal的结果是
./sdlpal: POSIX shell script, ASCII text executable但是很奇怪 你看我打命令时报的错
[mosalut@MOSALUT ~]$ sdlpal
/usr/local/bin/sdlpal:行2: ./sdlpal: 没有那个文件或目录
他在第二行自己引用自己 第一次打命令的时候找到了 然后引用自己又找不到了 不知到为什么
PS:你也喜欢喵嘛 我的中文名字叫做小耳朵猫 所以我才叫Mosalut = 猫salut
它第一行干什么了?是不是要 cd 到脚本所在的目录呢?
PS: 原来你是猫salut呀喵~
PPS: 喵好像是因某人 而起的习惯。现人已离去,习惯仍在。
离线