我已經開發了一些使用服務器端編程(PHP和C++)和Flash(用於GUI)的在線遊戲(如國際象棋,跳棋,風險克隆)。現在,我想開發某種遊戲門戶(如www.mytopia.com)。爲了做到這一點,我必須決定什麼是構建我的服務器邏輯的好方法。關於多種遊戲服務器的建議
起初我想在爲每個遊戲編程分離的遊戲服務器。通過這種方式,每場比賽將是一個孤立的程序,爲客戶打開一個特定的端口。我還想過爲每個遊戲室創建不同的服務器(每個遊戲室允許同時連接100個客戶端)。當然,我會使用數據庫來鏈接一切(如高分等)。
然後,我想這不是構建遊戲門戶服務器的最佳方式。我正在閱讀關於線程編程的知識,我認爲這是最好的方式。所以,我想像做一個連接線程那樣只會監聽新的連接客戶端(這樣每種類型的遊戲客戶端將只連接一個端口),驗證這個客戶端(登錄),然後將這個客戶端轉移到特定的遊戲線程(如國際象棋線程,跳棋線程等)。我將使用select(或變體)來處理異步客戶端(我猜這次「每個客戶端一個線程」不適合)。這個結構似乎是最好的,但我如何在線程之間進行通信?我已經讀過關於競爭條件和全局作用域變量的信息,因此一種解決方案是在每次更改時都需要通過連接線程或遊戲線程鎖定全局客戶端數組(向量或映射)(新連接,註銷,更改狀態等)。這樣對嗎?
有沒有人在這樣的事情?任何建議?
非常感謝