铁血丹心

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

[lua复刻] ubuntu移植黑山群侠传

[复制链接]
 楼主| 发表于 2024-7-12 22:57 | 显示全部楼层 |阅读模式

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

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

x
1. bass库
```bash
# open "https://www.un4seen.com/"
# 找到bass库和bassmidi扩展下载linux版本
```
2. lua库
```bash
# 只能安装lua5.2版本
sudo apt install liblua5.2-dev
```

3. sdl2库
```bash
sudo apt install libsdl2-dev libsdl2-ttf-dev libsdl2-image-dev
```

4. minizip库
```bash
sudo apt install libminizip-dev
```

5. tinyPot库

```bash
# 这个库是最麻烦的先下载源码
git clone https://gitee.com/scarsty/bigpot.git
# 要编译这个源码还需要安装几个依赖

# sdl2上面已经安装了

# ass库
sudo apt install libass-dev

# iconv库
# 从https://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.17.tar.gz下载
tar zxvf libiconv-1.17.tar.gz
cd libiconv-1.17
./configure --prefix=/usr/local
make
make install

```
6. tinypot依赖的ffmpeg安装
```bash
# ffmpeg库需要3.0版本以下,不然会不兼容
# 到https://launchpadet/ubuntu/+source/ffmpeg下载2.8版本库,我选择的2.8.6版本2.8.17, 页面最下面那个7:2.8.17-0ubuntu0.1
# 试了下用deb包安装,会要求很多依赖,还是源码安装方便些
# 下拉列表点开,下载ffmpeg_2.8.17.orig.tar.xz,这个文件就是ffmpeg源码
xz -d ffmpeg_2.8.17.orig.tar.xz
tar xvf xz -d ffmpeg_2.8.17.orig.tar
cd ffmpeg_2.8.17.orig
cd ffmpeg-2.8.17/
# 源码的有个文件中的汇编语法有问题需要更改一下
vi libavcodec/x86/mathops.h
# 第一个函数和最后二个函数改成如下样子
static av_always_inline av_const int MULL(int a, int b, unsigned shi  ft)
{
    int rt, dummy;
    __asm__ (
        "imull %3               \n\t"
        "shrdl %4, %%edx, %%eax \n\t"
        :"=a"(rt), "=d"(dummy)
        //:"a"(a), "rm"(b), "ci"((uint8_t)shift)
        :"a"(a), "rm"(b), "c"((uint8_t)shift)
    );
    return rt;
}

#define NEG_SSR32 NEG_SSR32
static inline  int32_t NEG_SSR32( int32_t a, int8_t s){
    __asm__ ("sarl %1, %0\n\t"
         : "+r" (a)
         //: "ic" ((uint8_t)(-s))
         : "c" ((uint8_t)(-s))
    );
    return a;
}

#define NEG_USR32 NEG_USR32
static inline uint32_t NEG_USR32(uint32_t a, int8_t s){
    __asm__ ("shrl %1, %0\n\t"
         : "+r" (a)
         //: "ic" ((uint8_t)(-s))
         : "c" ((uint8_t)(-s))
    );
    return a;
}

# 安装ffmpeg依赖
sudo apt install libx264-dev libx265-dev libfdk-aac-dev yasm
# 配置安装选项
./configure --prefix=/usr/local/ffmpeg --enable-shared --enable-gpl --enable-nonfree --enable-ffplay
make -j4
sudo make install
# 安装完成后可以在/usr/local/ffmpeg/下面看到bin,include,lib,share四个目录
```

7. tinyPot库编译

```bash
# 第5步已经下载了tinyPot,如果还没有克隆使用下面命令克隆
git clone https://gitee.com/scarsty/bigpot.git
cd bigpot
cd src
vi CMakeLists.txt
# 第8行和第9行加入iconv和ffmpeg库的头文件和库文件位置
include_directories(../include . ./others /usr/local/ffmpeg/include /usr/local/include)
link_directories(. ../lib /usr/local/ffmpeg/lib /usr/local/lib)
# 最后加两行编译生成动态和静态库
ADD_LIBRARY(tinyPot SHARED ${SRC_LIST})
ADD_LIBRARY(tinyPotStatic STATIC ${SRC_LIST})

8. 开始编译
mkdir build
cd build
cmake ..
make -j8
# 编译完成后就会生成3个重要文件tinypot, libtinyPotStatic.a, libtinyPot.so。
# 第一个是个简单的播放器,可以运行后将播放的文件拖到上面就能播放了,鼠标滚动可以调节音量,左右按键可以快进和后退
# 后面两个就是生成的静态和动态库了,可以用来编译游戏的底层程序
```

