鉴于微软将放弃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. Java中,包的概念、常量、静态成员、继承

    新建包:左上角-新建-包 命名规则(通常从大到小,方便整合不容易冲突)  例如:com.itnba.maya.test package必须在最顶行,之前不能再有其他代码 使用包: 快捷方式:使用包中的 ...

  2. Socket编程——客户端,服务器端的读写操作

    URL网络编程,最大的特征就是一对一的响应! 1:客户端“写”,服务器端用于“读” package coreBookSocket2; import java.io.InputStreamReader; ...

  3. 从零开始学 Java - Windows 下安装 JDK

    关于未来 "我要死在火星.在我死去的时候能够想着人类能有一个美好的未来--有可持续的能源,同时能够殖民其他的星球来避免人类灭绝的最坏可能." 官网下载 直接打开官网:http:// ...

  4. [Cordova] Plugin开发架构

    [Cordova] Plugin开发架构 问题情景 开发Cordova Plugin的时候,侦错Native Code是一件让人困扰的事情,因为Cordova所提供的错误讯息并没有那么的完整.常常需要 ...

  5. Elasticsearch初步使用(安装、Head配置、分词器配置)

    目录 返回目录:http://www.cnblogs.com/hanyinglong/p/5464604.html 1.ElasticSearch简单说明 a.ElasticSearch是一个基于Lu ...

  6. css制作漂亮彩带导航条菜单

    点击这里查看效果:http://keleyi.com/keleyi/phtml/divcss/17.htm 效果图: 以下是源代码: <!DOCTYPE html PUBLIC "-/ ...

  7. .NET 数据类型转换 方法

    using Newtonsoft.Json;using Newtonsoft.Json.Converters;using System.Web.Script.Serialization; /// &l ...

  8. 【再探backbone04】单页应用的基石-路由处理

    前言 首先发一点牢骚,互联网公司变化就是快,我去一个团队往往就一年时间该团队就得解散,这不,公司居然把无线团队解散了,我只能说,我那个去!!! 我去年还到处让人来呢,一个兴兴向荣的团队说没就没了啊!我 ...

  9. Sass-也许你想和CSS玩耍起来(上篇)

    我们努力,我们坚持,共勉! 众所周知,css其实不是一门编程语言,熟悉的人都知道css全称Cascading Style Sheets(层叠样式表)是一种用来表现HTML(标准通用标记语言的一个应用) ...

  10. 如何基于OM模型使用C#在程序中给SharePoint的BCS外部数据类型的字段赋值

    概述: 外部内容类型和数据,SharePoint从2010这个版本开始就对BCS提供非常强大的支持,点点鼠标就可以取代以前直接编辑XML的方式来设置SharePoint到SQL数据库的连接.非常方便地 ...