mud_sanc 板


LINE

※ [本文转录自 mud 看板 #1Jg2SBt1 ] 作者: laechan (小太保) 看板: mud 标题: Re: [闲聊] tmi2-mudlib 的更改 时间: Mon Jun 23 21:09:27 2014 聊一下 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"); 4-1=11 8-1=111 . . 8192-1=1111111111111 13个1 1111000000000 = 2^12+2^11+2^10+2^9 = 4096+2048+1024+512 = 7680 拆到最後不足 13 格的房间就自动把不足的当成 0 这样 52 格以内的区域只需要 xxxx,xxxx,xxxx,xxxx 四组数,就能 存该玩家是否有在该地图的什麽房间走过。 我上面的做法则应该是把 redant 当成一个大区域,它会自动判断 数组几到几是第一层,几到几是地二层,etc...实际上自动判断是 必然的,因为假设我第一层房间编号是001-135,第二层就是136开 始,虽然地图有三张,实际上编号是连续的。 ========== 程式执行区 ========== 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_改 想要达成的理想,在达到这个理想之前,我都 会一直改下去。 --



※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 61.224.75.82
※ 文章网址: http://webptt.com/cn.aspx?n=bbs/mud/M.1403528971.A.DC1.html ※ 编辑: laechan (61.224.75.82), 06/23/2014 21:14:10
1F:→ dannielz :地图的想法超赞 可以使地图成为筹码 14.216.16.91 06/24 14:10



※ 发信站: 批踢踢实业坊(ptt.cc)
※ 转录者: laechan (59.126.145.135 台湾), 11/09/2023 16:37:46 string htoa(string map_string,int e) 这个则是我为地图系统新增的函数,它的关键段落在底下.. while(j-->0) { tmp=(s%2)+tmp; // 一直做 s mod 2 的动作 s=s/2; } map_string+=tmp; 从上面就可以想像 tmp 会一直做 "0" "1" 这两个字串的累加。 简单的说,例如底下的字串 str="7680,992,7,0,1020" 做 htoa 之後就能变成像底下这样的字串: map_string="110101010101010010101......" 这东西基本上也只有地图系统会用到。 ※ 编辑: laechan (59.126.145.135 台湾), 11/09/2023 16:52:44
2F:→ laechan : 这只是一种做法,想法类似绝地救援,马克在火星上应用 11/09 16:53
3F:→ laechan : 16位元,让他及地球上的人拼出想表达的字语词句 11/09 16:54
4F:→ laechan : 你可以考虑写看看,or创作其它可简短储存的方法,我认 11/09 16:55
5F:→ laechan : 为纪录玩家在某张地图走过哪里,游戏性应该会高於只 11/09 16:55
6F:→ laechan : 储存它有没有走过什麽地图 11/09 16:55
7F:→ justinj : ok 11/09 16:57







like.gif 您可能会有兴趣的文章
icon.png[问题/行为] 猫晚上进房间会不会有憋尿问题
icon.pngRe: [闲聊] 选了错误的女孩成为魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一张
icon.png[心得] EMS高领长版毛衣.墨小楼MC1002
icon.png[分享] 丹龙隔热纸GE55+33+22
icon.png[问题] 清洗洗衣机
icon.png[寻物] 窗台下的空间
icon.png[闲聊] 双极の女神1 木魔爵
icon.png[售车] 新竹 1997 march 1297cc 白色 四门
icon.png[讨论] 能从照片感受到摄影者心情吗
icon.png[狂贺] 贺贺贺贺 贺!岛村卯月!总选举NO.1
icon.png[难过] 羡慕白皮肤的女生
icon.png阅读文章
icon.png[黑特]
icon.png[问题] SBK S1安装於安全帽位置
icon.png[分享] 旧woo100绝版开箱!!
icon.pngRe: [无言] 关於小包卫生纸
icon.png[开箱] E5-2683V3 RX480Strix 快睿C1 简单测试
icon.png[心得] 苍の海贼龙 地狱 执行者16PT
icon.png[售车] 1999年Virage iO 1.8EXi
icon.png[心得] 挑战33 LV10 狮子座pt solo
icon.png[闲聊] 手把手教你不被桶之新手主购教学
icon.png[分享] Civic Type R 量产版官方照无预警流出
icon.png[售车] Golf 4 2.0 银色 自排
icon.png[出售] Graco提篮汽座(有底座)2000元诚可议
icon.png[问题] 请问补牙材质掉了还能再补吗?(台中半年内
icon.png[问题] 44th 单曲 生写竟然都给重复的啊啊!
icon.png[心得] 华南红卡/icash 核卡
icon.png[问题] 拔牙矫正这样正常吗
icon.png[赠送] 老莫高业 初业 102年版
icon.png[情报] 三大行动支付 本季掀战火
icon.png[宝宝] 博客来Amos水蜡笔5/1特价五折
icon.pngRe: [心得] 新鲜人一些面试分享
icon.png[心得] 苍の海贼龙 地狱 麒麟25PT
icon.pngRe: [闲聊] (君の名は。雷慎入) 君名二创漫画翻译
icon.pngRe: [闲聊] OGN中场影片:失踪人口局 (英文字幕)
icon.png[问题] 台湾大哥大4G讯号差
icon.png[出售] [全国]全新千寻侘草LED灯, 水草

请输入看板名称,例如:iOS站内搜寻

TOP