GameDesign 板


LINE

突然想回文賺個p幣XD 在這種字串的掃描中 絕對不要丟給server去做字串的掃描 應該要在Client端先判定好這個訊息是要幹嘛 然後在封包的起始值給予訊息ID 讓server去判斷這個訊息是否需要解壓 取出其中的內容 或是只是單純的將這封包在轉送給畫面中的人 不然serve光是處理這些有的沒的封包就浪費一堆頻寬跟時間了 最簡單最沒營養的就是對話封包 只要判斷訊息是對話然後取得傳送對象之後 將內容原封不動以壓縮過的資料傳出可以省一點點頻寬也省了記憶體mapping的時間 不過每個人的習慣都不同有的人覺得這樣訊息事件過於龐大 很不好整理 比較喜歡多table去互相索引找出事件 這點就看個人爽了... ※ 引述《green0924 (hmm...)》之銘言: : 請問一下大家,像一般線上遊戲,由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: 122.116.118.21
1F:→ darkflier:剛剛沒仔細看原來是serve傳給client資料XDDD 03/16 19:14
2F:→ darkflier:不過方法都一樣啦不要讓費時間在分析以知資料 03/16 19:15
3F:→ darkflier:只有發出訊息的那個人需要去分析即可 03/16 19:15
4F:推 green0924:所以大大意思是,若常重覆出現的訊息或資料就存在client 03/16 19:16
5F:→ green0924:端..ex: A使用技能X攻擊B,造成10點傷害. 03/16 19:17
6F:→ green0924:資料就只要傳 A atk B,10 這樣嗎? 03/16 19:17
Orz..... 最近在減肥所以沒去吃晚餐就回應你一下好了 訊息的傳送 理論上會有幾種方法 最基本的封包會有 1.message Event ID 2.subID 3.data size 4.data_content 1.代表這訊息的ID 可能是對話可能是攻擊可能是移動....else ex: MESSAGE_TALK = 0 MESSAGE_ATTACK = 1 MESSAGE_GAMEOVER = 2 MESSAGE_PLAY = 3 2.subID就不一定會用到 用到的時候大多是快速的再做封包傳遞的時候使用 例如可能是立即傳送給其他玩家或是檢查之類的訊息 3.就是這包封包整個的size有多大 看到這裡我們可以知道這個封包前面三個資料的大小一定是固定的 所以真正的資料是放在壓縮過的封包裡面 至於壓縮解壓縮的過程就不詳提看個家做法 所以你現在有問題的部分是死在1 你需要的不是去檢查他傳過來的字串 是要檢查他這個ID是要幹什麼的 不過聽你的講法好像你完全不是這樣搞Orz..... 像你所提到的 tag 內容 tag/ 這時候你要做的是把你的tag編一個ID 然後傳送出去 並把內容做好壓縮(或不壓也看端看資料流量) 所以你收到的訊息之後就立刻知道這ID是要幹嘛的 然後就把資料解開去做你要做的事情 以上 不過每個人用法都不同不過都大同小異啦... 如果你相信大家電腦都很好server超級強壯 也是可以直接用字串去判斷現在要幹嘛就是啦XDDD 不過這樣你在判斷那邊可能......會寫到吐血吧 我個人是偏好多table index 這樣在寫成是比較好理解也可以畫出圖讓人一目了然 每個ID互隊的關係... 最後... 我已經四年沒寫過網路程試 搞不好這套已經落伍很久了XDDDDD ※ 編輯: darkflier 來自: 122.116.118.21 (03/16 19:30)
7F:→ green0924:訊息ID..這個是指.. ex: 1--使用技能a, 2--使用技能b 03/16 19:20
8F:→ green0924:109--跟npc xx對話 03/16 19:20
9F:→ green0924:類似這樣的東西? 03/16 19:20
10F:推 NDark:簡單有簡單的作法,難有難的作法.也不一定全部都查表. 03/16 19:21
11F:推 green0924:終於瞭解了,於來是這樣子的用法,這樣就不用逐字分析了 03/16 19:42
12F:→ green0924:謝謝大大的說明囉~^_____^ (這篇板主應該要M起來的) 03/16 19:43







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

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

TOP