做互聯網雙人紙牌遊戲的最佳方式是什麼?目前,我打算使用ajax將遊戲狀態存儲在數據庫中,以檢查遊戲狀態何時發生變化。有沒有更好的方法可以讓客戶相互溝通而不是通過媒介進行溝通?如何使用互聯網紙牌遊戲.net
回答
你可以讓客戶跟蹤遊戲。但是,如果它不僅僅是有趣的事情,你將不得不通過重放或消息改變來防止作弊。
例如,假設您仍然使用AJAX,但將您的卡片應用程序作爲JavaScript庫。那麼,您可能會在服務器上使用推拉式事件堆棧,導致客戶端A在指定的時間內等待,直到客戶端B將其事件發送到服務器,此時服務器用客戶端B的事件更新客戶端A.
這樣,您將擁有的最「狀態」是下一個同步事件。服務器負責將事件發送給客戶端,並且他們從服務器請求事件說:「我收到的最後一個事件是事件#12345,在此之後向我發送所有內容」。
然後,您控制遊戲以在特定時間等待事件。
注意:你不是第一個想知道!請參閱ajaxonomy.com上的Multi-player Ajax Games,用戶Kev鏈接到他的Ajax Blackjack game。
您可能無法像ASP.NET那樣直接進行P2P連接(假設這是基於Web的)。
在現實世界中,您可能不希望或者因爲讓服務器作爲中介是防止作弊的唯一真正方法(由某人構建自己的不遵守規則的客戶端)
僅僅因爲它是基於互聯網的,並不意味着它必須基於網絡。您可以使用WCF製作桌面應用程序,因爲您使用的是.NET平臺。
如果您希望它基於Web,並且您不希望它在服務器上運行(但只需使用服務器作爲查找其他玩家的位置),則可以使用雙盲策略並使用每個策略玩家來驗證其他玩家的動作。但是,一旦發現一些不一致,你應該怎麼做。我會簡單地回滾這些變化並強制玩家重新開始遊戲。請注意,這種驗證不是最好的方法。
理想的方法是,您永遠不會信任來自任何用戶的任何輸入。總是檢查。仔細檢查是否需要。把用戶看作狂熱的狗,你必須餵食,但它會嘗試在有機會時咬住你的手,腳和更重要的部分。所以保護你自己。
+ 1用於桌面應用程序WCF。沒有人真的喜歡通過瀏覽器玩遊戲。從開發角度來看,更容易接觸更多的人。 – 2009-08-10 19:54:37
+ 1爲「將用戶視爲您必須餵食的狂犬病狗」 – Jodi 2009-08-10 21:33:10
您可以使用雲服務總線爲客戶互相交談,那麼你就不需要服務器。
http://www.microsoft.com/azure/servicebus.mspx
這可能是一個有點矯枉過正,但它是真的很酷建設。
- 1. 互聯網棋牌遊戲
- 2. HTML5紙牌遊戲
- 3. 紙牌遊戲設計
- 4. c#,代表,紙牌遊戲
- 5. C,紙牌遊戲WAR
- 6. 使用Encog在紙牌遊戲中出價的神經網絡
- 7. 互聯網上的遊戲套件
- 8. 如何填充,洗牌,處理紙牌遊戲
- 9. 使用WPF應用程序通過互聯網玩遊戲?
- 10. Java多人紙牌遊戲AI集成
- 11. 紙牌遊戲計劃:設計
- 12. 更新紙牌遊戲的分數
- 13. 創建標準紙牌遊戲(iPhone SDK)
- 14. Java中的紙牌遊戲問題
- 15. 哪個環境適合紙牌遊戲?
- 16. 紙牌遊戲玩家類OOP設計
- 17. Django戰略紙牌遊戲結構
- 18. Java程序 - 紙牌遊戲戰爭
- 19. Rails兩名玩家紙牌遊戲
- 20. 在線紙牌遊戲+與PHP聊天
- 21. 開發Android的在線紙牌遊戲
- 22. 簡單的python紙牌遊戲
- 23. 使用WPF/Silverlight通過互聯網進行多人遊戲
- 24. 用python實現紙牌遊戲套牌的最佳方式
- 25. 一個簡單的紙牌遊戲的Python網絡庫
- 26. 如何在.NET中開發多人(聯網)視頻遊戲
- 27. 有關如何創建Java紙牌遊戲的提示
- 28. 機器學習:如何學習MTG草稿紙牌遊戲
- 29. MySQL的RAND()足夠用於紙牌遊戲的「洗牌」牌套牌嗎?
- 30. 網絡遊戲統一互聯網與Node.js的
但是,如果您正在構建胖客戶端應用程序而不是ASP.NET頁面,那麼還有其他選項。 – maxwellb 2009-08-10 19:34:23