鉴于微软将放弃XNA,MonoGame将是喜欢XNA的朋友们的新选择,他是XNA游戏引擎的开源实现,而且是跨平台的,这意味着你可以用他开发OS、android、windows以及linux应用程序,多么给力的新选择!而MonoDevelop 是个适用于Linux、Mac OS X和Microsoft Windows的开放源代码集成开发环境,主要用来开发Mono与.NET Framework软件。MonoDevelop对于MonoGame就好比微软的VS2010和XNA,本文将介绍如何在linux下,利用MonoDevelop开发基于MonoGame的游戏,你会发现Linux下的游戏编程,从未如此简单过!

本文基于ubuntu14.04讲解:

1. 安装MonoDevelop

  sudo apt-get install monodevelop

  或者在软件中心搜索monogame,然后选择XNA-IDE一项进行安装,如下:

  安装MonoDevelop的时候会自动安装MonoGame

2.运行地一个Linux-Mono游戏

  打开MonoDevelop, 界面如下:

  

  点击“New”开始新建一个项目,输入项目名称,及工作目录等等,如下:

  

  然后,直接按F5运行,我们就能看见那个熟悉的空白游戏了----一个蓝色的方框:

  

  虽然这只是个方框,但它的意义是重大的,这意味着我们可以开始奇妙的linux游戏开发之旅了!

3. 小试牛刀----移植XNA标准示例程序Platformer

  Platformer是微软给出的一个XNA示例程序,可以在微软网站上下载,百度“XNA platformer”即可。

  直接在MonoDevelop中打开下载下来的Platformer工程是不行的,可能是Mono和VS的工程格式不一样,不过没关系,我们可以在MonoDevelop中新建立一个PlatformerLinux工程,然后将示例工程中的文件添加到此工程,如下图中高亮的几个文件,新建工程时自带的Game1文件可以删除。

  

  这里注意,Content目录我们没有添加,原因是MonoDevelop不能直接将资源文件,如图片、声音等编辑成XNA可识别的格式,即xnb格式。所以即便这里添加到Content目录,也无济于事。我们可以通过在Windows的VS中建立一个XNA工程来编译这些资源,然后拷贝到Mono工程的bin/debug/Content下直接使用;另外还可以通过XNA编译工具来直接编译资源,这样可以省去在VS下建立工程的麻烦,linux下面已经有XNA-compiler可用。

  这里,为了方便,我们在windows下对示例版的Platformer进行一次编译,然后将bin/debug/Content里面的内容直接copy到Mono工程的bin/debug/Content下,然后按F5直接运行,激动人心的事情发生了,运行成功!如下:

  

  游戏真的运行起来了,但是我们发现有两个明显的bug:

    1)游戏一开始player就挂掉了,按space键继续就OK了;

    2) 游戏的背景音乐没有声音,其他音效OK;

  对于第一个bug,我发现是由于Mono中Update的时候eclisped时间的问题,我发现MonoGame在暂停时,eclispe time是在走的。Mono游戏在第一次运行时,Update函数得到的 gameTime时间很长,根据游戏的逻辑自然会得到player挂掉的结论,读者可以自己推敲。我在Player类的 ApplyPhysics函数中对elapsed变量做个限制即可,如下:

           if (elapsed > 0.05f)
                 elapsed = 0.05f;

  然后再次运行,发现OK!

  至于第二个bug发现是 Plateformer类中MediaPlayer.Play(Content.Load<Song>("Sounds/Music"));这句执行时加载音乐有些问题,貌似Content不能加载Song类型,这个作为遗留,后续接续研究。

