Client Server 人物移動網路連線
完成了單一人物移動, 與多人物在同一畫面中移動之後, 我來試試看如何建立 Client Server 架構.
簡單說, 就是建立一個陽春的網路連線遊戲, 可以讓不同的電腦, 執行相同的人物移動程式, 並同時可以看到其他的人物的移動. 十分簡單的概念, 卻花了我許多時間學習試作.
程式執行結果: 人物移動 & Server端輸出
動畫效果如下:
http://www.youtube.com/watch?v=vaSIXC2HbHA
[ 動畫效果影片: 上方為移動者, 下方為另一用戶的視窗觀點. ]
先來看看我的簡單硬體架構:
(1) 兩台 Acer 筆電 ( 執行”人物移動”的 client 端 ).
(2) 一台 Acer ASPIRE ONE 小筆電 ( 執行”人物移動”的 server 端, 作資料交換).
[ 我的簡單 client server 硬體架構, 全部使用”無線網路”. ]
首先, server 小筆電的輸出如下:
[ server output 輸出: 兩組IP, 傳送接收資料. 約每17ms送一筆資料. ]
client 筆電的輸出如下:
[ 人物移動的 Client 端: 兩個人物, 顯示ID與人物座標. 動作與姿勢資料也同步傳送. ]
傳輸的資料內容很短, 主要是人物的位置與動作:
Byte 0 : player x (座標)
Byte 1 : player x (座標)
Byte 2 : player y (座標)
Byte 3 : player pose (姿勢)
Byte 4 : player direction (方向)
Byte 5 : player ID (人物ID)
由於資料傳輸量超少, ASPIRE ONE 當作 server 就夠用啦! Client 端需要大量OpengGL運算, 所以用普通筆電. 但是如果用 ASPIRE ONE 執行 client, 單機使用還順暢ok; 可是一連上 server 的連線狀態, 30秒馬上就卡死. 所以, 基本的硬體還是得有水準以上啦.
( PS. 也有可能是我寫得很差, 很耗電腦資源的緣故. 苦笑… )
結論與心得
(A) 寫 “網路遊戲” 真不簡單, 尤其是穩定與好玩的遊戲, 更難.
(B) 網路連線不穩時, 如何處理資料以維持 “穩定的資料” 與 “畫面順暢效果” 很難. 需要許多”聰明”的server/client端資料處理與行為預測. 我還在想如何解決畫面不順暢的問題….
(C) 總之, 自己DIY一次之後, 才知道痛苦所在. 也再次感謝網路上的高手分享與指點.
- 美國的債務鐘 滴答! 滴答! - 2023-01-30
- 政客經典幹話篇 2023 - 2023-01-06
- 政客經典幹話篇 2022 - 2022-05-28