MUD 泥巴

Mudos[win] 迁移到 FluffOS 3.x[Linux] 编译、mudlib 修改过程 for CnetOS 7.x

FluffOS是在MUDOS基础上更新完成的。进行了许多新功能和bug修复。 针对LPC有很好的兼容性,如果你的MUD运行MUDOS V22+版本,可以很容易运行在fluffos上。
系统环境

CnetOS 7.x mini 最小化安装


安装 mysql-community-devel 需要先安装mysql的源

wget http://repo.mysql.com/mysql57-community-release-el7.rpm
sudo rpm -ivh mysql57-community-release-el7.rpm

安装编译环境

yum install zlib-devel pcre-devel bison gtest dos2unix unzip
yum install git gcc-c++ autoconf golang cmake
yum install mysql-community-devel pam-devel libevent-devel bison-devel
yum install openssl-devel jemalloc-devel libicu-devel gtest-devel

如果安装最新版本的编译环境请参考如下地址
《How to overcome “'aclocal-1.15' is missing on your system” warning when compiling?》

Git获取FluffOS最新源码

git clone https://github.com/fluffos/fluffos.git

这个是fluffos 3.o.x 设置好的 local_options 兼容旧 Mudlib ( 后面有时间再补充每条设置的说明 )

/*
 * local_options.h: compile-time configuration of the driver
 */

/****************************************************************************
 * EVERY time you change ANYTHING in this file, RECOMPILE from scratch.     *
 * (type "make clean" then "make" on a UNIX system) Failure to do so may    *
 * cause the driver to behave oddly.                                        *
 ****************************************************************************/

/* NOTES: Many of the configurable options are now set in the runtime config.
 * 
 * This file only contain a list of default settings, for quick diffing .
 * See detailed explaination from 'local_options.README'
 */

#ifndef _LOCAL_OPTIONS_H_
#define _LOCAL_OPTIONS_H_


#define DEBUGMALLOC
#define DEBUGMALLOC_EXTENSIONS
/****************************************************************************
 *                              COMPAT                                      *
 ****************************************************************************/
#undef NO_ADD_ACTION
#undef NO_SNOOP
#undef NO_ENVIRONMENT
#undef NO_WIZARDS
#undef NO_LIGHT
#undef NO_SHADOWS
#undef NO_RESETS
#undef NO_BUFFER_TYPE
#undef ED_INDENT_CASE
#undef ED_USE_TABS
#undef SNOOP_SHADOWED
#undef FLUSH_OUTPUT_IMMEDIATELY

#undef LAZY_RESETS
#undef RECEIVE_ED
#undef PRIVS
#undef USE_ICONV
#undef IPV6
#undef DTRACE
#undef CHECK_MEMORY
#undef HAS_STATUS_TYPE
#undef CAST_CALL_OTHERS
#undef NONINTERACTIVE_STDERR_WRITE 
#undef INTERACTIVE_CATCH_TELL
#undef CALL_OTHER_TYPE_CHECK
#undef CALL_OTHER_WARN
#undef WARN_TAB
#undef WOMBLES
#undef GET_CHAR_IS_BUFFERED

#define SANE_EXPLODE_STRING
#undef REVERSIBLE_EXPLODE_STRING
#define NO_ANSI
#define STRIP_BEFORE_PROCESS_INPUT 
#define OLD_TYPE_BEHAVIOR
#define OLD_RANGE_BEHAVIOR
#define STRING_STATS
#define ARRAY_STATS
#define LOG_CATCHES
#define ARGUMENTS_IN_TRACEBACK
#define LOCALS_IN_TRACEBACK
#define MUDLIB_ERROR_HANDLER
#define TRAP_CRASHES
#define THIS_PLAYER_IN_CALL_OUT
#define CALLOUT_HANDLES

#define RECEIVE_SNOOP
#define PROFILE_FUNCTIONS
#define CACHE_STATS

#define OLD_ED
#define ED_INDENT_SPACES 4
#define ED_TAB_WIDTH 8
#define RESTRICTED_ED
#define SENSIBLE_MODIFIERS
#define ARRAY_RESERVED_WORD
#define REF_RESERVED_WORD

#define COMPRESS_FUNCTION_TABLES

#define CALLOUT_CYCLE_SIZE 512 
#define LARGEST_PRINTABLE_STRING 16384
#define MESSAGE_BUFFER_SIZE 16384 
#define APPLY_CACHE_BITS 20 
#define COMMAND_BUF_SIZE 6000
#define CFG_COMPILER_STACK_SIZE 600
#define CFG_MAX_GLOBAL_VARIABLES 65536
#define SMALL_STRING_SIZE 300
#define LARGE_STRING_SIZE 3000
#define MAX_SAVE_SVALUE_DEPTH 100
#define CFG_MAX_LOCAL_VARIABLES 300
#define CFG_EVALUATOR_STACK_SIZE 6000
#define CFG_MAX_CALL_DEPTH 300
#define CFG_LIVING_HASH_SIZE 4096
#define HEARTBEAT_INTERVAL 2000000
/****************************************************************************
 *                           MISCELLANEOUS                                  *
 ****************************************************************************/