用MonoDevelop开发Linux游戏的更多相关文章

  1. 第一个独立开发的游戏 怪斯特:零 已经上线APP STORE!

    今天是个值得纪念的日子,而且是双喜临门 2年多来的摸爬滚打,终于有了回报 第一喜:自己独立开发的游戏 怪斯特:零 已经通过审核并上架APP STORE! 第二喜:迈入了自己期待2年之久的游戏行业,年后 ...

  2. JS开发HTML5游戏《神奇的六边形》(一)

    近期出现一款魔性的消除类HTML5游戏<神奇的六边形>,今天我们一起来看看如何通过开源免费的青瓷引擎(www.zuoyouxi.com)来实现这款游戏. (点击图片可进入游戏体验) 因内容 ...

  3. Atitit 开发2d游戏的技术选型attilax总结

    Atitit 开发2d游戏的技术选型attilax总结 1.1. 跨平台跨平台:一定要使用跨平台的gui技术,目前最好的就是h5(canvas,webgl,dom) +js了..1 1.2. 游戏前后 ...

  4. JS开发HTML5游戏《神奇的六边形》(二)

    近期出现一款魔性的消除类HTML5游戏<神奇的六边形>,今天我们一起来看看如何通过开源免费的青瓷引擎(www.zuoyouxi.com)来实现这款游戏. (点击图片可进入游戏体验) 因内容 ...

  5. JS开发HTML5游戏《神奇的六边形》(四)

    近期出现一款魔性的消除类HTML5游戏<神奇的六边形>,今天我们一起来看看如何通过开源免费的青瓷引擎(www.zuoyouxi.com)来实现这款游戏. (点击图片可进入游戏体验) 因内容 ...

  6. JS开发HTML5游戏《神奇的六边形》(三)

    近期出现一款魔性的消除类HTML5游戏<神奇的六边形>,今天我们一起来看看如何通过开源免费的青瓷引擎(www.zuoyouxi.com)来实现这款游戏. (点击图片可进入游戏体验) 因内容 ...

  7. Unity3d开发IOS游戏 基础

    Unity3d开发IOS游戏 基础 @阿龙 -  649998群 1.先说明两个问题,我在WIN7下面的U3D里面,用了雅黑字体,但是导出为ios后,字体就看不见了,这是为什么呢?这是需要在MAC下找 ...

  8. Libgdx开发ios游戏

    今天亲自尝试了LibGDX如何开发ios游戏, 必须条件: 1:mac操作系统,mac下必须安装Xcode     好像ios开发必须在mac操作系统下 2:mac下安装eclipse 3:eclip ...

  9. C#开发Linux守护进程

    用C#开发Linux守护进程   Linux守护进程(Daemon)是Linux的后台服务进程,它脱离了与控制终端的关联,直接由Linux init进程管理其生命周期,即使你关闭了控制台,daemon ...

随机推荐

  1. Xamarin 免费了,你能做什么?

    3月底,微软正式宣布:Xamarin免费了!那么,你能做什么? 抢先一步,用Xuni助力你的Xamarin开发! Xamarin是什么 Xamarin含Xamarin.Andoid,Xamarin.i ...

  2. svn提交时出现很多乱文件怎么解决

    在我们开发项目中的时候经常使用到svn,有时候我们commit的时候回出现很多无用的文件,这些文件就是未版本化的文件,怎么解决这些乱文件的问题呢? svn commit提交的时候有个"sho ...

  3. java条件语句练习题

    输入三个数字显示最大的: System.out.println("请输入三个数字:"); int a,b,c; Scanner d = new Scanner(System.in) ...

  4. Java并发编程:同步容器

    Java并发编程:同步容器 为了方便编写出线程安全的程序,Java里面提供了一些线程安全类和并发工具,比如:同步容器.并发容器.阻塞队列.Synchronizer(比如CountDownLatch). ...

  5. swift 之 纯代码创建 cell

    初学swift 但是网上只有很多swift用xib创建的cell,就算是有也不是我想要的.今天自己弄了一个不用xib纯代码写的,来上代码 博客地址: https://github.com/liguol ...

  6. 【发布】工业串口和网络软件通讯平台(SuperIO v2.2.4)

    SuperIO 下载:本站下载 百度网盘 更新说明: 1.修复无法把数据输出给IAppService的问题,以及无法触发删除操作事件. 2.侦听端口,可以设置. 3.设备接口,增加Object属性,方 ...

  7. 《More Effective C#》读书笔记

    <More Effective C#>这本书,大概是四年前看完的,但只整理了一部分读书笔记,后面有时间的话,会陆续补充的. More Effective C# :使用泛型 More Eff ...

  8. 【requireJS源码学习03】细究requireJS的加载流程

    前言 这个星期折腾了一周,中间没有什么时间学习,周末又干了些其它事情,这个时候正好有时间,我们一起来继续学习requireJS吧 还是那句话,小钗觉得requireJS本身还是有点难度的,估计完全吸收 ...

  9. VS2012 单元测试之泛型类(Generics Unit Test)

    关于单元测试,如果不会用可以参照我的上篇博文————在Visual Studio 2012使用单元测试 首先分享一篇博文,[Visual Studio] 开启Visual Studio 2012通过右 ...

  10. Android—锁定横屏遇到的问题

    Android开发应客户需求需要锁定横屏,期间遇到的问题与大家共享一下: 首先在项目清单文件中设置: android:screenOrientation="landscape"// ...