2012-02-01 225 views
0

我想製作一個棋牌多人遊戲,1人對1人遊戲。多人遊戲玩家2人遊戲

我將使用動畫和客戶端和檢查,如果這些舉措是正確的,記錄每個玩家動作到一個數據庫,決定優勝者並給予一定的學分贏家服務器端語言閃光燈。

我的主要編程語言是PHP,我會根據我的指示讓別人做Flash工作。

我想知道是否有人嘗試過這樣做,或者如果您有任何教程,指導,要遵循的步驟開發P2P遊戲的時候?我希望能夠有效地做到這一點,並且能夠在具有512個RAM的VDS上支持至少100個玩家。

我打算讓遊戲的工作是這樣的:

1)初始化像學分變量,Flash客戶端的內線球員的名字,從PHP

2)檢索它們後啓動遊戲

3)如果我是player2並且player1正在考慮做出決定,則flash客戶端會向PHP文件發送請求以檢查數據庫,如果player1做出任何決定。如果是這樣,這將是輪到我做了決定,移動一塊

4)當我的輪到,不再要求再發送到PHP,直到我想移動的一塊。當我嘗試這樣做時,它會發送一個請求,PHP會檢查我的移動是否有效,並返回一些閃爍將用於顯示錯誤或將指針移回播放器1的變量。

遊戲還會有一個計時器這將與PHP同步。每個玩家可以認爲20秒做出移動。

1)對於我的實現有什麼建議嗎?我在尋找什麼樣的建議來提高效率並減少服務器負載,並且如果有人對類似項目有過任何經驗,他們是如何做的,或者他們會怎麼做它呢?

2)我的實現週期性的HTTP請求的心不是一個好主意,因爲我知道,服務器可以變成過載,我想知道,如果有人能提出任何替代方案,但安全的選項。同時100個用戶將意味着大約100個HTTP請求/秒。這是VDS可以處理好幾天的數字嗎?


後來編輯:

,我對這個職位得到的答覆後,我在等待轉會時來到的是使用套接字而不是HTTP請求的每一秒會是最好的主意,用的結論在對面的球員。

我的遊戲將有100張桌子供玩家使用,每個桌子有1個通訊插座和1個端口。所以1個100端口的插座。當遊戲開始併發送初始化變量時,PHP將通信以刷新表的套接字和端口。

我打算使用閃存來偵聽套接字服務器,看看對方玩家必須移動時會發生什麼。

當我移動時,Flash會檢查移動是否有效,然後將數據發送到PHP。 PHP將返回OK或NOT,並且還將更新套接字端口上的數據。

關於套接字,林不知道JavaScript將是一個很好的選擇,所以我想着PHP套接字或JAVA套接字。

由於熟悉該語言,PHP套接字似乎是我的第一選擇。 我的第二個將租用smartfoxserver,我的第三個將使用Player.IO的服務。 我打算創建一個非常好的遊戲並出售它。圖形已經完成,他們看起來很棒。最難的部分就是高效並且容易安裝。


謝謝你的時間!問候

+5

'我想知道是否有人試圖這樣做'試圖創建一個國際象棋遊戲? – 2012-02-01 01:43:22

+0

是的,但我給了我的項目更大的描述 – NVG 2012-02-01 01:51:24

+0

遊戲必須是安全的,並與服務器通信,這將檢查是否每一個舉動是正確的,更多。 – NVG 2012-02-01 01:57:39

回答

2

像這樣的遊戲的服務器負載應該是非常小的。如果你使用flash,我會利用套接字對象,並打開一個套接字到你的服務器,這樣你就不需要糾纏於什麼已經改變的問題......它會在/如果值得注意的話。 否則你的計劃是一個很好的計劃,所以,你可能不得不問一些關於你被困住的事情的具體問題。

如果您真的想減少服務器負載,請在閃存客戶端寫下國際象棋邏輯,並讓IT人員決定嘗試移動(由玩家進行)是否非法,或者玩家是否丟失或使用了服務器嚴格用於消息中繼和數據存儲。

+0

嗨,遊戲邏輯將被寫入閃存和服務器。我無法相信任何來自閃存的數據。任何人都可以模擬我的客戶端,或反編譯它併發送惡意數據。套接字似乎是解決HTTP請求的問題。 – NVG 2012-02-01 12:16:48

2

根據您的可用性設計項目有時是一個錯誤,例如PHP知識和對具有512 MB RAM的服務器的訪問。有很多項目你應該首先考慮你的資源,但是一個獨立的第一次遊戲項目不是其中的一個。

即使您的主要語言是PHP,您也不應該自己限制自己在Flash部分上工作。另外,使用網絡服務器和數據庫作爲多人遊戲的通信方式會導致一些非常笨拙的行爲。

您不受VDS的限制。您可以在Amazon EC2上使用微型實例,爲free一年。如果從頭開始設置EC2服務器似乎令人望而生畏,那麼整個互聯網上都有tutorials,可以讓您從開始到結束。

遊戲的前端可以用Javascript或Flash AS3編寫。有很多遊戲開發庫可用於這兩個。 Flixel,FlashpunkPushButton是免費的AS3遊戲庫。 MelonJS是一個Javascript/HTML5遊戲庫。他們都有豐富的文檔和良好的社區。

可以使用node.js和使用socket.io來處理你的遊戲通訊,即使你不知道什麼包寫服務器後端 - 或者,如果你想付出一點錢,讓你可以使用類似Player.IO外部服務部門擔心這一點。

如果您正確編寫後端,一百個用戶將不會成爲您的服務器的問題。成千上萬的人需要考慮新的硬件。

既然您正在尋找一般遊戲製作建議,請開始閱讀關於#AltDevBlogADay等博客的文章。你會從其他熱衷於遊戲的人那裏獲得很多有關設計的見解。

+0

嗨,你的回覆是我正在等待的東西。如果Id仍然使用PHP在開始時發送初始化變量,然後將JAVA用於服務器端和實際的遊戲邏輯(計算移動是否有效,決定贏家),並使用JAVA套接字與Flash進行通信玩家移動。這會使應用程序足夠強大,我會說。 – NVG 2012-02-01 12:09:04

+0

關於套接字。我的知識是,PHP也可以使用套接字,但我不太瞭解它們。我知道這是一個愚蠢的問題,但是我必須爲每個遊戲桌面打開一個套接字嗎?並且在遊戲開始時使用PHP將套接字傳遞給閃存? – NVG 2012-02-01 12:19:16

+2

您只需爲每個客戶端使用一個套接字。客戶端應該有一個用於發送和接收的連接對象,您可以使用服務器的地址進行初始化。如果您打算爲您的服務器使用PHP套接字,那麼您將不會使用像Apache這樣的Web服務器來提供該代碼 - 您將使用PHP編寫自己的服務器。閱讀本教程以獲取更多信息:http://devzone.zend.com/209/writing-socket-servers-in-php/但是,如果您不熟悉以這種方式使用PHP,我仍然推薦使用node.js 。有很多很棒的教程可用。 – 2012-02-01 19:13:16