Re: [闲聊] tmi2-mudlib 的更改

楼主: laechan (挥泪斩马云)   2014-06-23 21:09:27
聊一下 map 跟一些东西。
> data me
map : ({ })
map_record : ([ "redant" :
"7680,992,7,0,1020,3,7936,384,254,7,7936,510,31,7168,0,0,0,0
,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0" ])
me->query("map_record/redant") 是一个字串,将它做 htoa:
write(htoa(me->query("map_record/redant"))+"\n");
========== 程式执行区 ==========
111100000000000011111000000000000000111000000000000000011111
111000000000000011111110000000000001100000000000011111110000
000000011111111000000000000111111110000000001111111100000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000
========== 程式执行区 ==========
上面字串的长度共 475,“刚好”炙蚁地狱也是 001.c~475.c。
"1" 就是代表玩家有走过那格,"0" 就是代表玩家还没走过那格。
所以看到前面四个 1,就代表玩家走过 001.c~004.c。
那么就取字串前面几个 01 为例,底下假设两位玩家
A 玩家: 1111010011110101011010...
B 玩家: 0100100001010101010101...
则当 A 玩家将他的地图 share 给 B 玩家时,B 玩家就变成底下
A 玩家: 1111010011110101011010...
B 玩家: 0100100001010101010101...
===================================
B 玩家: 1111110011110101011111...
也就是说当 A 玩家某一格有走过、而 B 玩家该格没走过时,则当
A 玩家将自己的地图 share 给 B 玩家时,B 玩家该格经过 0 与
1 的 OR 运算后就会变成 1。
那么,当字串变成 "111111........111" 也就是全部都是 1 时呢
,这时会做底下两件事:
me->delete("map_record/redant");
me->add("map",({"redant"}));
也就是说,玩家已经不再需要做“走过该地图哪些点的纪录”,因
此就把 map_record 删掉,接着,玩家等于得到了完整的地图,因
此就把 "redant" add 到 map 里面。
假设 A 玩家已得到该张地图,则:
A 玩家 share 地图给 B 玩家 => B 玩家也是做上述两件事
B 玩家 share 地图给 A 玩家 => 什么事也不会发生
我做这项设计,我最重要的目的,就是想赋予游戏游玩性。因为地
图是可以改的,比方底下的图
起-x x-终 起-x-x 终
| | | |
x-x x-x → x x x-x
| | | | |
x-x-x-x x-x-x-x
格数完全一样,起点也一样,终点也一样,路线却不同,我说过管
理者要修改 mapx 的图很容易,修改后透过 trans,就能依修改过
的图重新产生出区域,这时候原先公布在 BBS、公布在网络上的所
谓“这个区域这一层的地图”马上作废。
可是对实际进行游戏的玩家来说:
已攻略完这张地图的玩家 → 没影响,map 一按新地图就出来
未攻略完这张地图的玩家 → 已攻略的格子数量没变
甚至起点一样,但是终点变换也是可以的。实际开过 mapx 图出来
看过的人应该知道,要变换路线只要动动手指非常简单就能办到,
然后可能尚未攻略完成的玩家,他的机器人就得重写这类的。
这样对已攻略完该地图的玩家来说,他就会认为他“永久拥有”著
一些独特的东西,而且这东西是可以随自己的心情看要不要 share
给尚未拥有这东西的人的,然后他越用心就能拥有越多,甚至他还
可以把目标放在完全攻略上。
游戏性在哪里呢?比方攻略组要找出 BOSS 房间在哪,这时有个玩
家在攻略一个七层的迷宫的最底部时,终于被他发现了 BOSS 房间
的标记,他用 chat 大喊说恁北找到 BOSS 房间了!
这时他的这份地图就是所谓“最有价值的地图”。
以上是我的想法。
使用者不必然要照我的想法,例如我自己在 sanc 所做的设计,就
是把图全开给玩家看,我也鼓励玩家多多写 sanc 的相关攻略。
我下一阶段要做的就是弄出“城村镇区域生产组合”,它一样会透
过 x-x、一样会透过 area_room.X 及 script_X 这六个元素去做,
城村镇区域的地图就不是上述的做法,而会采取我新写好的 map,
也只有城村镇的地图我会让它一直维持固定。
因为城村镇是冒险途中拿来休息用的,而不是拿来攻略的,不过,
城村镇会有些任务,是必然的,这也是下一阶段要释出的重点,也
就是任务脚本系统,然后跟地图系统一样,任务脚本也是网络随便
搜就一大堆给你看,于是:
当网络能搜到一堆地图 -> x-x 化 -> 变成 mud 内的区域
当网络能搜到一堆任务 -> 脚本化 -> 变成 mud 内的任务
当网络能搜到一堆○○ -> OOXX化 -> 变成 mud 内的东西
这就是 tmi2_v3_改 想要达成的理想,在达到这个理想之前,我都
会一直改下去。

Links booklink

Contact Us: admin [ a t ] ucptt.com