2016-11-28 43 views
1

首先,我是一位自學成才的程序員/開發人員,對於一些顯而易見的問題感到抱歉。與編程相比,這個主題更像是一個設計問題。用node.js和socket.io爲手機遊戲構建簡單的後端

我有一個Android遊戲在Play商店,我使用第三方後端和網絡解決方案。現在我想創建自己的簡單後端和網絡解決方案。爲什麼?因爲:

  • 添加免費的 將(服務器端)
  • 移動gamelogic從客戶端到服務器端的
  • 學習一下後臺開發
  • 學習有關網絡(未P2P新功能的能力,所以沒有打孔)
  • 在服務器端的開發積累經驗和技術

爲了您的信息,我的遊戲是某種黑桃。

現在我的問題:

我想使用的Node.js,socket.io和MongoDB創建我的後端系統。

這些是我想要做的:

網絡:

  • 從服務器到客戶端和發送剛反之亦然
  • io.to(插座#ID).emit( '嗨' )(服務器到客戶端)
  • socket.Emit( 「JoinRoom」)(客戶端到服務器)

後端功能:

  • 用戶認證
  • 註冊玩家信息(姓名,唯一的ID,得分,日期 創作等)
  • 每次
  • 更新分數註冊的朋友列表,以便他們可以一起玩
  • 等。

什麼會我gamelogic每個房間做(ATM我gamelogic是完全以客戶端,所以容易受到黑客和作弊):

  • 在空間中創建的,等待10秒鐘,以便其他人可以加入
  • 當10秒已經結束,調用處理該啓動 過程
  • 隨機化
  • 52甲板卡的功能
  • AI選擇賭注
  • AI選擇王牌
  • AI播放時,它的輪到他
  • 確定誰擁有下一回合
  • 決定誰贏得了
  • 更新分數數據庫
  • 當比賽結束後打開空間,這樣的人可以離開, 加入遊戲
  • 等等

是否有可能與正創建此ode.js,socket.io和mongoDB?如果是的話,用node.js,socket.io和mongoDB做這件事情還是很明智的,還是用其他技術做得更好?

或者我應該使用Node.js和受socket.io爲網絡部分,另一TECHNOLOGIE(例如asp.net)爲遊戲邏輯是什麼?我讀過node.js不擅長處理CPU繁重的任務,我認爲gamelogic部分是CPU繁重的。

也許有些人可能想知道我的系統有多少玩家支持?那麼atm我每天有20個CCU,但是我的遊戲在商店裏用了3個星期,而且我並沒有提升很多,因爲我首先需要一個強大的後端系統。我希望我的後端能夠處理10000個CCU,也許我永遠不會達到它,但這是我的目標。

我希望我清楚我想要什麼,我們希望你們能幫助我。如果我想要做的事情可能和有效,我已經找了一週。

+0

非常寬泛的問題,儘管描述很長,但可能沒有足夠的細節。由於遊戲邏輯的緣故,您擔心服務器受CPU限制,但您對其複雜性的細節很少。此外,併發用戶在這裏可能不是一個好的措施,因爲大部分工作只是在「輪流」完成。更好的衡量標準是每個時間段的轉數...... – jcaron

+0

@jcaron最重要的任務是在遊戲開始時,以及玩遊戲。 - 在開始時,由52張卡組成的陣列進行洗牌(字符串排列) - AI紙牌,最好情況下AI通過他的套牌1次(最多13張卡組成),最差4次。 因此,從開始到開始的1場比賽: - 最多4輪最多10,在贏得最多撲克牌的玩家之間投注 - 贏得投注的玩家選擇王牌,所以在這裏轉1圈。 - 然後遊戲開始,每個玩家必須玩,直到他的套牌完成。 所以每場比賽總共最多63回合。 –

回答

0

NodeJS是這類事情的最佳選擇。大量的併發IO,相對較短的突發。您絕對可以使用您列出的技術製作可擴展的服務器端。

那場比賽邏輯可能會很複雜,但我懷疑你甚至會發現你需要實現一個紙牌遊戲規則並檢查CPU峯值。在每個階段,你可能會檢查5-10個規則,也可能遍歷52張數組(兩次!)。不是問題。對於CPU綁定任務,請考慮「1000次迭代」(圖像處理?)或「數學計算」(過度使用斐波納契?)。

我會指出actionherojs作爲節點服務器,內置聊天功能(用於您的遊戲室通信),內置任務(用於10秒超時和AI輪流)以及一個用於啓動的良好項目結構一個新的NodeJS應用程序從頭開始。

玩得開心!

+0

謝謝你的回答,並確認這是可能的。現在我把你的答案看作是我的錯誤,我會等待幾個小時才能接受它,也許別人證明不了。 –