MonoGame porting to linux

本文关键字:linux to porting MonoGame | 更新日期: 2023-09-27 18:26:29

我在Visual Studio 2015中使用C#语言和MonoGame框架在Windows 7(64位)上开发了一款游戏。游戏在Windows上运行良好,但我也想让游戏在Linux上玩。因此,我在我的Windows PC上安装了带有Ubuntu 15.10(64位)的VirtualBox,以测试我是否可以在Ubuntu上运行我的游戏。在尝试以不同的方式编译游戏但看不到解决方案后,我得出结论,在这里问了几个关于将MonoGame部署到Linux的问题:

  1. 有可能在VisualStudio2015中编译一个MonoGame游戏吗

    1.1.MonoGame Linux项目?

    1.2.MonoGame Windows OpenGL项目?

    1.3.MonoGame Windows项目?(我目前的游戏是)

  2. 如果[1.]有什么要求,需要在Linux上安装什么程序才能运行这个[1.x]版本?

  3. 是否可以(并推荐)在虚拟Ubuntu机器上的MonoDevelop中编译游戏?

  4. 有可能在虚拟Ubuntu机器上运行MonoGame游戏吗?

  5. Linux上游戏的正确可执行文件扩展名是什么?(因为Windows上的Linux项目只构建了一个.exe)

我几乎没有使用Linux的经验,所以我希望有人能回答我这些问题,也许是有将MonoGame游戏移植到Linux经验的人。

谢谢。

MonoGame porting to linux

尽管这个问题已经存在几年了,但它值得一个答案。我设法通过Mono的mkbundle为MonoGame中构建的游戏进行了跨平台构建。这里有一个在Windows上执行此操作的好教程。

您需要下载最新的Mono版本,并将"exe"扩展名附加到位于C:''Program Files(x86)''Mono''bin''Mono的文件中。接下来,下载您要部署到的平台的适当运行时,给它一个"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,将导致构建失败。如果是这种情况,您可能需要找到一个变通方法。

这样,您就可以在Linux中通过在终端中输入./HelloWorldBundleUbuntu来运行该文件。我在虚拟机中以这种方式运行游戏没有遇到任何问题。

最后,如果你想走.NET核心路线,MonoGame有一个WIP核心分叉,你可以使用,尽管我不确定它的效果如何。

要添加Kimimaru已有一年历史的答案,还可以使用MonoKickstart在Mac和Linux上启动并运行Monogame可执行文件,而无需捆绑任何内容。如果您的项目由于第三方库或其他原因而有点难以捆绑,那么这尤其方便。

您只需打开Kickstart档案并将您的Windows可执行文件粘贴到桌面即可。通过编辑.kick文件以指向适当的可执行文件,它们将充当使用mono运行程序的中介(也提供了mono,无需安装在目标计算机上)。

https://github.com/mrhelmut/MonoKickstart