9. 编译黑山群侠传

```bash
# 改下源文件中的配置文件路径
vi src/jymain.cpp
#ifdef _WIN32
char* JY_CurrentPath = "./";
#else
char* JY_CurrentPath = "./";
#endif

# 在jysdl-bh-master目录下新建一个library目录
mkdir library
# 新建bass和tinyPot目录
cd library
mkdir bass
mkdir tinyPot
cd bass
mkdir inc
mkdir lib
cd ../
cd tinyPot
mkdir inc
mkdir lib
cd ..
cd ..
# 新建一个编译脚本
vi CMakeLists.txt

project(黑山群侠传)
cmake_minimum_required(VERSION 2.6)

set(CMAKE_VERBOSE_MAKEFILE on)
set(CMAKE_CXX_COMPILER $ENV{CXX})
set(CMAKE_CXX_FLAGS "-O3 -std=c++11 -pthread")

include_directories(/home/xxx/repo/JYQXZ/jysdl-bh-master/library/bass/inc /xxx/dawen/repo/JYQXZ/jysdl-bh-master/library/tinyPot/inc /usr/include/lua5.2/ /usr/include/minizip/ /usr/include/SDL2)
link_directories(/home/xxx/repo/JYQXZ/jysdl-bh-master/library/bass/lib /home/xxx/repo/JYQXZ/jysdl-bh-master/library/tinyPot/lib /usr/lib/x86_64-linux-gnu)

aux_source_directory(./src SRC_LIST)
#aux_source_directory(./hash OTHER_SRC_LIST1)
#aux_source_directory(./tinyxml2 OTHER_SRC_LIST2)
#list(APPEND SRC_LIST ${OTHER_SRC_LIST1} ${OTHER_SRC_LIST2})

set(LINK_LIBRARIES iconv SDL2 SDL2_ttf SDL2_image SDL2main lua5.2 bass bassmidi tinyPot minizip)

add_executable(黑山群侠传 ${SRC_LIST})
target_link_libraries(黑山群侠传 ${LINK_LIBRARIES})

# 编译
mkdir build
cd build
cmake ..
make -j4

# src/luafun.cpp编译时会提示没有minishared.h头文件,直接注释掉就可以了。还有一个get_file_date函数没有定义,也直接注释掉。
```
最后将生成的黑山群侠传复制到黑山群侠传的游戏目录。打开编译生成的黑山群侠传就可以进入游戏了。

10. 黑山群侠传文件重命名

```bash
# 进入黑山群侠传游戏目录
sudo apt install rename
# 在游戏主目录下运行,将DATA,FONT,PIC,SCRIPT,SOUND都转换为小写字母
rename -f 'y/A-Z/a-z/' *
cd data
rename -f 'y/A-Z/a-z/' *
cd fight
rename -f 'y/A-Z/a-z/' *
cd ../pic
rename -f 'y/A-Z/a-z/' *
cd ../sound
rename -f 'y/A-Z/a-z/' *

# 最后再改下eft.idx和eft.grp设置
cd script
vi jyconst.lua
# CC.EFTFile = {CONFIG.DataPath .. "Eft.idx", CONFIG.DataPath .. "Eft.grp"}改为小写
CC.EFTFile = {CONFIG.DataPath .. "eft.idx", CONFIG.DataPath .. "eft.grp"}
```
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
发表于 2024-7-14 00:22 | 显示全部楼层
tinypot在github上有较新的
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
发表于 2024-8-9 15:56 | 显示全部楼层
考虑在其他linux系统运行的话,简易放弃bass和tinypot,改用sdl2-mixer来播放音频。这样其他人使用的时候只需要安装sdl2和lua就可以运行了。bass不开源,自己搞还好,给别人玩太麻烦。
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。

本版积分规则

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

GMT+8, 2024-11-15 08:59

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

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