您尚未登录。

#1 2013-02-25 16:41:58

qileilu
会员
注册时间: 2012-10-12
帖子: 104

重温经典——基于SDL的《仙剑奇侠传》Linux版

仙剑奇侠传这个古老的dos游戏相信大家都玩过,我这里要说的是一个使用 SDL 函式库重新编写的经典中文 RPG 《仙剑奇侠传》,可在大多数主流操作系统 (包括 Windows, GNU/Linux, Mac OS X 等等) 及一些嵌入式平台上执行。
574e9258d109b3de06fbda40cdbf6c81800a4c55.jpg
注意,这是基于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

即可。
64380cd7912397ddfdfba32c5882b2b7d0a28713.jpg
d62a6059252dd42a6be13a83023b5bb5c9eab829.jpg


三、制作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)

离线

#2 2013-02-26 18:33:19

依云
会员
所在地: a.k.a. 百合仙子
注册时间: 2011-08-21
帖子: 8,384
个人网站

Re: 重温经典——基于SDL的《仙剑奇侠传》Linux版

干嘛放网盘啊,放社区源吧 ^_^

离线

#3 2013-02-26 22:43:49

qileilu
会员
注册时间: 2012-10-12
帖子: 104

Re: 重温经典——基于SDL的《仙剑奇侠传》Linux版

百合仙子 说:

干嘛放网盘啊,放社区源吧 ^_^

仙子,教我,我不会放哦,请给个指导链接。

离线

#4 2013-02-26 22:58:37

依云
会员
所在地: a.k.a. 百合仙子
注册时间: 2011-08-21
帖子: 8,384
个人网站

Re: 重温经典——基于SDL的《仙剑奇侠传》Linux版

qileilu 说:
百合仙子 说:

干嘛放网盘啊,放社区源吧 ^_^

仙子,教我,我不会放哦,请给个指导链接。

https://bbs.archlinuxcn.org/viewtopic.php?id=798

离线

#5 2013-03-14 23:13:26

renyuneyun
会员
所在地: 地球
注册时间: 2011-09-30
帖子: 132
个人网站

Re: 重温经典——基于SDL的《仙剑奇侠传》Linux版

x86_64上編譯的表示可以運行……(雖然不知道會不會需要另外依賴什麼)
pkgbuild改改如何?……


知識很重要,而相當的運用能力更重要。

离线

#6 2013-05-19 09:13:50

Mosalut
会员
注册时间: 2012-04-06
帖子: 53

Re: 重温经典——基于SDL的《仙剑奇侠传》Linux版

没想到在仙剑的地方也能看到百合仙子

离线

#7 2013-05-19 09:23:50

Mosalut
会员
注册时间: 2012-04-06
帖子: 53

Re: 重温经典——基于SDL的《仙剑奇侠传》Linux版

我运行了 pacman -U sdlpal-84509-1-i686.pkg.tar.xz
他说:
无法准备事物处理(无效的软件包架构)

离线

#8 2013-05-19 09:40:56

phoenixlzx
晩ご飯だよー
注册时间: 2011-08-19
帖子: 1,789
个人网站

Re: 重温经典——基于SDL的《仙剑奇侠传》Linux版

Mosalut 说:

我运行了 pacman -U sdlpal-84509-1-i686.pkg.tar.xz
他说:
无法准备事物处理(无效的软件包架构)

首先欢迎 Mosalut 回来,好久不见 :-)

软件包架构无效,你用的是 64 位系统的话,应该安装 sdlpal-84509-1-x86_64.pkg.tar.xz

离线

#9 2013-05-19 10:04:35

Mosalut
会员
注册时间: 2012-04-06
帖子: 53

Re: 重温经典——基于SDL的《仙剑奇侠传》Linux版

哦 我看看是不是这个 谢谢你欢迎我

离线

#10 2013-05-19 10:08:11

Mosalut
会员
注册时间: 2012-04-06
帖子: 53

Re: 重温经典——基于SDL的《仙剑奇侠传》Linux版

但是他这里好像就给了 sdlpal-84509-1-i686.pkg.tar.xz的下载地址

离线

#11 2013-05-19 10:36:50

Mosalut
会员
注册时间: 2012-04-06
帖子: 53

Re: 重温经典——基于SDL的《仙剑奇侠传》Linux版

哈哈哈 原来是改那个INFO文件 我弄好啦 谢谢

离线

#12 2013-05-19 10:51:32

Mosalut
会员
注册时间: 2012-04-06
帖子: 53

Re: 重温经典——基于SDL的《仙剑奇侠传》Linux版

明明有sdlpal 但是总是说sdlpal不存在 我到目录下./sdlpal也不行 ls -la却在

离线

#13 2013-05-19 14:33:35

依云
会员
所在地: a.k.a. 百合仙子
注册时间: 2011-08-21
帖子: 8,384
个人网站

Re: 重温经典——基于SDL的《仙剑奇侠传》Linux版

Mosalut 说:

明明有sdlpal 但是总是说sdlpal不存在 我到目录下./sdlpal也不行 ls -la却在

file sdlpal 的结果是?

PS: 百合仙子无处不在喵~

离线

#14 2013-05-20 08:17:56

Mosalut
会员
注册时间: 2012-04-06
帖子: 53

Re: 重温经典——基于SDL的《仙剑奇侠传》Linux版

file ./sdlpal的结果是
./sdlpal: POSIX shell script, ASCII text executable

但是很奇怪 你看我打命令时报的错
[mosalut@MOSALUT ~]$ sdlpal
/usr/local/bin/sdlpal:行2: ./sdlpal: 没有那个文件或目录
他在第二行自己引用自己 第一次打命令的时候找到了 然后引用自己又找不到了 不知到为什么
PS:你也喜欢喵嘛 我的中文名字叫做小耳朵猫 所以我才叫Mosalut = 猫salut

离线

#15 2013-05-20 10:56:45

依云
会员
所在地: a.k.a. 百合仙子
注册时间: 2011-08-21
帖子: 8,384
个人网站

Re: 重温经典——基于SDL的《仙剑奇侠传》Linux版

Mosalut 说:

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: 喵好像是因某人 而起的习惯。现人已离去,习惯仍在。

离线

页脚