在没有图形的情况下运行XNA游戏


11

想知道是否仍然可以运行XNA游戏而不显示任何内容。

我有一个在客户端服务器设置中运行的工作游戏,其中一个玩家是主机,其他人可以连接到他的游戏。

现在,我希望能够在没有显卡的专用服务器上作为主机运行游戏,基本上我根本不想运行任何Draw()逻辑。

我真的需要遍历整个游戏并删除对XNA的所有引用吗?

人们是如何做到的?

编辑:我想要这样做的原因是因为我在游戏中安装了可运行的客户端服务器,并且我不想制作单独的“无头”服务器程序。


为什么不能只用Drawlike 编写代码if (headless) { return; }
ashes999

1
@ asher999不知道这是否会从游戏中完全删除所有绘制和图形逻辑。虚拟服务器可能根本没有任何真实的图形适配器。
JensB

更改输出类型或跳过绘图不会神奇地消除XNA对图形设备的依赖。如果您要加载任何需要图形设备的内容(尤其是纹理),则很有可能这些内容都无法使用建议的任何一种解决方案加载。
dadoo Games

Answers:


10

只需创建一个普通的C#项目并包含XNA二进制文件即可。这将使您可以访问XNA数据类型和框架方法。我的游戏可以做到这一点,并且可以完美运行。


1
我猜您编写了一个包装,其行为类似于XNA,为您调用了诸如Update之类的所需方法?我会努力的,谢谢。
JensB

2

答案是:不要这样做。如果您不需要制作游戏-即;您不想利用XNA提供的功能,为什么呢?您确实应该研究开发可以成功模拟您想要玩的游戏的自定义软件-通常是某种类型的控制台系统。如果您提供更多详细信息,我将使用不太通用的答案来更新我的答案。


1
我可以给你一个原因:单元测试。通常,您需要测试一段或一段代码而不必加载或绘制图形。
Stephen Tierney

3
@StephenTierney我可以再给您一个理由:他没有尝试,而是试图运行游戏服务器(在专用计算机上)。请重新阅读问题,并考虑收回您的弃权票。
沃恩·希茨(Faughan Hilts)2013年


1

为了建立无标题的建议,您可以仅包含对DLL的引用并使用它们,而无需使用任何默认的游戏循环。例如,您可以查看创作者俱乐部上的winforms教程系列:http : //xbox.create.msdn.com/en-us/education/catalog/sample/winforms_series_2

同样,如果您想更加花哨,可以用自己的自定义循环替换整个XNA游戏循环,并控制整个过程。有关此的更多信息,请参见 /programming/6361691/custom-xna-game-loop-in-windows


1

如果将XNA项目的“输出类型”更改为“控制台应用程序”,则该应用程序将在启动时简单地打开一个空的控制台,而无需打开实际游戏的窗口。这对于您要完成的工作可能很有用,因为您要进行测试,并且可以非常轻松地将控制台用作调试窗口。


1

您还可以考虑覆盖更新和绘制调用,而只需返回即可。

另外,不要在您的主要游戏类中调用graphicsdevice,这将阻止xna窗口在充当服务器的游戏中被实例化。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.