我应该用什么C#模板为XNA游戏构建服务器?

Dan*_*ter 0 c# networking xna

我将尝试在我的XNA游戏中构建多人游戏并同时为它构建一个服务器,但我不知道服务器的格式是什么.

在大多数有一些玩家托管的游戏中,服务器是隐形的,它没有自己的窗口,你只需在游戏中创建一个大厅,并在后台为你运行一个服务器线程.

这种描述就像我想的那样,但是开发它的最佳方法是什么?我应该将服务器作为控制台应用程序启动,然后以某种方式找到一种启动控制台的方法,并在玩家创建大厅时使其不可见,或找出将代码移植到xna游戏中的线程的方法吗?我应该使用Windows窗体应用程序模板吗?最好的方法是什么?

Col*_*ell 5

从概念上讲,您的服务器包括:

  • 一组实现服务器端游戏逻辑和网络基础设施的类,以及
  • 一个主机应用程序,它将是
    • 游戏客户端,或
    • 专用的服务器进程

通过精心设计的代码,这两个部分大多是彼此正交的 - 除了日志和服务器管理工​​具等一些小细节.套接字不关心它们是在Windows窗体应用程序或控制台应用程序中运行; 这个问题与他们完全无关.

所以你真正想做的是将你的服务器类放在一个类库项目中,然后从任何需要托管服务器的应用程序引用该项目.主机应用程序几乎可以是任何东西.它可以是XNA游戏,如果您希望玩家通过客户端托管服务器,或者Windows服务,如果您需要专用服务器进程,或完全不同的东西.

此时,只需Server.Start()从主机应用程序中的适当位置调用(或在您的情况下适用的任何内容) - 例如,在后台线程中.