我開始製作多人遊戲,但由於我沒有經驗,我嘗試過不同的方式,但有些東西對我來說並不合適。 所以,我真的需要一個關於我應該使用哪種平臺/工具/語言/技術的建議。 我必須說我不相信諸如:Photon,AppWrap,Skiller,Gamooga等等。我不認爲他們的規模很大,不會太貴,或者他們太大(我不是指大小,我指的是他們有多少東西,我不需要)滿足我的需求。構建基於回合的多人遊戲服務器
首先,我將描述簡化的遊戲會話過程。
- 三名球員在開始遊戲會話
- 每個玩家收到的問題,應該在10秒鐘內應答。
- 當玩家回答時,他應該能夠看到任何其他玩家已經給出的答案(如果有的話),並且他應該能夠在給出答案時立即看到答案。基本上,任何答案都應該由其他客戶實時接收,但只有在我們回答之後(以避免作弊)。如果時間到了,那麼沒有回答的人將不會收到分數,下一個問題就會發生。
- 決定勝利者並進入下一個問題。 N輪結束後進行遊戲。
其次,我會解釋一些我考慮過的要求。
- 遊戲應該在iOS/Android/Web上運行。這讓我別無選擇,只能使它基於HTTP。
- 我尋找了我真正喜歡的Google Cloud Endpoints。它有iOS/Android/JS SDK,Google Cloud Platform有Google BigQuery,還有很多其他很棒的東西。 但,因爲我需要實時答案交付我不知道是否適合(有渠道API,但沒有客戶端SDK的iOS和人們說它不是很好)。
- 然後我查找Node.js和長輪詢(客戶端的AFNetworking),但它很難管理。我需要爲客戶端提供遊戲狀態更新(並且我需要發送增量)。這樣我需要爲每個玩家分別跟蹤所有更改。當玩家連接時,我應該檢查是否有任何改變;如果它立即發送;如果不是,那麼聽'改變'事件然後發送。在最後的代碼看起來很尷尬,很難理解,我不知道如何做正確的。有socket.io應該使服務器端的東西變得更好,但又沒有客戶端的iOS SDK。
我不知道該從哪裏出發。任何幫助將非常感激。
>您可以在客戶端有一個預測計時器,但服務器需要是計時器的權限以避免作弊。但如果一個客戶端有70毫秒的延遲,而其他客戶端有500毫秒的話。這意味着首先會處於劣勢。有什麼方法可以解決這個問題,而且不允許作弊嗎? – bobby 2013-05-12 16:41:21
沒有優勢,如果不使用預測,遊戲UI可能需要一點時間才能指示會話結束,但服務器在計時器結束後將忽略任何答案。您的互聯網可能會非常緩慢,以致您的答案在計時器用完之前可能無法進入,但您必須考慮到某個地方的滯後時間。如果定時器在客戶端上,則很容易破解。 – 2013-05-12 17:09:40
啊,對不起,我忘了說。問題的答案是數字。有三名球員,並根據他們的答案每個將獲得第一,第二或第三名。如果沒有人是正確的,那麼第一名會得到那個答案與最接近的答案。如果沒有最接近的答案,那麼第一名將獲得首先回答的玩家。所以,在這種情況下,延遲較小的玩家會佔據優勢,對吧? – bobby 2013-05-12 20:58:08