改变游戏服务器平台

本文关键字:平台 服务器 游戏 改变 | 更新日期: 2023-09-27 18:06:48

我正在开发一款小型多人游戏,目前游戏服务器运行在c#控制台应用程序中。

这限制了我,因为:

    每当我在控制台中启动文本选择时,服务器就会卡住。如果我不小心碰了一下控制台,服务器就会卡住,我很震惊,客户端也会卡住,而当我右键点击控制台并取消选择时,它就会超时
  • 我受限于向服务器提供用户输入。说,我想实现服务器命令,我有一个伟大的系统我写处理发布-订阅消息,我可以使用,我只是没有办法轻易将这些消息,由于服务器是基于控制台的,我不能依靠控制台输入,当有很多输出到控制台,和客户端(也可以发布这些消息)是XNA基地,没有简单的方法来实现在客户端控制台(这将是一个了不起的事情,如果我找到一个适合XNA主机的优秀库,我的一些问题就会得到解决)。

我有几个选项可以选择-

  • WPF -我可以在WPF中编写服务器而不是控制台应用程序。这将给我一些不错的GUI,它将相对容易集成,因为大部分代码是一个库,我甚至不需要导出事件,因为我将能够使用我的发布-子系统的事件。

  • Web -我在脑海中有这样的画面-我运行一个启动本地服务器的可执行文件,它只会在后台运行,人们将能够定期连接,但我将能够访问网页,并通过它控制服务器。这当然是一个不同于游戏服务器本身的移植,我可以通过它控制服务器(发送命令,踢玩家,重新开始回合等等)。

我来这里首先是为了听听你的建议。你觉得什么更合适,利与弊。如果我们谈论的是基于网络的服务器,最标准的方式是什么?我的意思是……主要是为了建立一个服务器,以及网站如何与它通信。

感谢您的阅读,并提前感谢您的建议!

改变游戏服务器平台

最简单的可能是使用像Nancy这样的东西(使用起来非常简单)来处理REST命令。您可以将Nancy网站主机项目添加到您的解决方案中,并与服务器一起运行,重用您的pub/sub架构。额外的好处是,您可以将Nancy用于某些在服务器上可能无法正常工作的客户端服务。

这实际上与我们在XNA游戏中所做的类似,除了Nancy还直接与客户端对话,与服务器一起,提供某些cpu或数据库绑定数据,这些数据对性能不重要。我们使用redis来处理Nancy主机和服务器实例之间的pub/sub通信