#define CUSTOM_CRYPT
#undef COMPAT_32
#define DEFAULT_PRAGMAS PRAGMA_SAVE_TYPES + PRAGMA_ERROR_CONTEXT + PRAGMA_OPTIMIZE 
#define SAVE_EXTENSION ".o"
/****************************************************************************
 *                              PACKAGES                                    *
 ****************************************************************************/
#define PACKAGE_OPS
#define PACKAGE_CORE

#define PACKAGE_CONTRIB
#define PACKAGE_DEVELOP
#define PACKAGE_MATH
#define PACKAGE_MATRIX
#define PACKAGE_MUDLIB_STATS
#define PACKAGE_SOCKETS
#undef PACKAGE_PARSER
#define PACKAGE_EXTERNAL

#define PACKAGE_DB
#ifdef PACKAGE_DB
#define USE_MYSQL 1
#undef USE_MSQL
#undef USE_POSTGRES
#undef USE_SQLITE3
#define DEFAULT_DB  USE_MYSQL
#endif

#define ALLOW_INHERIT_AFTER_FUNCTION
#define PACKAGE_ASYNC
#define PACKAGE_SHA1
#undef PACKAGE_CRYPTO
#define PACKAGE_TRIM
#define PACKAGE_PCRE
#undef PACKAGE_DWLIB

#define PACKAGE_UIDS
#ifdef PACKAGE_UIDS
#define AUTO_SETEUID
#define AUTO_TRUST_BACKBONE
#endif

#define HAVE_ZLIB
#define PACKAGE_COMPRESS
#define SAVE_GZ_EXTENSION ".o.gz"
#undef PACKAGE_THREAD

#endif/* _LOCAL_OPTIONS_H_ */

编译FluffOS过程

$ cd fluffos
$ ./build.FluffOS     #如果你编译环境缺少依赖包会在这个过程提醒通过 yum search xxx 查找安装再继续build
$ make                #上面build这一步通过这一步基本没什么问题很顺利
$ make install  

部署你的 FluffOS+MudLib
假设你的fluffos编译目录在 /home/fluffos/
假如你的mudlib运行目录在 /home/xxxmud/

/home/fluffos/src/   #编译成功后的驱动 
               |--- driver

/home/xxxmud/ #mud布署目录
           |------ bin/
           |		|-- driver      #刚编译好的驱动移到这里
           |		|-- config.ini  #mud配置文件 要参考/home/fluffos/src/Config.example 修改 
           |
           |------ mudlib/	    #把你的mudlib整个打包解压放到这里
                     |-- adm
                     |-- binaries
                     |--.............

有关mud配置文件 参考 /home/fluffos/src/Config.example 进行修改
下面放一个config.ini 样例
vi /home/xxxmud/bin/config.ini

###############################################################################
#              Customizable runtime config file for FluffOS                   #
###############################################################################
# NOTE: All paths specified here are relative to the mudlib directory except  #
#       for mudlib directory, and binary directory.                           #
# Lines beginning with a # or a newline are ignored.                          #
###############################################################################

# name of this mud
# should be changed prioir to the 'mud ip', otherwise it might yield strange
# results to either yourself or other users of this mudlib!
name : HY-JHFY 

# for machines with multiple IP addresses, this specifies which one to use.  this
# replaces the SERVER_IP compile-time define.
#mud ip : 255.255.255.255
mud ip : 0.0.0.0 

# the external ports we support
external_port_1 : telnet 1863
external_port_2 : telnet 1864

# absolute pathname of mudlib
mudlib directory : /home/hymud/Mudlib_hy

# absolute pathname of driver/config dir
binary directory : /home/hymud/bin

# ------------------------------------------------------------------------
#
# You shouldn't change anything below this point unless you know what
# you're changing.... =)
#

# debug.log and author/domain stats are stored here
log directory : /log

# the directories which are searched by #include <...>
# for multiple dirs, separate each path with a ':'
# see also 'master::get_include_path'
include directories : /include

# the file which defines the master object
master file : /adm/single/master

# the file where all global simulated efuns are defined.
simulated efun file : /adm/single/simul_efun

# file to swap out objects; not used if time to swap is 0
swap file : /adm/tmp/swapfile

# alternate debug.log file name (assumed to be in specified 'log directory')
debug log file : debug.log

# This is an include file which is automatically #include'd in all objects
global include file : "/include/globals.h"

# default no-matching-action message
default fail message : 什么?

