2010-10-08 49 views
6

我想爲Game Center構建iPhone遊戲,並且目前正在研究它的所有服務器部分。我通過學習最好的例子,我有一個很難找到的演示簡單的遊戲服務器的任何實例...簡單遊戲服務器的代碼示例

  1. 如何數據進行格式化和發送到服務器,它是如何獲得
  2. 如何認證/接收,以避免玩家作弊正在發送數據等
  3. 如何遊戲服務器代碼與DB
結構沿

我想建立使用Ruby遊戲服務器on Rails的,儘管我會解決任何使用任何框架的例子,以瞭解這些con接受工作。有誰知道任何書籍或在線資源已經涵蓋了這個或顯示了一些如何構建遊戲服務器的示例代碼?

我不得不認爲大多數iPhone上的多人遊戲需要玩家服務器,但我似乎無法找到任何討論如何構建遊戲的資源。我發現討論構建多人遊戲(包括蘋果公司的文檔)時說的同樣的東西,「開發一款遊戲服務器超出了本書的範圍,但我們將重點關注連接到這種服務器所需的客戶端代碼「。

非常感謝您的幫助!

編輯:一些什麼,我試圖完成更多的細節......

我想發展兩個球員(可能更多)的遊戲,當用戶競爭解決比其他玩家更快。比賽制作將由Game Center處理,但我需要一個遊戲服務器來啓動/管理遊戲並將結果存儲在數據庫中。整個過程將是這樣的......

  1. 遊戲中心對兩個玩家
  2. 玩家數據被髮送到服務器初始化一個新的遊戲
  3. 遊戲的開始是由同步服務器
  4. 遊戲開始時每個玩家試圖解決這一難題
  5. 當任一玩家完成,服務器一旦雙方球員完成通知
  6. ,服務器的響應結果,結果存儲在服務器上。
+1

你能給我們多一點細節嗎?你在開發什麼樣的遊戲?你只需要配對?整個遊戲是否處於服務器狀態,還是iPhone需要計算一切?同步如何重要你需要每10ms更新一次嗎? 1000毫秒?或者它甚至是一個全面的遊戲?還要記住,RoR仍然是一個面向請求的框架,而不是通常用於長期套接字連接的東西。我最近在Node.js中構建了一個,效果很好。 – 2010-10-08 17:30:31

+0

謝謝伊沃,我只是補充了一些細節。我會研究Node.js,因爲我一直想用這個框架來玩。你能否給我一些建議,讓你知道如何去做你所做的事情? – BeachRunnerFred 2010-10-08 18:27:28

回答

4

好的,在閱讀完您的編輯之後,Node.js應該很好地完成這項工作。

關於你的觀點:

  1. 我不知道配對工程究竟是如何(猜你得到一對密鑰左右來驗證請求),但它應該不難實現,無論編程語言。簡單:設置一個服務器,處理連接,保存一個正在運行的遊戲列表,爲每個遊戲記錄狀態(玩家,時間等),這應該是最大的(取決於你的消息使用..)150-200線

  2. 只需發送某種準備事件的每個玩家在特定遊戲中,當你認爲那場比賽做好準備(像其他人感動了:「我已經準備好」按鈕左右)

  3. 確定,一些提示這裏:

    1. 跟蹤服務器上剩餘的/時間的流逝,並將其發送給玩家,定時器下車很快(我有4-5秒關在短短約3分鐘)

    2. 爲了防止cheati ng,驗證服務器上的移動,這在應用益智遊戲時應該相當容易。你也可以檢查每次移動之間的時間間隔,所有低於50ms的應該是可疑的,但主要取決於難題的難度。

  4. 通過檢查服務器上的移動。這是很容易的事,你不必依靠客戶端上送你一個「看我做」的消息。

  5. 再簡單一點,只需發送事件與隨附的數據並將點記錄到數據庫。

最重要的一點是明顯的預防作弊的,在益智遊戲,該解決方案可以通過計算機來容易解決的情況下,這是不可能的,以防止它完全。雖然,上面的提示可以讓它更難。

但請記住,當遊戲很簡單時,無法阻止人們在高分上作弊,因此在遊戲中構建越來越多的保護措施是沒有意義的。專注於遊戲玩法,使其對人類有趣且簡單複雜和不可預測的電腦

在數據庫的情況下,呃...我想你可以用MongoDB來做這件事,但是我還沒有在Node下玩過。

哦,如果你想有一個印象,你可以用Node.js的做什麼這裏是我建立的遊戲:所有的邏輯在服務器上運行
http://github.com/BonsaiDen/NodeGame-Shooter

,客戶只需畫出的東西他們知道,我有一個可玩的原型,並在兩個晚上跑步。

+0

這就是我喜歡的原因!我非常感謝你的努力,我現在要開始挖掘! – BeachRunnerFred 2010-10-08 23:44:26

0

我最近構建了一個客戶端服務器應用程序,服務器端基於Netty。有很多很好的例子可以說明如何在他們的網站上工作。事實證明,它也表現良好。對於一款遊戲,你也可以考慮使用Google ProtoBuffers--這方面的一個例子也在Netty網站上。

0

大家知道,GameKit API包含的功能允許您將數據發送給遊戲中的其他玩家。您可能需要考慮使用它,因爲它可以爲您節省大量從頭開始構建遊戲服務器的工作,並且可以利用Apple經過充分測試的網絡基礎架構。