2009-08-10 53 views
0

做互聯網雙人紙牌遊戲的最佳方式是什麼?目前,我打算使用ajax將遊戲狀態存儲在數據庫中,以檢查遊戲狀態何時發生變化。有沒有更好的方法可以讓客戶相互溝通而不是通過媒介進行溝通?如何使用互聯網紙牌遊戲.net

回答

0

你可以讓客戶跟蹤遊戲。但是,如果它不僅僅是有趣的事情,你將不得不通過重放或消息改變來防止作弊。

例如,假設您仍然使用AJAX,但將您的卡片應用程序作爲JavaScript庫。那麼,您可能會在服務器上使用推拉式事件堆棧,導致客戶端A在指定的時間內等待,直到客戶端B將其事件發送到服務器,此時服務器用客戶端B的事件更新客戶端A.

這樣,您將擁有的最「狀態」是下一個同步事件。服務器負責將事件發送給客戶端,並且他們從服務器請求事件說:「我收到的最後一個事件是事件#12345,在此之後向我發送所有內容」。

然後,您控制遊戲以在特定時間等待事件。

注意:你不是第一個想知道!請參閱ajaxonomy.com上的Multi-player Ajax Games,用戶Kev鏈接到他的Ajax Blackjack game

1

您可能無法像ASP.NET那樣直接進行P2P連接(假設這是基於Web的)。

在現實世界中,您可能不希望或者因爲讓服務器作爲中介是防止作弊的唯一真正方法(由某人構建自己的不遵守規則的客戶端)

+0

但是,如果您正在構建胖客戶端應用程序而不是ASP.NET頁面,那麼還有其他選項。 – maxwellb 2009-08-10 19:34:23

3

僅僅因爲它是基於互聯網的,並不意味着它必須基於網絡。您可以使用WCF製作桌面應用程序,因爲您使用的是.NET平臺。

如果您希望它基於Web,並且您不希望它在服務器上運行(但只需使用服務器作爲查找其他玩家的位置),則可以使用雙盲策略並使用每個策略玩家來驗證其他玩家的動作。但是,一旦發現一些不一致,你應該怎麼做。我會簡單地回滾這些變化並強制玩家重新開始遊戲。請注意,這種驗證不是最好的方法。

理想的方法是,您永遠不會信任來自任何用戶的任何輸入。總是檢查。仔細檢查是否需要。把用戶看作狂熱的狗,你必須餵食,但它會嘗試在有機會時咬住你的手,腳和更重要的部分。所以保護你自己。

+0

+ 1用於桌面應用程序WCF。沒有人真的喜歡通過瀏覽器玩遊戲。從開發角度來看,更容易接觸更多的人。 – 2009-08-10 19:54:37

+0

+ 1爲「將用戶視爲您必須餵食的狂犬病狗」 – Jodi 2009-08-10 21:33:10