我正在設計一個小型足球遊戲,其中游戲引擎(計算玩家移動等)在服務器上運行,渲染和鍵盤/鼠標處理由客戶端完成。對於服務器(哈斯克爾)我想用如何在Haskell中最好地同步遊戲引擎和網絡服務器?
- Happstack客戶端 - 服務器通信
- 揚帕/ Reactimate的遊戲引擎
每20ms左右,客戶端應該發送的鍵盤和鼠標事件通過HTTP GET發送到服務器,接收當前的遊戲狀態(JSON編碼的球和玩家位置)並渲染它。我正在考慮在遊戲循環,輸入處理和渲染中使用SDL基礎架構。
服務器基本上運行兩個線程:happstack服務器接收HTTP GET,將鍵盤/鼠標命令放入隊列中,從第二個隊列中讀取當前的遊戲狀態並應答HTTP GET請求。
第二個線程運行Yampa遊戲引擎,如Yampa Arcade paper中所述:遊戲引擎儘可能快地計算新一輪(無滴答)並將結果放入渲染隊列中。
普遍質疑:這是否看起來像一個可行的架構?
具體問題:如何設計服務器端渲染隊列:是否會爲此使用Chan?如果遊戲引擎的平均速度比客戶端的「滴答」速度快,那麼隊列會變得越來越長。這怎麼可能與Chan處理?
您的建議非常受歡迎!
非常感謝,只是我一直在尋找的輸入!至於服務器端渲染:我想讓遊戲引擎計算玩家和球位置(只有X,Y,Z座標),並將它們通過渲染隊列和HTTP發送到客戶端。我仍然需要通過你的鏈接工作,但它已經在我看來像這是已經走過的死路... – martingw 2011-02-12 11:02:47