作者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