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/m.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燈, 水草

請輸入看板名稱,例如:Gossiping站內搜尋

TOP