mud 板


LINE

看板 mud  RSS
SUD就是Single User Dungeon啦,相對於MUD是多人連 線,SUD就是單人遊玩。如果你要把自己架MUD,然後一 個人玩來當作同樣的東西好像也不是不行,不過我還是 想做個無連線的(單機遊戲),同時測試一些東西。 主要是類似MUD的文字介面跟操作,單人為主,戰鬥並 不是主要的成分,可能會是以解謎或互動為主。 因此實作的目標就是:單人、無連線、類MUD的操控。 目前已把最低限度的一些東西完成,稍稍有點東西可以 呈現在畫面上。 https://i.imgur.com/rlVG2vM.png
目前完成的簡易結構 1. Room/Zone/World 的房間跟區域結構 2. 房間敘述加簡易條件限制(例如Str>5才能看到跟執行) 3. 房間描述分文字部分及ANSI部分 4. 簡易物品道具/拾取/丟下 5. 角色指令獨立物件處理 ## 區域架構先簡單處理,基本上就一層包一層,每層加上 一個Parent方便往上層取資料,目前只配置幾個必要的 物件,很多細項都還不需要加入,因為目前都用不到。 public interface IWorld : IUpdatable { IReadOnlyDictionary<int, IZone> Zones { get; } ... } public interface IZone : IUpdatable { IWorld Parent { get; } IReadOnlyDictionary<int, IRoom> Rooms { get; } ... } public interface IRoom : IUpdatable { IZone Parent { get; } IReadOnlyList<IItem> Items { get; } IReadOnlyDictionary<Guid, IUnit> Units { get; } ... } 在Room的地方多設定了Items跟Units,用來作為物品跟 角色的存放,至於場景的描述字串,因為有別的設計, 所以這邊就暫時沒用string欄位。 ## 房間描述加條件限制,就是單純的設定某些情況下可以 看到某些敘述,可能限制是角色身上的屬性、遊戲中的 時間、或是攜帶的道具等等。 在Room中配置 List<ICondString> CondStrings { get; } 而ICondString就簡單設定一個檢查跟一個輸出。 public interface ICondString { bool Check(IUnit unit); string ToString(IUnit unit); } 執行起來就會類似這樣: https://i.imgur.com/ZQt4Qrp.png
這邊簡單的實作了一個限制Str的字串。 public class StrConstrainString : ICondString { public StrConstrainString(int minInclude, int maxExclude) { } ... } 會想要做這個設計,主要是因為單人遊戲,但又想要加 些針對事件可以不同的手段處理的方式,可以因為屬性 不同用不同的方式解謎。 不過目前也就只有實作屬性達到可以看到不同的環境敘 述而已,尚未有其餘功能,後續要怎麼做也還沒想,就 暫時先這樣。 ## 房間描述分為文字部分跟ANSI部分。 原本是沒打算這樣做,後來想想似乎可以加些東西,就 拆了開來,至於為什麼分出ANSI部分,是打算做為Scene 來處理,會跟環境的道具或敘述交互作用。 例如: 條件敘述(Perception > 8) 文字部分: [洞察]你發現窗戶有些裂痕 ANSI部分: AnsiString() {S = "...", Rect = new Rect(10, 10, 10, 5), Order = 1} 在合併環境描述輸出的時候,Room的基本ANSI作為底, 再把條件敘述檢驗成功的取出,並使用AnsiString物件 中的ANSI去取代指定位置Rect的ANSI資料,最後再輸出 至畫面上,用此來達到ANSI圖不是單純Room圖片而已。 不過目前這邊邏輯沒做就是了,只是單純的構思,但是 ANSI圖層合併的邏輯,我在我自己做的ANSI繪圖軟體中 已經驗證過是可行,也不會太複雜。 ## 因為只有房間跟移動有點無聊,為了要有物品可以操作 ,所以加入個簡單的物品結構,每個Room就直接用個 IReadOnlyList<IItem>來保存每個Room中的物品,單位 身上也同樣需要。 道具就簡單設定幾個欄位,這邊同樣把文字描述跟ANSI 資料拆分開來。 public interface IItem { int ID { get; } string Name { get; set; } string DisplayName { get; set; } string InspectDesc { get; set; } string InspectANSI { get; set; } } 簡易的拾取物品動作。 https://i.imgur.com/Y5dJO9Q.png
## 至於角色指令獨立物件處理,就是每個動作各自繼承 IHandler實作邏輯,目前的移動、拾取、Look等都各 自實作邏輯,單位身上需要有一個參照來保存。 Dictionary<string, IHandler<IUnit>> Handlers { get; } 輸入動作的時候檢查是否有對應的handler,取出並運 作。 public interface IHandler<T> { void Process(T o, params string[] args); } 主要這麼做的原因,當初是想說我想要動態配給單位可 執行的指令,也可以動態的移除,例如裝備一些道具後 這個道具會Add一個handler,讓角色可以執行特定的動 作,移除裝備就移除這個動作。 ## 基本上往單機遊戲方向設計就是了,遊戲啟動用一個Task 去執行Loop,並且每次Loop呼叫World的Update,並一 層層傳遞下去,來達到更新。 目前暫時這樣吧,很大的機會做不完,後續會不會繼續補 完也很難說:P 反正也只是想要來驗證一下,確實還算有趣。 --



