Re: [閒聊] 煩啊! 副本

看板mud_sanc (Sanctuary - 聖殿)作者 (小太保)時間12年前 (2014/03/02 10:13), 編輯推噓0(001)
留言1則, 1人參與, 最新討論串2/5 (看更多)
繼續擬定副本架構,今天搞定。 原則上不採腳本方式,因為任務跟副本不同,任務可以用腳本 ,副本不行。但即便副本不採腳本,它還是可以很像腳本,也 就是「副本物件」。我希望這個副本物件可以簡單到玩家也能 寫,因為「希望玩家也有能力參與創作」是既定政策。 根據 #1J2i2_ZT (mud_sanc) [ptt.cc] [閒聊] 煩啊! 副本 這個物件會先宣告納入的房間範圍 static mixed instance_files=({ ... }); 以及一個玩家執行副本的暫存資料 static mapping ppl_instance=([]); 當副本產生時,呼叫 create_instance 函數 int create_instance(string ppl_name,mixed usr) { 1.先生成所有的副本房間; 2.設定每一房間的資料; 3.將副本參與者 usr 移動到副本房間; } 設定每一房間的資料 可以預見這段程式有底下的程式段 obs=ppl_instance[ppl_name]; foreach(ob in obs) . . 從這裡就可看出,「每一個副本房間」都有它的設定區, 一般不是用 mixed 就是用 mapping 宣告,後者如下.. static mapping instance_data= ([ "房間1":([ "short":"黑暗洞窟", "long":"一座陰森森的黑暗洞窟。", . . ]), . . ]); 到這裡,可以 handle 上一篇的大部份設定,包括生怪, 但是卻不包括「怪生出來後的設定」,要包括就會變這樣 "mobs":([ "怪物1":([ 怪物設定; ]), . . ]); 問題就在於,如果副本中的其中五格,生出來的怪物其實 都一樣,那上面的設定等於做五次,而實際上只需做一次 就已足夠(剩下四次都是多做的),所以生怪必須額外做, 而且有些設定必須盡量 follow default 值,才不需做太 多額外設定。 然後就是,玩家每前進一個房間,就必須呼叫該副本物件 一次,用來追加副本的設定。 最後就是 set_npcs 的設定,只要注意相關細節即可。 所以關鍵在於資料結構、程式運作方式、副本物件的複雜 度、擴充彈性、好不好修改這些。 Laechan -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 111.253.168.92

03/02 10:48, , 1F
嘛, 我開始覺得做副本是一件有趣的事了
03/02 10:48, 1F
已經做的差不多了,新的副本架構比之前的簡單很多,我 剛剛有拿白瓦鎮隨便三個房間來測試,已能正常產生副本 假設玩家透過 quest 接受副本任務 instance_ob->create_instance(ppl_name); 目前還缺兩部份就能達到完整架構的 90% 程度: 1.times_check 的循環判斷部份 2.任務結束的判斷部份 最快明天就可以完成。由本次實作副本的經驗,亦可看出 times_check 的重要性,有 times_check,才能採用這樣 的副本架構,而且它可以是一個雙保險的架構。 剩下的 10%....很雜,細部設定極多,每個都不困難,但 頗花時間,我再慢慢做,因為每完成一項就得測試。 總之,今年確定能實裝副本系統。 Laechan ※ 編輯: laechan 來自: 125.224.237.195 (03/02 21:09)
文章代碼(AID): #1J4fEuXn (mud_sanc)
文章代碼(AID): #1J4fEuXn (mud_sanc)