2010-01-29 17 views
-1

使用PHP和MySQL(1,000多個玩家)可以爲iPhone創建mmorpg嗎?我正在考慮使用MySQL來存儲所有玩家信息(名稱,用戶名,密碼,位置,位置)。然後,我會通過php訪問這些數據(將位置傳遞給php頁面,並返回該區域的所有玩家信息)。 PHP和MySQL對於類似的東西足夠快嗎?如果不是的話,後端會有什麼其他解決方案?另外,VPS(http://www.linode.com/)速度不夠快,還是應該使用專用服務器?PHP + MySQL iPhone MMORPG

謝謝

+1

我們在這裏談論的是多大型多人遊戲? PHP和MySQL只與它們運行的​​硬件一樣強大。雖然答案是簡單的。它們可能足夠快。 – echo 2010-01-29 07:29:53

+0

我正在考慮1000多名玩家。如果遊戲真的很受歡迎,它會很容易擴展嗎? – iAlexTsang 2010-01-29 15:26:14

回答

3

好吧。因爲你 - 就像賈斯汀指出的那樣 - 很難回答這個問題,並沒有提到遊戲的規模。

但是,我對你的問題的回答是'是'。 PHP和MySQL肯定能夠運行這樣的系統。更相關的問題是它是否是正確的選擇 - 對這個問題的答案很可能不是正確的選擇。

MMORPG遊戲通常是相當實時,這將意味着每個客戶都會有幾個請求/秒到你的服務器。即使您使用保持活動的HTTP連接等,我相信您會使用基於非HTTP的方法獲得更好的結果。

你當然可以使用PHP的服務請求,然後用JSON或類似的格式和他們在客戶端對數據做出反應。不過,我會選擇一種完全不同的編程語言,比如C或類似的,因爲MMORPG具有的延遲要求。

我不是一個遊戲專家或C專家,所以這些只是我的卑鄙的擔憂。

+0

啊,好的。我正在考慮使用PHP來處理數據請求。我要麼去與JSON或XML。 – iAlexTsang 2010-01-29 15:36:15

0

我會說去吧。我已經看到了幾個由PHP/MySQL組合支持的MMOG,並且它們運行速度非常快(擁有50 000多個活躍播放器)。儘管你應該忘記使用共享主機(如果你正在考慮它)(至少當遊戲獲得超過1000名玩家時)。

另外,您應該考慮使用一些緩存技術,如APC,並在db層中實現memcached支持。這會有很大的幫助。

它甚至更好,如果你可以使用專用服務器爲PHP(lighttpd的),數據庫和靜態內容(圖片,Flash等)(Nginx的)。這將分配機器之間的負載,靜態內容不會因爲IO通信而終止您的MySQL。

+0

所以一個http://www.linode.com/ vps不夠快? – iAlexTsang 2010-01-29 15:34:00

+0

這是可能的,但你應該瞄準720和更高的計劃。如果你需要性能,你需要大量的RAM和/或緩存。 我會說在一個共享的主機上運行一下,看看它使用了多少資源(請諮詢您的託管服務提供商,如果他們可以給你這樣的統計數據),然後決定你想花多少錢在你的VPS /專用,並相應地檢查優惠。 – bisko 2010-02-01 07:14:31

1

用PHP/MySQL的Definetly去,使用類似eAccelerator在緩存和優化你的代碼,並託管您的所有在CDN靜態內容(亞馬遜S3想到的),應該給你足夠的速度。

2

很明顯,這取決於你的遊戲。它可以爲1,000個用戶工作嗎?在一個盒子裏?可能不會。在一個小羣集上?也許,如果你保持簡單。然而,一旦它變得流行起來,你已經投資了一個非常難以管理的平臺。你將會遇到與那些困擾大型網站的惡夢般的惡夢,但由於用戶之間的交互性而更加困難。

即使簡單的回合制遊戲(認爲Facebook & Myspace應用程序)使用LAMP後端存在大規模問題...並且它們遠不及實時。

的MySQL根本不夠快,無法處理事務負載(寫入&複製)。幾乎沒有任何數據庫。你需要將你的狀態保存在RAM中,然後按計劃批量寫入。這種技術最終會撞牆,然後您需要將您的數據庫拆分爲完全隔離的集羣。

讓人們在孤立的數據島上彼此對戰變得困難,除非你獲得了非常有創意的東西。這是memcached無法解決的問題。你可能也需要分解這些。

熱門在線遊戲在其後端使用自定義流式傳輸協議。魔獸世界根本不可能存在,如果它由PHP驅動。如果雙方都需要每秒擊中網站以獲取更新,則無法讓兩名玩家互相對戰。如果運動動畫化,則滯後(最多)會是生澀的。您需要雙向通信協議。

我強烈建議看看分佈式消息平臺。也許甚至是一種爲並行化而建立的語言,就像Erlang一樣。