2012-11-22 99 views
5

我正在爲我的遊戲創建服務器,我認爲嘗試scala和akka可能是個不錯的主意。我快速閱讀了文檔,並且提出了一個架構的概念。但在做任何事情之前,我想我可以問問更高級的用戶,如果我走的是一條好路。Akka和遊戲服務器架構

基本上我的遊戲服務器從客戶端接收到帶有連接的Array [Byte]:http://backchatio.github.com/hookup/(websocket!)並承載了一定數量的「party」。它應該使用sBinary將Array [Byte]解碼爲更多結構化的數據,然後通過將結構化數據與它應該發送的參與方相關聯來解釋它們。所以我來到這個架構:一個主角色接收數組[字節](master!arrayByte),並將它們委託給專門的角色來解碼它們,並將它們作爲更多結構化數據發送回主控制器,然後當主控制器接收這些結構化數據,將它們委派給理解結構化數據並且更改軟件事務內存映射[Id,Party]中保存的相應遊戲的狀態的Interpreter worker,然後將其收到的訂單發送回Checked(訂單:訂單),如果當事人表示這是對客戶有效的訂單,現在可以認爲他的訂單是正確的,並在他自己的版本中解釋。

+0

而不是STM,爲什麼不使用一個演員每場比賽,並在演員的遊戲狀態?我目前正在編寫帶有websockets,play和akka的國際象棋遊戲,這對我來說非常合適。 –

回答

1

也許你想看看Akka IO來利用你的數據包的非阻塞IO和Akka Finite State Machine來實現你的遊戲狀態。

他們可以派上用場,爲你想做的事情。

+0

我真的需要websockets,因爲我的android應用程序需要它。我真的不明白tu如何在這裏使用FSM,請賜教。 – Atol

+0

我現在正在閱讀'hookup'對於標準高效協議有其自己的好選擇,所以我想你對'Akka IO'說得對。關於'FSM',相反,我認爲它可以用來實現遊戲狀態而不需要'STM',因爲狀態一致性是由'FSM'參與者的模型保證的。但是也許你已經知道'Akka FSM',並且有充分的理由選擇它。 –