※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 220.133.5.88 (臺灣)
※ 文章網址: https://webptt.com/m.aspx?n=bbs/mud/M.1657313070.A.F6F.html ※ 編輯: poewar (220.133.5.88 臺灣), 07/09/2022 04:52:38
1F:推 dontpkme : 有demo版的時候可以釋出給版友遊玩嗎 :p 07/13 02:00
2F:→ poewar : 這也要能做的出來才行XD 07/13 19:47
3F:→ laechan : 以前弄過單機板聖殿,可以練到120,但那時沒任務副本 07/14 11:32
4F:推 tsetsethatha: 感謝提供! 收入 z-3-12 07/14 19:52







like.gif 您可能會有興趣的文章
icon.png[問題/行為] 貓晚上進房間會不會有憋尿問題
icon.pngRe: [閒聊] 選了錯誤的女孩成為魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一張
icon.png[心得] EMS高領長版毛衣.墨小樓MC1002
icon.png[分享] 丹龍隔熱紙GE55+33+22
icon.png[問題] 清洗洗衣機
icon.png[尋物] 窗台下的空間
icon.png[閒聊] 双極の女神1 木魔爵
icon.png[售車] 新竹 1997 march 1297cc 白色 四門
icon.png[討論] 能從照片感受到攝影者心情嗎
icon.png[狂賀] 賀賀賀賀 賀!島村卯月!總選舉NO.1
icon.png[難過] 羨慕白皮膚的女生
icon.png閱讀文章
icon.png[黑特]
icon.png[問題] SBK S1安裝於安全帽位置
icon.png[分享] 舊woo100絕版開箱!!
icon.pngRe: [無言] 關於小包衛生紙
icon.png[開箱] E5-2683V3 RX480Strix 快睿C1 簡單測試
icon.png[心得] 蒼の海賊龍 地獄 執行者16PT
icon.png[售車] 1999年Virage iO 1.8EXi
icon.png[心得] 挑戰33 LV10 獅子座pt solo
icon.png[閒聊] 手把手教你不被桶之新手主購教學
icon.png[分享] Civic Type R 量產版官方照無預警流出
icon.png[售車] Golf 4 2.0 銀色 自排
icon.png[出售] Graco提籃汽座(有底座)2000元誠可議
icon.png[問題] 請問補牙材質掉了還能再補嗎?(台中半年內
icon.png[問題] 44th 單曲 生寫竟然都給重複的啊啊!
icon.png[心得] 華南紅卡/icash 核卡
icon.png[問題] 拔牙矯正這樣正常嗎
icon.png[贈送] 老莫高業 初業 102年版
icon.png[情報] 三大行動支付 本季掀戰火
icon.png[寶寶] 博客來Amos水蠟筆5/1特價五折
icon.pngRe: [心得] 新鮮人一些面試分享
icon.png[心得] 蒼の海賊龍 地獄 麒麟25PT
icon.pngRe: [閒聊] (君の名は。雷慎入) 君名二創漫畫翻譯
icon.pngRe: [閒聊] OGN中場影片:失蹤人口局 (英文字幕)
icon.png[問題] 台灣大哥大4G訊號差
icon.png[出售] [全國]全新千尋侘草LED燈, 水草

請輸入看板名稱,例如:Gossiping站內搜尋

TOP