Re: 格鬥類的遊戲(小朋友齊打交)
說實話我不內行 沒有動手implement過
不過沒人回這篇 我就來拋磚引玉一下
※ 引述《kangta198109 (Ryan)》之銘言:
: 想作個JAVA線上格鬥遊戲,類似好多年前的小朋友齊打交
: (簡易版)下面是所想的架構,現在略嫌粗造,不知道可不
: 可以大家給我點意見,我很弱需要大家的意見,多謝囉^^
: Client Server
: ________ _________
: | | Real Time Socket | |
: | |--------------------> | |
: | |--------------------> | |
: |________| Nonreal time Socket |________|
: //Real Time Socket:即時資料
: //Nonreal time Socket:非即時資料
不知道你的real-time和non-realtime是指什麼意思
我想應該是reliable(ex. TCP)和unreliable(ex. UDP)吧..
: =========================================================
: 物件:
: (Server)
: CommandCatcher CommandPool RealTimeSocket NonrealTime Socket
: __________________ ___________ 儲存指令_____________ __________________
: | 一次取出1~n個指令|<->|指令Queue |<---------| | | |
: |每5ms存取一次 | |__________| ---->|___________ | |________________|
: |__________________|--------------------| /|\ /|\
: /|\ 指令處理後資料回傳 | 處理資料回傳 |角色座標同步
: \|/ | 指令傳入 |(對話)
: CommandProcess =====================================
: ___________________ | |
: | 碰撞處理 | \|/ \|/
: |更動角色狀態與座標 (Client) (Client)
: |_________________| RealTimeSocket NonRealSocket
: ==========================================================
對話用TCP傳, 指令用UDP傳 這樣的idea是對的
網路動作遊戲很重要的一點 就是動作部份的傳輸要low latency
用UDP來傳輸一定是比較好的 但還是要面對packet loss和lag的問題
當你該收到一個封包而慢了三秒 或這個封包整個掉了
就需要一些prediction, recovery, synchronous的機制
我認為這些才是連線動作遊戲最重要的地方
(玩連線遊戲的時候, 我都會去揣摩一下他的同步機制是怎麼做的
像CS有時候lag會瞬間移動回朔
星海遊戲中可以調network latency參數, 但網路越lag你的兵會越慢收到命令
War3感覺在這部份有點改進 不知道是不是幻覺)
印像中小朋友齊打交II (幾年前的那個 非網路版) 的同步就實作的很差
區網連線還會lag 不知道最後的版本有沒有改進
我覺得連線動作遊戲和一般遊戲主要的差別就是要注意這個吧..
: 以上是簡略所想,不知道這種架構可不可以去實作?
: 好不好?
: 如果不好,非常不好意思,希望大家多體諒可能我想的並不周到
: 多謝囉^^
拋磚引玉一下 請大家補充指正
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.114.88.16
推
02/12 22:23, , 1F
02/12 22:23, 1F
推
02/13 01:32, , 2F
02/13 01:32, 2F
→
02/13 01:32, , 3F
02/13 01:32, 3F
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 2 篇):
GameDesign 近期熱門文章
PTT遊戲區 即時熱門文章
10
38