# default message when error() occurs (optional)
default error message : [1;33m你发现事情不大对了但是又说不上来。[2;37;0m

# if an object is left alone for a certain time, then the
# function clean_up will be called. This function can do anything,
# like destructing the object. If the function isn't defined by the
# object, then nothing will happen.
# This time should be substantially longer than the swapping time.
time to clean up : 900

# How many seconds until an object is reset again.
# This value should be somewhere reasonable in between 'time to clean up' and
# 'time to swap'.
time to reset : 1800

# How long time until an unused object is swapped out.
# Machine with too many players and too little memory: 900 (15 minutes)
# Machine with few players and lot of memory: 10000
# Machine with infinite memory: 0 (never swap).
time to swap : 900

# Set the size of the compiler stack. This defines how complex expressions
# the compiler can parse.  (unused currently)
compiler stack size : 600

# Set the maximum stack size of the stack machine. This stack will also
# contain all local variables and arguments.
evaluator stack size : 6000

# Max inherit chain size
inherit chain size : 30

# Maximum amount of "eval cost" per thread - execution is halted when 
# it is exceeded.
maximum evaluation cost : 30000000

# Max number of local variables in a function.
maximum local variables : 20000

# Set the maximum call depth for functions.
maximum call depth : 15000

# This is the maximum array size allowed for one single array.
maximum array size : 25000

# This is the maximum allowed size of a variable of type 'buffer'.
maximum buffer size : 400000

# Max size for a mapping
maximum mapping size : 150000

# maximum length of a string variable
maximum string length : 320000

# Maximum number of bits in a bit field. They are stored in printable
# strings, 6 bits per byte.
maximum bits in a bitfield : 12000

# max number of bytes you allow to be read and written with read_bytes 
# and write_bytes
maximum byte transfer : 200000

# Max size of a file allowed to be read by 'read_file()'.
maximum read file size : 320000

# Set the size of the shared string hash table.  This number should a prime,
# probably between 1000 and 30000; if you set it to about 1/5 of the number
# of distinct strings you have, you will get a hit ratio (number of
# comparisons to find a string) very close to 1, as found strings are
# automatically moved to the head of a hash chain.  You will never need more,
# and you will still get good results with a smaller table.
hash table size : 30000

# Set this like you did with the strings; probably set to about 1/4 of the
# number of objects in a game, as the distribution of accesses to objects is
# somewhat more uniform than that of strings.
object table size : 15000

# There is a hash table for living objects, used by find_living().
# This must be one of 4, 16, 64, 256, 1024, 4096
living hash table size : 4096 

# Set the granularity of game-time (shortest time interval visible ingame)
gametick msec : 100

# Set heartbeat interval in milliseconds (ms).
heartbeat interval msec : 1000

# explode():
#
# The old behavior (#undef both of the below) strips any number of delimiters
# at the start of the string, and one at the end.  So explode("..x.y..z..",
# ".") gives ({ "x", "y", "", "z", "" })
#
# sane explode string strips off at most one leading delimiter, and still
# strips off one at the end, so the example above gives
# ({ "", "x", "y", "", "z", "" }).
#
# reversible explode string overrides SANE_EXPLODE_STRING, and makes it so
# that implode(explode(x, y), y) is always x; i.e. no delimiters are ever
# stripped.  So the example above gives
# ({ "", "", "x", "y", "", "z", "", "" }).
sane explode string : 1
reversible explode string : 0

#
sane sorting : 1

# Some versions of the editor built in indent function use tabs for
# indenting. This options turns on a warning message for files indented with
# tabs instead of spaces.
warn tab : 0

# Don't allow spaces between start/end of array/mapping/functional token
# chars so ({1,2,3}) still works, but ( { 1 , 2 , 3 } ) doesn't and
# ({ 1 , 2 , 3 }) does.
wombles : 0

# Enable type checking for call_other() (-> operator on objects)
call other type check : 0 

# Make it warning instead of errors
call other warn : 0

# If you set this, the driver doesn't do any handling of runtime errors,
# other than to turn the heartbeats of objects off.  Information about the
# error is passed in a mapping to the error_handler() function in the master
# object.  Whatever is returned is put in the debug.log.
#
# A good mudlib error handler is one of the best tools for tracking down
# errors.  Unfortunately, you need to have one.  Check the testsuite or other
# libs for an example.
mudlib error handler : 1

# Completely disable the periodic calling of reset()
no resets : 0

# If this option is set, an object will only have reset() called in it when
# it is touched via call_other() or move_object() (assuming enough time has
# passed since the last reset).  If it is unset, then reset() will be called
# as always (which guaranteed that reset would always be called at least
# once).  The advantage of lazy resets is that reset doesn't get called in an
# object that is touched once and never again (which can save memory since
# some objects won't get reloaded that otherwise would).
lazy resets : 0

#
randomized resets : 0

# Set if you wish to disallow users from typing in commands that contain ANSI
# escape sequences.  Setting NO_ANSI causes all escapes (ASCII 27) to be
# replaced with a space ' ' before the string is passed to the action
# routines added with add_action.
no ansi : 1

# 'strip before process input' allows the location where the stripping is
# done to be controlled.  If it is set, then process_input() doesn't see ANSI
# characters either; if it is unset ESC chars can be processed by
# process_input(), but are stripped before add_actions are called.  Note that
# if NO_ADD_ACTION is defined, then setting 'no ansi' without
# 'strip before process input' is the same as unsetting 'no ansi'.
#
# If you anticipate problems with users intentionally typing in ANSI codes to
# make your terminal flash, etc set this.
strip before process input : 1

# Set this if you wish this_player() to be usable from within call_out()
# callbacks.
this player in call_out : 1

# Set this to enable the trace() and traceprefix() efuns.  (keeping this
# unset will cause the driver to run faster).
trace : 1

# Set this to enable code tracing (the driver will print out the previous
# lines of code to an error) eval_instruction() runs about twice as fast when
# this is not set (for the most common eoperators).
trace code : 0 

# Set this if you want catch_tell called on interactives as well as NPCs.  If
# this is set, the user object will need a catch_tell(msg) method that calls
# receive(msg);
interactive catch tell : 0

# Set this if you want snoop text to be sent to the receive_snoop() function
# in the snooper object (instead of being sent directly via add_message()).
# This is useful if you want to build a smart client that does something
# different with snoop messages.
receive snoop : 1

# Set this if you want snoop to report what is sent to the player even in the
# event that the player's catch_tell() is shadowed and the player may not be
# seeing what is being sent.  Messages of this sort will be prefixed with $$.
snoop shadowed : 0

#
reverse defer : 0

# If set, the driver can take the argument '-C' which will give the driver an
# interactive console (you can type commands at the terminal.)  Backgrounding
# the driver will turn off the console, but sending signal SIGTTIN (kill -21)
# to the driver can turn it back on.  Typing 'help' will display commands
# available.  The intent is to allow the inspection of things that are
# difficult to inspect from inside the mud.
has console : 1

# If set, all writes/tells/etc to noninteractive objects will be written to
# stderr prefixed with a ']' (old behavior).
#
# Compat status: Easy to support, and also on the "It's a bug!  No, it's
# a feature!" religious war list.
noninteractive stderr write : 0

# Set this if you want FluffOS to call crash() in master.c and then shutdown
# when signals are received that would normally crash the driver.
trap crashes : 1 

# Reintroduces a bug in type-checking that effectively renders compile time
# type checking useless.  For backwards compatibility.
#
# Compat status: dealing with all the resulting compile errors can be a huge
# pain even if they are correct, and the impact on the code is small.
old type behavior : 0 

# Set this if you want negative indexes in string or buffer range values
# (i.e.  foo = x[-2..-1]; not lvalue for e.g. not x[-2..-1] = foo, the latter is always
# illegal) to mean counting from the end 
#
# Compat status: Not horribly difficult to replace reliance on this, but not
# trivial, and cannot be simulated.
old range behavior : 1
warn old range behavior : 0 

# supress warnings about unused arguments; only warn about unused local
# variables.  Makes older code (where argument names were required) compile
# more quietly.
supress argument warnings : 1

#
enable_commands call init : 1

#
sprintf add_justified ignore ANSI colors : 1

# Defines the number of bits to use in the call_other cache (in interpret.c).
# 
# Memory overhead is (1 << APPLY_CACHE_BITS)*16.
# [assuming 32 bit pointers and 16 bit shorts]
#
# ACB:     entries:     overhead:
#   6           64            1k
#   8          256            4k
#  10        1,024           16k
#  12        4,096           64k
#  14       16,384          256k
#  16       65,536            1M
#  20    1,048,576           16M
#  22    4,194,304           64M
apply cache bits : 22

#
call_out(0) next level : 5000

# maximum number of users in the game (unused currently)
maximum users : 1000

好了下面我们开始启动mud服务吧继续往下看介绍将mud加为centos服务自动启动。

[root@mud]# /home/hymud/bin/driver /home/hymud/bin/config.conf&
在部署过程中会遇到的一些问题

1、Linux *.h *.c 乱码及回车符号问题
由于大多人编码在windows下编码在Linux上需要转换一下或者通过ftp上传时会可自动转码
使用下面的命令进行转码操作

[root@mud mud]# cd /home/xxxmud
[root@mud mud]# find . -name "*.h" -exec dos2unix {} \;
[root@mud mud]# find . -name "*.c" -exec dos2unix {} \;
[root@mud mud]# find . -name "*.o" -exec dos2unix {} \;

2、迁移后用户密码错误登陆不了以及不再支持static 全在这里进行更改

#define crypt oldcrypt        //因为FluffOS 默认使用md5加密不过 FluffOS  同样兼容 crypt 加密
#define static nosave        //不再支持static 这里定议为 static转换为nosave
#define private protected  //这里重要将 private 转义为 protected  

通过以上三个调整基本上能兼容大多的mudlib
修改 vi /home/xxxmud/mudlib/include/globals.h

/ globals.h 
// this file will be automatically included by the driver

#define SAVE_EXTENSION __SAVE_EXTENSION__
#pragma optimize 

//这里是修改mudlib达到兼容性
#define crypt oldcrypt 
#define static nosave
#define private protected

3、将你的mud 加入到 centos 的自动启动服务的教程及脚本.
编译启动脚本,记得要修改脚本内的以下配置为你的实际配置:

mudstart 这个脚本放到 /home/hymud/bin 下面,根据你的目录自己修改.

#!/bin/bash
########## Mud Start Config ############
DIR=/home/xxxmud/bin    #你实际的mud fluffos驱动地址
MUDCONFIG=${DIR}/config.ini  #你mud的配置文件名字
MUDNAME=HY6             #你mud的名字用于存放进程pid号
MUDSTARTNAME=xxxmud     #你mud这个启动脚本的名字
########################################
RETVAL=0 
NUM=0

#ulimit -n 65535 
echo 999999999 > /proc/sys/vm/max_map_count

usage ()
{
	echo $"Usage: $0 {start|stop|restart|status}" 1>&2
	RETVAL=2
}   

start ()
{
        ${DIR}/driver ${MUDCONFIG} &
	echo $! > ${DIR}/${MUDNAME}.pid
}

stop ()
{
	function kill_pid() {
		if [[ -f $1 ]]; then
			kill -9 `cat $1`
			rm $1
		fi
	}
	kill_pid ${DIR}/${MUDNAME}.pid
	[ "$?" != "0" ] && RETVAL=1
}

status ()
{
	while true
	do 

	sn=`ps -ef | grep driver | grep -v grep |awk '{print $2}'`

        if [ ! $sn ]; then
           sn=0
        fi

	function ck_pid() {
		if [[ -f $1 ]]; then
			if [[ ${sn} = `cat $1` ]]; then
				echo "${MUDSTARTNAME} Service Runing PID: ${sn}"
			else
				echo "${MUDSTARTNAME} Service Not Run"
				restart 
			fi
		else
			restart	
		fi
	}

	ck_pid ${DIR}/${MUDNAME}.pid

	sleep 5
	done& 
}

restart ()
{
	stop
	start
}

case "$1" in
    stop) stop ;;
    status) status ;;
    start|restart) restart ;;
    *) usage ;;
