我正在开发一个基于ASP.NET的小型浏览器游戏。想象一下一个游戏房间,容纳22名玩家,玩家通过点击按钮加入房间。(我将房间中的玩家数量保存在数据库中) 当房间中的玩家数量达到22人时,我需要调用一个方法。问题是我不知道如何控制房间中的玩家数量。我的意思是,可能需要一个后台代码一直在服务器上运行,并控制数量并调用函数。这是我的第一个Web项目(学校项目),希望大家能帮助我。
假设每次用户进入或离开房间时,您都会调用一个 Web 方法,对吗?因此,您可以在那个时候更新房间中的用户数量(确保进行适当的锁定),如果是 22,则调用您想要的任何代码(因为您已经在服务器上)。您还可能需要定期让用户向服务器发送 ping,以让您知道他们仍然处于活动状态,这样如果他们断开连接或其他情况,您就可以将他们从房间中删除。
<div>
或其他内容。jQuery可以帮助简化客户端代码。在一个非常高的层面上,当用户尝试加入房间时,您需要检查房间是否已经满了。
当您开始回答谁仍然在房间里的问题时,情况就开始变得复杂起来。您是否已经知道所有可能导致人们退出房间的情况?
对我来说,最明显的想法是使游戏与当前的游戏保持一致。
有一个服务器(asp.net)和客户端(silverlight / flash可能)。
在服务器上,您可以通过将事物存储在应用程序状态或会话状态对象中来管理正在进行的事务。
您可以使用数据库(sql server可能)跟踪玩家在不同会话之间的进度。
您必须了解应用程序生命周期等事项... http://msdn.microsoft.com/en-us/library/ms178473.aspx
我建议您在服务器端使用ashx(Web处理程序)或WCF来满足您的需求。
在客户端(假设您希望使用silverlight,因为您仍然可以使用C#),然后可以连接到服务器并请求数据。
这将帮助您理解多人在线游戏的工作原理(希望如此)。
如上所述,您可能会发现AJAX对您的需求很好,ajax请求通常很轻量级,但请记住,每个玩家实际上都会获得客户端的完整源代码,因此您容易受到黑客攻击。
由于这只是一个简单的学校项目,我相信您会没问题的。
Timer
控件。也许可以使用UpdatePanel
。 - Brian