作者laechan (小太保)
看板mud
標題Re: [閒聊] 灌個水, coding 一下吧!!
時間Sat Nov 14 08:30:07 2009
※ 引述《laechan (小太保)》之銘言:
: // XX農場
: // 先不寫花、動物、裝飾、肥料、飼料、放蟲、放草等
: inherit ROOM;
: mapping farms=([]), // 農田資料
: bag=([]), // 袋子資料
: warehouse=([]), // 倉庫資料
: seeds=([]); // 種子資料
: /*
: seeds=(["pear":
: (["name":"梨子", // 作物名稱
: "value":5150, // 購買價
: "seasons":3, // 類型(可收成幾季)
: "mellow_time":40, // 成熟時間
: "mellow_again":14, // 再成熟時間
: "output":40, // 預計產量
: "unit_price":112, // 單個售價
: "grow_lines":({10,8,8,7,7}), // 發芽→小葉→大葉→開花→成熟
: ]),
: ]),
: */
假設完全仿照 XX農場 將系統寫在 mud 內了,個人認為該系統
的關鍵在...
一、事件觸發(長草/長蟲/乾旱)的寫法
二、農場指令要使用 add_action() 方式或用 input_to 方式
三、在 mud 裡玩農場可獲得什麼好處
四、農地畫面如何顯示
一的部份,依照實際接觸 XX農場 的感覺,應該是呼叫一次事件
觸發函數後,就接著設定「最早何時再次觸發」。
void 事件觸發函數()
{
foreach(farm in 所有農地)
farm->init_event();
}
void init_event()
{
隨機出現事件;
事件控制;
// 例如出現長草事件,草最多長幾株;
// 例如出現長蟲事件,蟲最多長幾條;
// 例如出現乾旱事件,乾旱狀態還留著時就不再出現;
設定下次該塊農地再出現事件的時間;
}
則理論上n塊農地的下次再事件時間就會互相不同。
(不過依 XX農場 寫法,顯然設定時間的部份並非寫在每塊農地
的 init_event 中,而是寫在 事件觸發函數 中)
二的部份,使用 input_to 的好處,即是玩家每按一次 enter,
即更新一次農地畫面,以及相關指令不再需要給定指令名字,玩
家只需透過輸入像是 1 2 3 或是 a b c 即可操作各種選項。
但是它的缺點就是資料會被頻繁載入、input_to 被大量使用、以
及資料的正確性,不過透過適當的寫法倒可以避免掉這些缺點,
例如加入載入時間控制、節省 input_to 以及資料的即時check等
三的部份,例如 XX農場 是得到金幣與經驗值,實際上 mud 也是
有金幣與經驗值,可行的寫法之一,就是讓玩家種田可得到玩家自
身的經驗值─也就是可做為打怪練功之外的另一種選擇。
而得到的金幣同樣也能當做玩家自身可運用的金幣,這時種田就可
當成是在遊戲內進行的投資行為(拿錢買種子→收獲後得到更多的
錢),此時「另一貨幣」就可以結合 mud 內原先使用的貨幣「外加
其它數值參數」來做為交換條件。
例如個人所經手的 mud 裡面有線上投票系統,我就可以設定,有
參與線上投票的人可以獲得「一枚」的該種貨幣,這時自然可以期
望在遊戲內熱心於種田事務的人會多多參與線上投票。
最後是農地畫面的部份,這個是各人有各人的做法,我個人曾嚐試
畫過 4x4 的農地,個人覺得共通的問題如下..
一、如何設計各種參數於農地中的顯示樣式
二、如何寫的精巧,使農地畫面每次載入時不會造成太大負擔
三、如何設定使用者介面(add_action 式 or input_to 式)
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 118.170.123.157
1F:推 happyhero:純推coding技術文:) 11/14 09:23
2F:推 popoloo:三是得到物品跟exp 錢的話是賣掉才有 11/14 09:54
3F:→ popoloo:像小貓都有藥草的設計 要不要弄個可以種出藥草的設定 11/14 09:55
4F:→ popoloo:要自用賣掉自己決定這樣 11/14 09:55
5F:推 reliu:樓上是網球版版主@@ 11/14 15:41
6F:→ linkeykey:開版大說得很多功能,mud 重生的世界裡就有了... 11/14 16:20
7F:→ laechan:能幫重生的世界打到廣告的話也不錯啊 11/14 17:12
8F:→ laechan:我自己是有預定在自己的mud的某系統內添加這個附屬系統 11/14 17:13
9F:推 happyhero:很不錯啊 可以弄成煉妖壺 or 煉丹系統 11/14 17:59
10F:→ laechan:沒,是真的農場系統,種東西的 11/14 18:27
11F:→ taily:我比較好奇你如何寫儲存檔案...^^! 11/16 18:56
12F:→ laechan:用 save_object/restore_object, 依照 user name 區別 11/16 21:01
13F:→ laechan:如果是共同拓墾型農地, 就 save_object 房間物件資料即可 11/16 21:02
14F:推 Yanten:來個傷心墳場吧 11/17 18:10
15F:推 happyhero:早上埋屍體 晚上挖墳收成陪葬寶物 還會遇到吸血鬼殭屍 11/17 22:59
16F:→ taily:針對第二點, 宣告變數寫在玩家(有心跳)身上不是比較好? 11/18 21:22
17F:→ laechan:嗯,如果是開心農場的版本的話,放入heart_beat是好方法 11/18 23:31
18F:推 softwind:請問有C++寫成的 mud引擎嘛? 感謝~ 11/26 01:44
19F:→ lighterbooks:回樓上,有整個mud都用C寫成的,而且數量很多很多, 12/06 21:50
20F:→ lighterbooks:能否看完原始C碼,可能因人而異吧. 12/06 21:50
21F:→ lighterbooks:像我現在的爛環境,要去看原始C碼,那是不可能的。 12/06 21:51
22F:→ lighterbooks:(以上若有錯誤,請更正,謝謝!) 12/06 21:51