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

时间:2012-08-22 19:54:50

标签: c# networking xna

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

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

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

2 个答案:

答案 0 :(得分:5)

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

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

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

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

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

答案 1 :(得分:1)

Terraria是XNA,它有一个控制台窗口服务器应用程序和主游戏。托管类型是游戏内托管和专用服务器。两种托管类型实际上使用相同的服务器应用程序,但是当专用服务器正常运行该过程时,游戏客户端以隐藏模式运行控制台窗口应用程序,因此它不会出现在任务栏中或显示为窗口。 / p>

深思熟虑!