esac

exit $RETVAL

hymud 这个脚本做为系统的服务进行启动,启动调用 mudstart 脚本
有关 /home/hymud/bin/ 修改成你的路径

#!/bin/bash
#chkconfig: 2345 80 90
#description:hymud
########## Mud Start Config ############
/home/hymud/bin/mudstart status&

然后把 hymud 脚本加入到系统服务

cp hymud /etc/init.d/         #把脚本拷到 /etc/init.d/
chmod +x /etc/init.d/hymud    #附于脚本的执行权限
chkconfig --add hymud         #把hymud 加入系统服务
chkconfig hymud on            #激活hymud 开机自动启动
service xxxmud start  #启动mud服务
service xxxmud restart #重启mud服务
service xxxmud stop    #停止mud服务
service xxxmud status  #查看mud运行状态

最后推荐几个MUD站点

FluffOS 中文站:  http://www.fluffos.net/index.php
北大侠客行MUD论坛http://pkuxkx.net/forum/index.php 
泥巴创世纪 http://www.mudbuilder.com
泥巴客栈http://www.xiaqiang.com.cn

《海洋IV - 江湖风云录》 已稳定运行于FluffOS Mysql

              ≡ ─────海洋VI- 江湖风云─────≡     
             ≡ ────全新中文网络泥巴游戏─────≡   

                   【    
          ◎■■■■】〓〓〓〓〓〓〓〓〓〓〓> 
                   【   
  |※※※※         笑看飞花落海洋  神州大地鹰飞扬         ※※※※|
  |※※※※         一浪打浪又一浪  江山代代人才出         ※※※※|
  |※※※※         英雄独剑走江湖  且把真心照月明         ※※※※|
  |※※※※         誓为红颜去闯荡  世世代代永相依         ※※※※|
  |※※※※         桃花梨花落海洋  可知处处是我家         ※※※※|
  |※※※※         情深缘浅论短长  乱世英雄乱世舞         ※※※※|
  |※※※※         他日征途伴英雄  愿我海洋浪不停         ※※※※|
  |※※※※         一样痴心一样狂  海洋英雄梦不息         ※※※※|  

           -----------------------------------  

          《海洋VI》 QQ群       3541849 8372963  
          《海洋VI》 主页地址   http://www.jhfy.org 
          《海洋VI》 游戏地址   hy.21sun.net 1863
          
