Linux Git、单游戏和跨平台开发

Linux Git、单游戏和跨平台开发,linux,git,cross-platform,monogame,Linux,Git,Cross Platform,Monogame,我最近开始了一个小项目。我们想出了一个小游戏,现在正在制作。最重要的一个方面是,它可以在Windows、Linux和OSX上运行 为了让事情简单一点,我决定在Windows上开始开发,并在以后将游戏转换为Linux,希望不会有什么问题;信任单一游戏框架。我现在正处于移植过程中,但由于遇到了一个重大问题,我很快就停止了: 不能在同一个解决方案中同时使用Windows游戏和Linux游戏,它不会运行 我发现您必须启动一个新的Linux MonoGame项目,只需将代码复制并粘贴到其中。(这是管理任何

我最近开始了一个小项目。我们想出了一个小游戏,现在正在制作。最重要的一个方面是,它可以在Windows、Linux和OSX上运行

为了让事情简单一点,我决定在Windows上开始开发,并在以后将游戏转换为Linux,希望不会有什么问题;信任单一游戏框架。我现在正处于移植过程中,但由于遇到了一个重大问题,我很快就停止了:

不能在同一个解决方案中同时使用Windows游戏和Linux游戏,它不会运行

我发现您必须启动一个新的Linux MonoGame项目,只需将代码复制并粘贴到其中。(这是管理任何项目的糟糕方式)

与git合作;我得出了以下结论

  • 忽略对所有
    .sln
    文件等的更改,仅将代码保留在存储库中,使基本目录仍位于“根”项目文件夹中

  • 将所有代码保存在子模块中,并将“根”项目文件夹分支到windows、linux和osx分支中,以保存不同编辑器的配置文件


  • 我在谷歌找到的唯一东西是。是否有人对我描述的问题有任何经验,或者我应该尝试一下,看看这样做是否正确?

    基本上,您有两种选择。使用Xamarin指南中描述的代码共享:

    或者,还有一种更高级的方法使用可移植类库(尽管尚未得到官方支持)。我已经在我的博客上描述了它是如何工作的


    这两种解决方案都不理想,但它们都比复制和粘贴代码要好。

    我不熟悉这个平台,但你不能创建使用相同文件链接的不同项目吗?@Amnon我正在考虑。。。。哈哈,我现在就去试试。@Amnon它似乎不是一个选项,特定于项目的设置保存在代码库本身中。这意味着输出文件仍将编译为WindowsGL exe文件。我不理解的是Mono本身的文档非常有限,编译后的文件保存在一个名为
    bin/Debug/
    的文件夹中,这让我想到可以有多种配置。。。但当我试图寻找一些选择时,却找不到任何东西。谢谢你的回答。我看到您的PCL解决方案有很大的潜力,“官方”内容立即导致了我已经考虑过的解决方案,但由于符号链接、新文件等原因,这些解决方案很难维护。您的解决方案将需要一些工作,但我现在没有时间做,我将在周末回到这个话题。@AmazingDreams是的,有很多改进的潜力。我曾经有过一个梦想,那就是创造一个以这种方式工作的C#引擎。不过相当耗时。我试着添加这些东西,然后它就编译了!但是,我确实得到了一个运行时异常。我的设置是:
    LinuxGame
    extends
    CoreGame
    extends(XNA)
    Game
    。当
    CoreGame
    构造函数调用
    Game
    构造函数时,我得到的
    对象引用未设置为对象的实例。有什么想法吗?这是一个非常普遍的例外,不过,如果我不得不猜测的话,我会说您可能引用了每个项目中错误的DLL。请注意,每个平台项目都应该引用其特定于平台的MonoGame DLL,而可移植项目应该引用MonoGame可移植库。这是一个奇怪的配置,但它确实有效。我想我知道问题是什么
    MonoGame-Portable=v3.1.3-alpha
    MonoGame=v3.1.3-alpha
    MonoGame.Binaries=v3.1.3-alpha
    ,但不包括Linux软件包。我得到了
    net40
    netcore
    wp8
    。Debian没有提供超过
    2.5.0
    (在
    sid
    中)的版本。monogame团队本身的“支持”是“我们提供alpha windows软件包”
    ,我不想为一个简单的Linux二进制文件管理整个monogame源代码树。我开始越来越想去Java。