Re: [wizs] 系統撰寫概要
看板mud_sanc (Sanctuary - 聖殿)作者laechan (小太保)時間17年前 (2009/02/04 11:36)推噓0(0推 0噓 0→)留言0則, 0人參與討論串4/6 (看更多)
再來講個簡單的系統,例如說某房間,它會定期紀錄線上玩家
在各區域(依目錄分)的數量,將之統計起來,日後方便分析哪
些區域是較熱門的點,以及其它資訊之類的..
從這裡開始,restore_object/save_object 就不再是重點,因
為這個只要會用就好了,重點開始變成「你要怎麼存資料」。
一般來說可以這樣子設定要存的資料..
mapping count_data=([
"/u/l/laechan/area/felid" : ({ 3, 2, 5, 4, .... }),
"/u/l/laechan/area/hole" : ({ 5, 4, 5, 7, .... }),
])
也就是說,每一段周期時間,它就去讀 users(),分析每一個
environment(ppl) 的 base_name,然後 filter 出 area_path
mixed usr=users();
object ppl,env;
string files,area_path;
int s;
foreach(ppl in usr)
{
if(ppl && env=environment(ppl))
{
files=base_name(env);
s=strlen(files);
while(s-->0)
{
if(files[s..s]=="/")
area_path=files[0..s]; // 或 files[0..s-1]
然後做 mapping 資料的增減...
mixed tmps=({});
if(count_data[area_path])
{
tmps=count_data[area_path];
tmps+=({ 本數統計的數量 });
}
else
count_data[area_path]=({ 本次統計的數量 });
當然最後要做的事情就是..
save_room();
通常當累積的陣列元素越多時,就有足夠的資訊可以分析,在一定
的時間範圍內,某一個區域它的人數增減情況。
撰寫這樣的系統,基本上要注意幾件事...
一、周期時間的訂定。
二、在讀取資料的時候如何最快速簡易無負擔(上面的沒有做到這點)
三、如何設定儲存資料的格式可以使儲存量更精簡
通常二跟三是衝突的,根據定律,它就存在一個所謂的「最適合寫
法」,可以折衡中間的優缺。
不過實務上一般還是依實際情況來做二or三的考量,需考量最適合
寫法的情況通常只有在寫頻繁讀取 or 大型系統時。
在這情況下考量聖殿的現況,還是請各位多以二為主^^
Laechan
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 218.170.230.44
討論串 (同標題文章)
mud_sanc 近期熱門文章
PTT遊戲區 即時熱門文章
15
19