作者laechan (小太保)
看板mud_sanc
标题Re: [闲聊] 烦啊! 副本
时间Sun Mar 2 10:13:09 2014
继续拟定副本架构,今天搞定。
原则上不采脚本方式,因为任务跟副本不同,任务可以用脚本
,副本不行。但即便副本不采脚本,它还是可以很像脚本,也
就是「副本物件」。我希望这个副本物件可以简单到玩家也能
写,因为「希望玩家也有能力参与创作」是既定政策。
根据
#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
1F:→ laechan :嘛, 我开始觉得做副本是一件有趣的事了 03/02 10:48
已经做的差不多了,新的副本架构比之前的简单很多,我
刚刚有拿白瓦镇随便三个房间来测试,已能正常产生副本
假设玩家透过 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)