如果输入英文名字后没有反应说明您使用的软件不合适请使用 zMUD 进行游戏

 

厌倦了3D大作?用你的Mac尝试一下最古老的MUD游戏吧。

1995年3月14日,《东方故事2》架构的天神(Admin)Annihilator在中文MUD史上第一份系统性的管理者指南中写下了以上的内容,当然这份指南的出现已经是在第一个MUD诞生16年之后。1979年,在英国塞克斯大学(Essex)的DEC system-10主机上,运行着Richard Barthl和Roy Trubshaw开发的第一个可供多人参与的纯文字界面的游戏,他们将这个游戏称为MUD1

对于很多人来说最早的网络游戏可能意味着传奇,奇迹,魔力宝贝等等。

但是事实上最早的网络游戏可以追溯到一款完全用文字表达的多人在线游戏"MUD"。

现在,拿起你的Mac,你也可以体验一把网游先驱们当年的激情。

 

作为上世纪八九十年代出生的我们,所有人可能都对那些复古的8-bit视频游戏有着独特的感情。

不过可能没有人会想到还有一个更加复古的,只有文字的历险游戏——除非你是个出生在五六十年代,对计算机情有独钟的老极客。

那么,如果你从来没有尝试过,或者你只是对于画面越来越逼真,情节却是千篇一律的3D游戏感到厌倦了?

那么就拿起你手上的MAC,打开Terminal,然后开始MUD(昵称泥巴,英文多用户地下城的缩写)的旅程吧!

 

