Re: [閒聊] 煩啊! 副本

作者: laechan (揮淚斬馬雲)   2014-03-02 10:13:09
繼續擬定副本架構,今天搞定。
原則上不採腳本方式,因為任務跟副本不同,任務可以用腳本
,副本不行。但即便副本不採腳本,它還是可以很像腳本,也
就是「副本物件」。我希望這個副本物件可以簡單到玩家也能
寫,因為「希望玩家也有能力參與創作」是既定政策。
根據 #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

Links booklink

Contact Us: admin [ a t ] ucptt.com