MUD与Fluffos

开始玩MUD

在学校的时候,了解到有一种游戏叫泥巴,MUD。文本命令行游戏对网络带宽和速度要求低。而且能练习输入。

当时电脑少,没有几个地方的电脑能上网。还没有网吧一说,有计算机的地方叫计算机室,简称机房,用计算机叫上机。资源少,尤为珍贵,一般也不玩游戏,大多是编程和浏览网页。慢慢的周边有一些私人开的计算机游戏厅,在那里,一般是打游戏,看电影。常常打的是帝国时代,喊上几个同学,联网通宵达旦的玩,玩MUD的不多。

上班后,一个同事在公司内网搭了个MUD,中午和晚上,大家一起玩。才对MUD有了更多的了解,同时也学了一点MUDos的知识。接下来在宿舍也搭了MUD,同事们在玩星霸之余,也玩MUD。当时玩的是西游记这款MUD。

玩着玩着,大家又转到图象网游了,当时是网易的大话西游,MUD就放在一边了。

这些年,偶尔也玩一下MUD。

执着MUD

最近兴趣所致,又开始玩MUD。在网上一搜,还有不少的MUD,尤其是北大的侠客行,运行了这么多年还是很火的。
以前玩MUD,没有动手搭过MUD,这次自己动手搭MUD。

经过网络的一通搜索和学习,了解到现在驱动Mudlib的已经是Fluffos,MUDos由于x的原因已经不再维护了。Fluffos是基于MUDos继续发展的。自己搭MUD,用到Fluffos和Mudlib,在网上有这两个资源。下载下来,开始搭MUD。

Fluffos的编译

今年(2019)年初开始编译Fluffos。这个时间点比较好,这时候的Fluffos(v2019)能在cygwin和ubuntu下编译。到了十月份,Fluffos(v2019)不能在cygwin下编译。
年前Fluffos(后面没有说明都是v2019版),使用cmake编译,能在cygwin下编译;十月份后使用cargo编译,cygwin下没有找到怎么安装cargo,自己尝试编译cargo(rust),没有成功。
在ubuntu可以安装cargo,能编译Fluffos。

[20191120更新,Fluffos修改了编译模式,都改为cmake,可以在cygwin和ubuntu下编译]

由于Fluffos的编译方法的改变,花了不少时间折腾,一开始没有看Fluffos里的build.md(在doc目录里),继续使用cmake编译,遇到错误,以为是cygwin没有配置好,反复的卸载和安装。后来看了build.md,尝试使用cargo,发现cygwin没有cargo,又折腾cargo(rust),最终也没有成功。然后退回年前的Fluffos,发现cygwin的mysql改变了,由libmysqlclient改为libmariadbd,开始编译时找不到mysql。解决办法是把最新的Fluffos里的FindMySQL.cmake复制过来用,能成功编译Fluffos了,但是驱动Mudlib时,又遇到错误,发现是libcrypt的问题,这个lib的版本用2.0-1是好的,新的版本(似乎3xx)有错误。

经历了一番的操作,终于有可用的Fluffos。Fluffos的配置等等,没有遇到太多问题,如有问题,请自行网上搜索。
在ubuntu下,Fluffos编译比较顺利,但是没有试过在ubuntu下驱动mudlib。

Mudlib的驱动

有了Fluffos,就可以尝试驱动Mudlib。网上下载到的Mudlib都比较老(2010年前)。用Fluffos驱动或多或少都遇到问题。

总结一下:
1. include目录下的globals.h需要修改
在开头添加以下行
===
//fluffos use this
#define STATIC_FUNC_TAG private
#define STATIC_VAR_TAG nosave

#ifndef __SENSIBLE_MODIFIERS__
#define SAVE_EXTENSION __SAVE_EXTENSION__
#define save_binary
#pragma optimize

#define crypt oldcrypt
#define nosave static
#define protected static

#pragma save_binary
#else
#define SAVE_EXTENSION __SAVE_EXTENSION__
#define save_binary
#pragma optimize

#pragma save_binary

#define crypt oldcrypt
#define static nosave
#define private protected
#endif
===

2. 连接头文件的问题
有些文件使用 #include <xxx.h>,连接头文件。但是在(根目录下的)include目录里没有xxx.h,然而在这个文件自己所在的目录下有这个头文件。
解决办法是:
一是把xxx.h复制到include目录下(注意xxx.h需要唯一的,其他文件引用不对,可能引起其他问题)。二是修改引用方法,#include <xxx.h>改为#include "xxx.h"

3. 文件内容有问题
一是不同编码,ANSI编码或UTF-8编码
二是文件有错误字符
三是需要检查调用的变量类型一致,或者是否是0或者NULL

经过以上的努力,终于有一个可用的MUD(但是仍时不时的有错误爆出,需要一一去解决)

 

粤ICP备18155588号

粤公网安备44030002010547号