要玩这个游戏,不用下载任何东西。

你只要在Terminal中输入如下字符,然后游戏就会自动运行。

emacs -batch -l dunnet

bogon:~ luffy$ emacs -batch -l dunnet
Loading subst-jis...
Loading subst-ksc...
Loading subst-big5...
Loading subst-gb2312...

Dead end
You are at a dead end of a dirt road.  The road goes to the east.
In the distance you can see that it will eventually fork off.  The
trees here are very tall royal palms, and they are spaced equidistant
from each other.
There is a shovel here.
>
>

搜索了一下,这是个1983年就有的mud游戏。

 

如果你之前从未玩过MUD,你会发现它事实上挺简单直白的。

例如,你的游戏开始时你站在一条路上,身边有一把铲子。

你打上“拿起铲子”,然后这个铲子就在你的背包之中了,再打上“往东走”来沿着道路前进。

输入“背包”来查看背包中的东西,“存储”“读取”来操纵游戏进度,如果你玩不下去了,还可以输入“帮助”来看看下一步怎么做。

这个游戏的互动性极高,你甚至可以在纸上刻刻画画来标识你探索过的路程。

如果你无聊的话,打开这个游戏,把你的周末时光轻松的打发掉吧。

 

如果您想体验一下中文版的剑侠版MUD, 哪就来这里看看吧。

这个MUD经历过辉煌,历经18年,依然健在,并且一直在更新 -- 海洋

                ≡ ─────海洋 VI - 星月传奇─────≡
                ≡ ────全新中文网络泥巴游戏─────≡
                      【    
           ◎■■■■】〓〓〓〓〓〓〓〓〓〓〓> 
                      【 
    |※※※※         笑看飞花落海洋  神州大地鹰飞扬         ※※※※|
    |※※※※         一浪打浪又一浪  江山代代人才出         ※※※※|
    |※※※※         英雄独剑走江湖  且把真心照月明         ※※※※|
    |※※※※         誓为红颜去闯荡  世世代代永相依         ※※※※|
    |※※※※         桃花梨花落海洋  可知处处是我家         ※※※※|
    |※※※※         情深缘浅论短长  乱世英雄乱世舞         ※※※※|
    |※※※※         他日征途伴英雄  愿我海洋浪不停         ※※※※|
    |※※※※         一样痴心一样狂  海洋英雄梦不息         ※※※※|
         --------------------------------------------
           《海洋VI》 QQ群:       3541849 8372963
           《海洋VI》 主页地址:   http://www.jhfy.org
如果输入英文名字后没有反应,说明您使用的软件不合适,请使用 zMUD 进行游戏。
Mud                  中文名称                国际网路位址     埠号  人数
───────────────────────────────────────────────────────────────────────
海洋V                HYVI                    0                1863  35
───────────────────────────────────────────────────────────────────────
共有 0 个站点与本站连线中。共有 35 个玩家在线。
上次当机原因:无
北京现在时间:二零一七年二月一日一时五十分四十五秒。
海洋执行时间:七小时十九分三十七秒。
目前人数限制:三百 使用MUDOS版本: MUDOS pre11
游戏主页网址:http://www.jhfy.org        星月传奇主页:http://www.jhfy.org
最高在线数目:四百零五人                平均在线数目:三百六十五人工
游戏目前共有: 零 位世外高人、三十五 位江湖儿女在线上,以及 二 位尝试连线中。

您的英文名字(新玩家可以选择一喜欢的名字):请输入巫师专用密码:

身份确认完成,巫师专用密码验证通过!
请输入密码:


目前权限:(admin)

⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙
    海洋VI是以金庸的小说为背景,请勿使用小说中人名。
    海洋VI网站:http://www.jhfy.org
    海洋VI QQ群:3541849 8372963
    问题可以寄信到 hxsd@citiz.net
⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙


【〖 Luffy 工作室〗】 - /u/freebird/workroom
    这里是 Luffy 的家,空荡荡的左边有一扇小门,看来象是
个书房里面摆着几台框子一样的家伙,仔细一看原来是服务器,
在电脑台边上摆着几张穿军装的相片.
    这里明显的【出口】是gc 和  down。
  一张一千两金票(Thousand-gold)
  二只玉兔(Yu tu)
  新闻管理器(Msgd)

你上次光临海洋VI-星月传奇 是 Mon Jan 02 02:15:23 2017 从 xx.xx.xx.xx 连接的。

上次连入时间( Mon Jan 02 02:15:23 2017 )请校对。
上次连入IP地址( xx.xx.xx.xx )请校对。
有新文件update错误,立即查看 /log/log 。
有人使用过PURGE错误,立即查看 /log/static/PURGE 。
有人使用过权限命令,立即查看 /log/static/promotion 。

⊙【存盘】您的档案已经自动存盘。

【论道江湖】信息通告:task系统,是另一个涨exp的主要方法,详细请用help tasks查看

⊙【窗外】傍晚了,天地间渐渐暗了下来。

【江湖谣言】某人:听说:有人悬赏挑战在襄阳城的-郭府后花园附近的:微尘。

