看板 GameDesign 關於我們 聯絡資訊
請問一下大家,像一般線上遊戲,由server端傳資料給client  ,都是怎麼做字串的分析的呢?  我現在都是用很笨的做法,逐字去檢查以取得指令的前後端,  再由此取得指令與參數,比如說server端傳給client這樣的字 串.. [cmd]kill monster 1[/cmd] 先計算字串長度,再用迴圈跑,刪除掉[cmd]跟[/cmd],就可  以得到 kill monster 1,其中 kill是指令, monster 1 是  參數,由此再做動作。 ex:   for(i=0;i<sizeof(s);i++){ if((i+4)>sizeof(s)) break; if(s[i..(i+4)]=="[cmd]") start=i; if(s[i..(i+5)]=="[/cmd]") end=i; } 感覺這樣的方法效率滿差的,尤其當資料量大的時候..XD 不知道有沒有其他更好的方法呢?   另外,字串分析時,要是玩家在用聊天功能有出現[cmd]這樣  的系統字,字串分析就會出問題,所以玩家輸入部份,我的  方法是限制不可使用系統字,不知道線上遊戲都是怎麼做的? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 220.133.117.77
NDark:玩家談話 統一套 [TELL] 關鍵字不就好了? 03/16 18:49
asoedarren:建議command放header 不要跟資料混在一起 03/16 18:52
green0924:回nd大,這樣的話[tell]也要限制玩家聊天時不可使用.. 03/16 18:55
green0924:as大說的不太瞭解,方便舉一些例子嗎..@@ 03/16 18:56
green0924:我現在都是用 [cmd]指令 參數(資料)[/cmd],這樣才有辦法 03/16 18:57
green0924:得知傳遞的東西到哪邊結束. 03/16 18:58
darkflier:這種東西要先在client判斷好 然後直接送訊息ID就好啦 03/16 19:04
darkflier:不要加重server的負擔 03/16 19:04
NDark:玩家按下送出 由系統統一掛上[TELL] 03/16 19:10
NDark:系統的指令送出時統一掛上 [SYS] 03/16 19:10
NDark:字尾就一律由系統掛上[END]<---只有最後一個才是真的 03/16 19:11
NDark:規則訂好除非protocol被破解(有疑慮就要另外在加秘) 03/16 19:12