Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/258.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我应该使用什么C#模板为XNA游戏构建服务器?_C#_Networking_Xna - Fatal编程技术网

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

我应该使用什么C#模板为XNA游戏构建服务器?,c#,networking,xna,C#,Networking,Xna,我将尝试在我的XNA游戏中构建多人游戏,同时为它构建一个服务器,但我不知道服务器应该采用什么格式 在大多数有玩家托管的游戏中,服务器是不可见的,它没有自己的窗口,你只需在游戏中创建一个大厅,就可以在后台运行一个服务器线程 像这样的描述正是我想要的,但发展这一点的最佳方式是什么?我应该将服务器作为控制台应用程序启动,然后在玩家创建大厅时以某种方式启动控制台并使其不可见,还是想办法将代码移植到xna游戏中的线程?我应该使用windows窗体应用程序模板吗?最好的方法是什么?从概念上讲,您的服务器包括

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

在大多数有玩家托管的游戏中,服务器是不可见的,它没有自己的窗口,你只需在游戏中创建一个大厅,就可以在后台运行一个服务器线程


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

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

  • 一组实现服务器端游戏逻辑和网络基础设施的类,以及
  • 一个主机应用程序,它将
    • 游戏客户端,或
    • 专用服务器进程
有了精心设计的代码,这两部分基本上是相互正交的——除了日志和服务器管理工具等一些次要细节。套接字不关心它们是在Windows窗体应用程序内部运行还是在控制台应用程序内部运行;这个问题与他们完全无关

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


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

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

  • 一组实现服务器端游戏逻辑和网络基础设施的类,以及
  • 一个主机应用程序,它将
    • 游戏客户端,或
    • 专用服务器进程
有了精心设计的代码,这两部分基本上是相互正交的——除了日志和服务器管理工具等一些次要细节。套接字不关心它们是在Windows窗体应用程序内部运行还是在控制台应用程序内部运行;这个问题与他们完全无关

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


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

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


值得深思

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


值得深思

您是否检查过XNA网络功能?我打算使用套接字,因为我不想局限于live Accounts您可以看看Lidgren C#网络您检查过XNA网络功能了吗?我打算使用套接字,因为我不想局限于live Accounts。你可以看看Lidgren C#网络