我想建立一个基于回合制的多人iPhone游戏,它需要一个游戏服务器来连接玩家并传输世界状态数据.我试图了解游戏服务器的工作方式,以便我可以开始设计和构建游戏服务器.到目前为止,我只有构建Web应用程序的经验,所以我自然而然地希望设计游戏服务器以与Web服务器类似的方式工作,但它可以吗?
我过去使用的ASP.NET MVC Web服务器由客户端向服务器发送请求以获取某些网页数据,服务器生成HTML或XML或JSON并将其以HTTP数据包的形式返回给客户端.对于多人游戏来说,这个过程听起来完全相同,除了客户端可能不会请求HTML,但是请求XML或JSON数据是有意义的,对吗?
所以我的问题是......
可以使用ASP.NET MVC编写游戏服务器,并使用我设计的RESTful API与Web服务器一样工作吗?
有没有比使用包含XML或JSON数据的HTTP数据包更好的方法来请求和接收游戏数据?从游戏服务器返回的数据很小.
使用RESTful API从Web服务器访问数据很有意义,但使用RESTful API从游戏服务器请求游戏数据是没有意义的,事实上,听起来它可能会导致安全问题,您的想法?
最后,任何人都可以推荐任何好的游戏书籍,展示如何构建一个体面的游戏服务器的例子吗?
非常感谢您的帮助!
主要区别在于Web服务器使用(相对)很少或没有状态信息生成大量相对静态的内容.即使使用状态,它通常也特定于会话或用户.读取比写入更频繁,因此缓存可以帮助提高吞吐量.您还可以信任Web浏览器以(相对)可靠的方式传递某些状态数据和cookie.
相反,游戏服务器大部分时间处理来自客户端的更新,保持大量的全局状态(所有游戏,播放器,状态)并在请求时向客户端发送状态更新.缓存是不可能的,你不能相信你的客户告诉你一天中的时间 - 你必须假设他们会试图以任何方式作弊.
使用REST API不是一个问题,因为您可以使用已经使用的标准身份验证机制.
" 美丽建筑 " 一书的第3章描述了Darkstar(现在的RedDwarf)项目的架构,该项目是一个可扩展的在线游戏和虚拟世界应用服务器.虽然RedDwarf的规模比你想要的要大很多,但本书确实描述了在创建游戏服务器时需要解决的问题.