【论道江湖】信息通告:task系统,是另一个涨exp的主要方法,详细请用help tasks查看

【系统】离线指令:正国侯 亚尔修斯(maper) 准备离开游戏了。

【系统】离线指令:圣人 明教风字门教众 武当派第二代弟子 亚尔修斯(Maper) 离开游戏?

【系统】离线指令:亚尔修斯(maper)离开游戏了。本次连线经验增长70。

⊙【窗外】夜晚降临了,宝蓝色的天空中露出了滴滴晶莹的星点。

【官府通告】北京城中今夜有飞贼横行,良民百姓请闭门不出,切莫自误!

【官府通告】武功镇中今夜有飞贼横行,良民百姓请闭门不出,切莫自误!

【官府通告】福州城中今夜有飞贼横行,良民百姓请闭门不出,切莫自误!

【官府通告】苏州城中今夜有飞贼横行,良民百姓请闭门不出,切莫自误!

【论道江湖】信息通告:有bug,大家请用sos命令来报告天神

【江湖谣言】某人:襄阳城-西内大街:史仲猛听说在回族部落草原有批外族武士在图谋不轨
。

     ----- 【海洋VI-星月传奇】将在四分钟后重新分布task!-----

【系统】系统精灵:开始重新生成绿柳山庄地图。

【江湖谣言】听说年轻弟子死了 死因不明。

【系统】离线指令:峨嵋派第四代弟子 精灵(Numen) 准备离开游戏了。

【论道江湖】信息通告:task系统,是另一个涨exp的主要方法,详细请用help tasks查看

【江湖传言】沧浪亭(苏州)一带出现的玩偶山庄消失了。

【江湖通告】:精灵(numen)再次来到了海洋VI-星月传奇,欢迎你回来!

【窗外】冬夜的星空,璀璨夺目,寒风里的枯枝摇曳着星海无限灿烂的辉煌。

【江湖谣言】某人:塘沽城-武器铺:听说铁匠的一件宝物被抢走了。

【江湖谣言】某人:听说:圣堂有一个仇敌在兰州的金天观附近出现。

【存盘】您的档案已经自动存盘。

【论道江湖】信息通告:有bug,大家请用sos命令来报告天神

【论道江湖】信息通告:新人请look newbie beg 输入mygift 会推荐你当前任务。
  
【江湖谣言】某人:扬州-宁海桥码头:监工有批货物要送到 少林寺附近 的虚通手上。

【窗外】已经是午夜了。

【中央广场】 - /d/city/guangchang

    这里是城市的正中心,一个很宽阔的广场,铺着青石地面。一些游手好
闲的人在这里溜溜达达,经常有艺人在这里表演。中央有一棵大榕树,盘根
错节,据传已有千年的树龄,是这座城市的历史见证。树干底部有一个很大
的树洞 (dong)。 你可以看到北边有来自各地的行人来来往往,南面人声鼎
沸,一派繁华景象。东边连着甘泉街。街西是通泗桥。
    「隆冬」:夜幕低垂,满天繁星。
    这里明显的【出口】是west、south、east、down 和  north。
  大车(Da che)
  四位流氓(Liu mang)
  流氓头(Liumang tou)
  上官巡捕(Xun bu)
  欧阳巡捕(Xun bu)
  司徒巡捕(Xun bu)
  一代宗师 无名居士(Noname)
⊙
到了!马车稳稳地停到地下,亚尔修斯跳下了马车。对车夫挥了挥手。
亚尔修斯往北方的十里长街离开。

到了!马车稳稳地停到地下,轩辕小小跳下了马车。对车夫挥了挥手。
轩辕小小往北方的十里长街离开。

到了!马车稳稳地停到地下,亚尔修斯跳下了马车。对车夫挥了挥手。
亚尔修斯往西方的通泗桥离开。

到了!马车稳稳地停到地下,亚尔修斯跳下了马车。对车夫挥了挥手。
亚尔修斯往北方的十里长街离开。

看看,这个时间还有多少人在线

到了!马车稳稳地停到地下,大花月季跳下了马车。对车夫挥了挥手。
大花月季往南方的十里长街离开。
◎ HYVI

─────────────────────────────────────
普通百姓: 传真机五号(faxfive)
白云庵:   大米六(hhhf) 迈越风(ime)
大理段家:+玄武(tortoise) 传真机三号(faxthree)
峨嵋派:   精灵(numen) 不死鸟(phoenix)
飞天御剑流: 飞雪(flysnow) 传真机八号(faxeight)
古墓派:   幽幽(seer) 传真机七号(faxseven)
关外胡家: 小刀(ebeba)
华山派:   小辫子(change) 传真机四号(faxfour)
靖海派:   夜夜夜(yyy)
凌霄城:   风轻云淡(cloud) 红通通(hong) 大米五(hhhe) 好人(ebebeb)
          +圣堂(archon)
青城派:   和白花(helonghhh)
唐门:     打火机(dahuoji) 仪旁(bprose)
桃花岛:   段子痕(dzh)
武当派:   亚尔修斯(maper)
雁荡派:   大花月季(smallrose)
巫师:     云中帆(freebird)
─────────────────────────────────────
有 44 位玩家连线中,0 位玩家断线中,系统负担:42.94 cmds/s, 27.46 comp lines/s
* 表示断线中  + 表示发呆中
⊙
到了!马车稳稳地停到地下,亚尔修斯跳下了马车。对车夫挥了挥手。

 

