0

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

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

像这样的描述是我想要的,但开发它的最佳方法是什么?我应该将服务器作为控制台应用程序启动,然后想办法启动控制台并在玩家创建大厅时使其不可见,还是想办法将代码移植到 xna 游戏中的线程?我应该使用 Windows 窗体应用程序模板吗?解决此问题的最佳方法是什么?

4

2 回答 2

5

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

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

使用精心设计的代码,这两部分大部分是相互正交的——除了一些小细节,比如日志和服务器管理工​​具。套接字不关心它们是在 Windows 窗体应用程序还是控制台应用程序中运行。这个问题与他们完全无关。

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

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

于 2012-08-22T20:16:49.330 回答
1

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

值得深思!

于 2012-08-22T23:41:47.327 回答