2011-10-09 138 views
2

這背後是我的遊戲引擎目前的邏輯:PHP/MySQL的遊戲服務器

  1. 用戶用戶登錄要開始一個新的遊戲,並進入大廳
  2. 尋找一個遊戲空間自由。 (每場比賽最多20人,10分鐘用戶,每10分鐘一次,開始倒計時直到比賽開始)
  3. 當用戶進入遊戲時,遊戲數據庫條目將更新爲用戶的ID。
  4. 交付的有效載荷,以用戶(遊戲信息;例如,題)
  5. 用戶完成遊戲,並將結果發送給服務器
  6. Server檢查結果,工作了誰擁有第一,第二和第三高的得分。爲用戶數據庫條目添加點數,將結果發送回所有客戶端(排行榜)
  7. 遊戲室被毀壞。

這將通過PHP/MySQL與客戶端通過JSON訪問完成。我很困惑如何用這些技術來做第2步和第3步。具體而言,我如何投票滿足要求的房間,即最多20位用戶,10分鐘用戶。如果超過10個用戶說10秒,然後開始啓動或如果20最大,然後開始遊戲?

我想要考慮的邏輯,但掙扎。

編輯:我認爲這是一個有點不公平的關閉這個問題。我並不是要求人們爲我編寫代碼,我要求提供關於所用邏輯的建議。

+1

對不起,但你不能指望任何人爲你想一些代碼。如果您的代碼存在問題,我們可以提供幫助。從頭開始創建代碼不會。 –

+0

@Topener:我不認爲他們要求某人爲他們編寫代碼,而只是爲了實現他們遇到的問題而採取的一般步驟。 – icktoofay

+0

正確,我不是在代碼之後。只是想法的邏輯。 – Nathan

回答

0

我會創建一個在服務器上獨立運行的遊戲邏輯循環(例如由cron開始),監視您的遊戲室(因爲這基本上就是玩家邀請其他玩家可以看到的東西)。

如果房間足夠滿(或完全填滿)玩家,它會更新數據庫中相應的行以表明遊戲已經開始,並保存在哪個時間。

現在,客戶端不斷輪詢一個腳本,比如每秒一次,看他的房間裏的遊戲是否已經開始,以及之前有多少毫秒。如果開始,倒計時開始。您可能不得不跳過顯示「10」,而是從「9」開始(甚至更低),因爲當客戶端在遊戲開始後的第二秒或更多時間收到其投票答案時,所有客戶端都將同步。

+0

每一秒都是太多而且沒有必要。在最常見的情況下,我會說5秒,但實際上是10. –

+0

我需要使這個儘可能可擴展。我開始考慮PHP/MySQL是否適合這一點。 – Nathan

+0

不要過早優化。 PHP和MySQL的可擴展性如何,但取決於實現它的可擴展性。 – CodeCaster