【问题标题】:MonoGame porting to linuxMonoGame 移植到 linux
【发布时间】:2016-03-17 10:13:33
【问题描述】:
我在 Visual Studio 2015 中使用 C# 语言和 MonoGame 框架在 Windows 7(64 位)上开发了一款游戏。游戏在 Windows 上运行良好,但我也想让游戏在 Linux 上可玩。因此,我在我的 Windows PC 上安装了带有 Ubuntu 15.10(64 位)的 VirtualBox,以测试我是否可以让我的游戏在 Ubuntu 上运行。
在尝试以不同的方式编译游戏但没有看到任何解决方案后,我得出结论,在这里提出一些关于将 MonoGame 部署到 Linux 的问题:
-
是否可以在 Windows for Linux 上的 VisualStudio 2015 中编译 MonoGame 游戏...
1.1。 MonoGame Linux 项目?
1.2。 MonoGame Windows OpenGL 项目?
1.3。 MonoGame Windows 项目? (我目前的游戏是)
如果 [1.] 在 Linux 上运行此 [1.x] 版本有什么要求以及需要安装哪些程序?
是否可以(并且推荐)在 虚拟 Ubuntu 机器上使用 MonoDevelop 编译游戏?
是否可以在虚拟 Ubuntu 机器上运行MonoGame 游戏?
在 Linux 上游戏的正确可执行文件扩展名是什么? (因为 Windows 上的 Linux 项目只是构建一个 .exe)
我几乎没有使用Linux的经验,所以希望有人能回答我这些问题,也许有人有将MonoGame游戏移植到Linux的经验。
谢谢。
【问题讨论】:
标签:
c#
linux
cross-platform
virtual-machine
monogame
【解决方案1】:
虽然这个问题是几年前的问题,但值得回答。我设法通过 Mono 的 mkbundle 为 MonoGame 中构建的游戏进行跨平台构建。 Here 是在 Windows 上执行此操作的绝佳教程。
您需要下载最新的 Mono 版本并将“exe”扩展名附加到位于 C:\Program Files (x86)\mono\bin\mono 的文件中。接下来为您要部署的平台下载适当的runtime,给它一个“zip”扩展名,然后将其解压缩到以下路径:C:\Users\youruserhere\Documents.mono\targets
之后,您应该准备好构建了;打开命令提示符并输入mkbundle --local-targets。如果一切顺利,应该会显示您已安装的运行时。之后就是为目标平台构建 exe 的问题。
这是一个为 Ubuntu 构建应用程序的示例:mkbundle HelloWorldConsole.exe --simple -o HelloWorldBundleUbuntu --cross mono-5.10.0-ubuntu-16.04-x64
请记住,某些未在 Mono 中实现的类,例如 WebBrowser,将导致构建失败。如果是这种情况,您可能需要找到解决方法。
有了这个,您可以通过在终端中输入 ./HelloWorldBundleUbuntu 在 Linux 中运行该文件。我在虚拟机中以这种方式运行游戏没有任何问题。
最后,如果你想走 .NET Core 路线,MonoGame 有一个 WIP core fork 可以使用,但我不确定它的效果如何。
【解决方案2】:
为了补充 Kimimaru 已有一年的答案,还可以使用 MonoKickstart 让您的 Monogame 可执行文件在 Mac 和 Linux 上启动并运行,而无需捆绑任何东西。如果由于第三方库或其他原因,您的项目有点难以捆绑,这将特别方便。
您只需解压缩 Kickstart 存档并将您的 Windows 可执行文件粘贴到上面。通过编辑 .kick 文件以指向适当的可执行文件,它们将充当使用 mono 运行程序的中介(同样提供,无需在目标计算机上安装)。
https://github.com/mrhelmut/MonoKickstart