【问题标题】:Git, monogame and cross-platform developmentGit、monogame 和跨平台开发
【发布时间】:2014-03-05 08:00:34
【问题描述】:

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

为了让事情简单一点,我决定在 Windows 上开始开发,稍后将游戏转换为 Linux,预计会出现一些小问题;信任 MonoGame 框架。我现在正处于移植过程中,但由于遇到一个重大问题而很快停止:

你不能在同一个解决方案中同时拥有 Windows 游戏和 Linux 游戏,它不会运行。

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

使用 git;我想出了以下内容

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

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

我在谷歌上找到的唯一内容是about the stuff I just described above。有没有人对我描述的问题有任何经验,或者我应该尝试一下,看看是否合适?

【问题讨论】:

  • 我不熟悉这个平台,但你不能创建使用相同文件链接的不同项目吗?
  • @Amnon 我只是在想这个……哈哈,我现在就试试。
  • @Amnon 这似乎不是一个选项,项目特定的设置保存在代码库本身中。这意味着输出文件仍将被编译为 WindowsGL exe 文件。我不明白的是 Mono 本身的文档非常有限,编译后的文件保存在一个名为 bin/Debug/<platform>/<executable> 的文件夹中,这让我觉得可以有多种配置......但是当我尝试寻找一些选项时什么都找不到。

标签: linux git cross-platform monogame


【解决方案1】:

基本上你有两个选择。使用此处 Xamarin 指南中所述的代码共享:

http://docs.xamarin.com/guides/cross-platform/application_fundamentals/building_cross_platform_applications/sharing_code_options/

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

http://www.craftworkgames.com/blog/day-6-running-with-monogame-portable/

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

【讨论】:

  • 感谢您的回答。我在您的 PCL 解决方案中看到了很多潜力,“官方”的东西立即导致了我已经考虑过的解决方案,但由于符号链接、新文件等原因,我认为很难维护。您的解决方案需要我做一些工作不过现在没有时间,我会在周末回来。
  • @AmazingDreams 是的,有很多改进的潜力。一段时间以来,我一直梦想着创建一个以这种方式工作的 C# 引擎。不过相当耗时。
  • 我试图添加那些东西,它编译!但是,我确实得到了运行时异常。我的设置是:LinuxGame extends CoreGame extends (XNA)Game。当CoreGame 构造函数调用Game 构造函数时,我得到Object reference not set to an instance of an object。有什么想法吗?
  • 这是一个非常通用的异常,不过,如果我不得不猜测的话,我会说您可能从每个项目中引用了错误的 DLL。请注意,每个平台项目都应引用其平台特定的 MonoGame DLL,而可移植项目应引用 MonoGame 可移植库。这是一个奇怪的配置,但它确实有效。
  • 好吧,我想我知道问题所在; MonoGame Portable = v3.1.3-alphaMonoGame = v3.1.3-alphaMonoGame.Binaries = v3.1.3-alpha 但不包括 Linux 软件包。我得到了net40netcorewp8。 Debian 不提供超过 2.5.0(在 sid 中)的版本。 monogame 团队本身的“支持”是"We supply alpha windows packages",我不想为一个简单的 Linux 二进制文件管理整个 MonoGame 源代码树。我开始越来越喜欢使用 Java。
猜你喜欢
  • 2010-11-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多