iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 10
0
自我挑戰組

30天遊戲原型開發系列 第 11

Day10 mudlib研究筆記:簡易導覽、物件繼承關係

因為程式碼關於區域(房間)的部份很少,以致沒有實際的遊戲內容可以觀摩。後來研究的方向就轉向整個遊戲機制的部份。畢竟整個遊戲能夠研究的面向還是很多,最後還是考驗巫師們的想像力。

一開始就很單純按照文件目錄順序一個一個資料夾看,順便把空資料夾從文件上刪掉,以下是整理過的目錄。

*** 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 標準繼承關係,裡面放了系統標準人物、房間、物件、道具、裝備的標頭
  • feature 特徵,極大多數都是活物件的功能實作,少部分是自行開發的模組
  • daemon 精靈(系統服務),影響整個遊戲運作

簡單列一下整理

inherit 互動 玩家互動 巫師互動
飲食 飲水 裝備 重裝甲 遠程武器 短程武器 技能
城市居民 城市生產 城市區域
標準NPC 標準物件 標準房間

daemon
登入 登出 時間 天氣

活物特徵:基本屬性 戰鬥 狀態 延遲(CD) 裝備 生命狀態 背包 貨幣 移動 任務 技能

  • 玩家物件特徵:互動 指令 編輯器 心跳 連線識別 名稱 輸入 使用者訊息 分頁顯示 載入
  • NPC物件特徵:互動 行為/訊息回應 行為/走動 指令 心跳 名稱 訊息

STANDARD_OBJECT 標準物件特徵:DATABASE CLEAN_UP MOVE IDNAME ACTION KEEP
通常是遊戲內存在的物品,能夠轉移擁有對象

其實還蠻多值得下去研究的東西,一下子可能沒辦法全看完。
大概羅列一些我覺得有興趣的部份,有機會補完

  • 遊戲內復刻了台灣十六張麻將,充分展現MUD的高度自由性
    ref: obj\etc\mj\mj.c

  • 資料庫底層運作

  • action 互動指令的運作機制,開發方法

  • NPC運作機制

  • 城市經營要素、經濟系統模擬

  • 戰鬥要素,本遊戲較不注重戰鬥,可參考其他MUDlib

  • 房間/都市/區域/迷宮/世界,不同層級的區域研究

  • 天氣系統

  • LCP VM的運作機制

一些腦洞:

  • MUD版的麥塊
  • 物品合成系統
  • 改善NPC互動、種族陣營關係、劇情豐富度、任務
  • 世界劇情發展、神話系統
  • 物件描述格式 by json, yaml

不得不說,MUD的創造能力不會輸給麥塊,看到不錯的實作都蠻佩服的

明天研究MUD的底層連線機制,看有沒有其他能跟MUD配合的web協定或技術?
ex: CGI, websocket, socket.IO


上一篇
Day9 mudlib研究: 區域
下一篇
Day11 mudlib研究: 東方故事ES2 (更新1)
系列文
30天遊戲原型開發31
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言