因為程式碼關於區域(房間)的部份很少,以致沒有實際的遊戲內容可以觀摩。後來研究的方向就轉向整個遊戲機制的部份。畢竟整個遊戲能夠研究的面向還是很多,最後還是考驗巫師們的想像力。
一開始就很單純按照文件目錄順序一個一個資料夾看,順便把空資料夾從文件上刪掉,以下是整理過的目錄。
*** RWlib 之目錄結構
/
│
│
├─city 城市區域(完全由 CITY_D 自己在此建立目錄結構)
│ └─fallencity1
│ └─0
│
├─cmds 系統指令目錄
│ └─std 一般指令
│ ├─adm
│ ├─adv
│ ├─arch
│ ├─guest
│ ├─npc
│ ├─ppl
│ └─wiz
│
├─combat 戰鬥系統相關
│ └─handler
├─data 資料儲存
│ ├─emotion 表情資料
│ ├─finger IP 位置對應資料
│ ├─network 網路資料
│ ├─object 其他物件資料
│ └─user 玩家資料
│
├─doc 文件
│ ├─chat 聊天紀錄文件
│ ├─driver MudOS 修改文件
│ │ ├─modify
│ │ │ ├─detail_document
│ │ │ └─source_files
│ │ │ └─packages
│ │ └─perl
│ ├─help 遊戲說明文件
│ ├─rwlib Revival World Mudlib 文件
│ └─v22doc MudOS v22doc
│
├─include 標頭檔
│ └─backup
│
├─log
│ └─system
│
├─obj 各種基本系統物件
│ ├─board
│ ├─etc
│ ├─farming
│ ├─fish
│ ├─materials
│ ├─npc
│ └─room
├─std
│ └─inherit
│ ├─feature 特徵繼承
│ │ ├─command 指令繼承
│ │ ├─living 生物繼承
│ │ │ ├─npc ├─NPC繼承
│ │ │ └─usr └─使用者繼承
│ │ │ ├─ppl └─玩家繼承
│ │ │ └─wiz └─巫師繼承
│ │ ├─module 模組繼承
│ │ │ ├─condition ├─狀態加持
│ │ │ ├─object ├─產品模組繼承
│ │ │ ├─room ├─建築物模組繼承
│ │ │ └─skill └─技能模組繼承
│ │ ├─object 一般物件繼承
│ │ └─room 一般房間繼承
│ └─standard 標準繼承
├─system 系統
│ ├─daemons 精靈
│ │ └─etc └─精靈資料檔
│ ├─kernel 核心
│ │ ├─data ├─重要資料儲存
│ │ ├─etc ├─
│ │ ├─master ├─MASTER
│ │ └─simul_efun └─SIMULEFUN
│ ├─object 使用者物件
│ └─tmp
│
├─wiz 巫師
│ ├─home 巫師個人目錄
│ └─wizhall 巫師神殿
└─zone 區域
主要遊戲實作內容:obj, std, system
遊戲運行後產生內容:data, log, zone
開發區:city, wiz
然後這三個標頭檔被引用的頻率非常高
簡單列一下整理
inherit 互動 玩家互動 巫師互動
飲食 飲水 裝備 重裝甲 遠程武器 短程武器 技能
城市居民 城市生產 城市區域
標準NPC 標準物件 標準房間
daemon
登入 登出 時間 天氣
活物特徵:基本屬性 戰鬥 狀態 延遲(CD) 裝備 生命狀態 背包 貨幣 移動 任務 技能
STANDARD_OBJECT 標準物件特徵:DATABASE CLEAN_UP MOVE IDNAME ACTION KEEP
通常是遊戲內存在的物品,能夠轉移擁有對象
其實還蠻多值得下去研究的東西,一下子可能沒辦法全看完。
大概羅列一些我覺得有興趣的部份,有機會補完
遊戲內復刻了台灣十六張麻將,充分展現MUD的高度自由性
ref: obj\etc\mj\mj.c
資料庫底層運作
action 互動指令的運作機制,開發方法
NPC運作機制
城市經營要素、經濟系統模擬
戰鬥要素,本遊戲較不注重戰鬥,可參考其他MUDlib
房間/都市/區域/迷宮/世界,不同層級的區域研究
天氣系統
LCP VM的運作機制
一些腦洞:
不得不說,MUD的創造能力不會輸給麥塊,看到不錯的實作都蠻佩服的
明天研究MUD的底層連線機制,看有沒有其他能跟MUD配合的web協定或技術?
ex: CGI, websocket, socket.IO