如果你是新手不懂玩就输入( help )查看系统的帮助吧
⊙────────────────────────────────────────────────────────────────
                   〖  海洋IV-武林至尊 说明文件 〗
─────────────────────────────────────────────────────────────────
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃                      √     初入江湖                            ┃
┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
 help intro       海洋 IV简介          help allcmds 常用指令
 help newbie      新手指南             help rules   游戏规则
 help whatsnew    新增内容             help member    会员制度
 help city        城市介绍             help event     自然景观
 help medical     中医介绍             help work      职业系统
 help dazao       打造兵器             help feature   游戏特色
 help boss        挑战BOSS             help chongx    奇脉冲穴
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃                       ※    浪迹江湖                            ┃
┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
 help menpai      门派介绍           help settings    环境变量设置
 help maps        地图说明           help biwu        比武大会
 help aboutquest  任务指南           help skill       武功说明
 help questlist   武林解秘           help system      系统简介
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃                       ☆    江湖传闻                            ┃
┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
 help aboutgift   节日发奖           help creatskill  自造武功
 help spskill     奇功介绍           help wlmm        玩家专区
 help house       造房生子           help transport   交通工具
 help game        附属游戏           help hyjiangli   海洋奖励系统
 help tasks       神书系统           help pet         海洋宠物篇
 help wlzb        武林争霸           help kaibang     海洋的开帮立派
 help wlmm        武林秘密           help migong      迷宫探险
 help paimai      拍卖系统           help emotelist   emote详解
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃                      √     海洋专题                            ┃
┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
 help turen       屠人大会           help qujing      西域取经
 help hslj        华山论剑           help jiuyin      九阴真经
 help zhuansheng  转生机制           help work        职业系统
─────────────────────────────────────────────────────────────────
⊙⊙⊙⊙⊙⊙【窗外】太阳已经高高地挂在东方的天空中。

【朝廷急报】在成都城中发现日本奸细!

【朝廷急报】在泉州城中发现西夏奸细!

【江湖浩劫】姑苏慕容:哼,这次就先放你们一马,下次一定杀得你们鸡犬不留!。

重温经典 文字MUD [ 海洋VI - 江湖风云录 ] 曾经迷狂的MUD,那些逝去的记忆......

17年前我们在,17年后,我们还在……[ 海洋 - 江湖风云录 ]

[ 海洋 - 江湖风云录 ] 官方QQ群:3541849

PC客户端: https://www.itsns.net.cn/MudClient.zip
安 卓 端: https://www.itsns.net.cn/hymud.apk
网 页 端: http://webmud.jhfy.org

 

        MUD的吸引人之处在于,它摈弃了现实的骨肉,精简了诸多的繁枝末节,直接予人真实强烈的精神感受。

        MUD文学究竟能不能成为一个自成气候的有生命力的东西,究竟能不能在MUD的多彩人生中得到有意义的沉淀,这是我一直念念不忘的问题。

        因为玩MUD的人在芸芸大众中还是不成比例的少数,尽管这个少数是有具备相当素质的人组成,还是限制了它的发展,已有的文字大多也陷于结局破碎的爱恋的巢臼。从文字到内涵都是极品的MUD小说实在是太少了,尤其以XYJ为背景的,达到这个高度的迄今未见。

        所以,每当自问MUD究竟会给我留下什么的时候,我都希望在喧闹过后,会有落花般的缤纷坠入记忆。如果象八合那样的高手在封刀沉寂多年后都免不了被人取代的命运,如果你退出江湖多年以后旧地重游却发现一切已是物是人非……呵,至少你还能走进我们,如同走进放映着老电影的人们,过去的片段,都夕日重来?我希望我到老得玩不动MUD的时候,还能回到这里看看……。

        “一旦进入实际生活,诗歌就变成了散文,自由就变成了奴役”。现实生活中,四处开满了恶之花。现实生活中,我们总是怅惘着昨日,忧郁着将来,我们已经完全习惯了四周的那些阴暗、冷酷和卑微。

        现在,有了一个机会,从此我们可以忘掉这些恼人的真实,我们可以沉醉、留连于一个不存在的世界。自此,我们肩负了一个宿命,这个宿命叫做“自由”,我们可以对面临的各种可能性自由的加以选择。这种充满了异彩的游戏生涯是短暂的,所以我们反而能执着于每一刹那,捕捉住每一刹那的欣悦的影子。

        我们都是追寻尘世中片刻的欢娱的俗人。人生的意义,无非是充实刹那间的美感享受。正如唯美主义大师佩特所说的,“能使这种宝石般的火焰炽烈燃烧,且保持着这种心醉神迷的状态,乃是人生的成功。”这也是我的刻骨铭心的MUD记忆。

        正因为这样的情怀 -[ 海洋 - 江湖风云录 ]延续了 17 年到今天,在众多泥迷们的支持下继续发挥他的文字魅力。