用MonoDevelop开发Linux游戏

鉴于微软将放弃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类型,这个作为遗留,后续接续研究。

时间: 2024-10-14 06:56:30

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

SteamOS 时代来临,Linux 游戏的现状如何?

在经历了 14 个月的 beta 测试之后,Valve 的新游戏平台怎么样了? 自从 Linux 操作系统在上世纪 90 年代问世以来,即便是这个圈子里最有影响力的人物也不得不承认,Linux 这个开源的平台在游戏领域确实没有竞争力.Linux 游戏网站 Rootgamers 的网站编辑 Che Dean 说,“回首 2010 年左右,想在 Linux 上玩游戏只有 2 个选择.玩一些开源的游戏,比如 super tux kart,或者用 WINE 模拟器来运行 Windows 游戏.” 随便问

C#开发Linux守护进程

C#开发Linux守护进程 Linux守护进程是Linux的后台服务进程,相当于Windows服务,对于为Linux开发服务程序的朋友来说,Linux守护进程相关技术是必不可少的,因为这个技术不仅仅是为了开发守护进程,还可以拓展到多进程,父子进程文件描述符共享,父子进程通讯.控制等方面,是实现Linux大型服务的基础技术之一. 去年我也曾写了一篇关于守护进程的帖子,名字叫<.NET跨平台实践:用C#开发Linux守护进程>,这篇文章的的确确实现了一个Daemon,不过,它有一个弱点,不能运行多

如何开发Linux内核?

?? 如何开发Linux内核? 推荐这篇文章: http://www.tldp.org/LDP/lkmpg/2.6/html/lkmpg.html 下面是在Ubuntu下的输出: [email protected]  # makemake: Warning: File `Makefile' has modification time 11 s in the futuremake -C /lib/modules/3.13.0-24-generic/build M=/root modulesmake

使用Delphi开发linux应用

对于很多喜欢使用delphi做开发的人都希望delphi能够支持linux平台的开发,终于在delphi10.2版本中,delphi开始支持linux平台的开发了.在这里写一下Linux开发环境的配置. (1)安装ubuntu系统 首先在虚拟机安装ubuntu系统,我这里使用的是64位桌面版:ubuntu16.04.2 (2)安装SDK 在ubuntu中打开terminal终端,输入指令:sudo add-apt-repository ppa:ubuntu-sdk-team/ppa 然后再输入:

创业的时候只能专心致志做好一件事。什么叫“一件事”?只能开发一个游戏,只能做一个产品

著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处.作者:王统伟链接:http://www.zhihu.com/question/19550531/answer/15183706来源:知乎 这是我在商界招商网看到天使投资人曾李青(原腾讯公司五位创始人之一)对早期创业公司的看法 ,觉得对你蛮有帮助的,你可以参考下!曾李青:早期创业公司九种死法第一,跨行业创业 比如原来做游戏的人要做电商,原来做互联网社区的要做游戏.现在的互联网环境下,这种跨行业创业失败概率都会比较高. 在演讲中,他

JAVASCRIPT开发HTML5游戏--斗地主(网络对战PART4)

继之前用游戏引擎(青瓷引擎)做了斗地主单机版游戏之后,这里分享下使用socket.io来实现网络对战,代码可已放到github上,在此谈谈自己整个的开发思路吧. 客户端代码 服务端代码 (点击图片进入游戏体验) 前文链接: javascript开发HTML5游戏--斗地主(单机模式part1) javascript开发HTML5游戏--斗地主(单机模式part2) javascirpt开发HTML5游戏--斗地主(单机模式part3) 本文章为网络对战第一部分内容.主要内容如下: 简介 服务端项

gcc和MinGW的异同(在cygwin/gcc做的东西可以无缝的用在linux下,没有任何问题,是在windows下开发linux程序的一个很好的选择)

cygwin/gcc和MinGW都是gcc在windows下的编译环境,但是它们有什么区别,在实际工作中如何选择这两种编译器. cygwin/gcc完全可以和在linux下的gcc化做等号,这个可以从boost库的划分中可以看出来端倪,cygwin下的gcc和linux下的gcc完全使用的是相同的Toolsets.所以完全可以和linux一起同步更新gcc版本,而不用担心问题,并且在cygwin/gcc做的东西(不用win32的)可以无缝的用在linux下,没有任何问题.是在windows下开发

火云开发课堂 - 《使用Cocos2d-x 开发3D游戏》系列 第二十一节:地表漫游与寻路

<使用Cocos2d-x 开发3D游戏>系列在线课程 第二十一节:地表漫游与寻路 视频地址:http://edu.csdn.net/course/detail/1330/20822?auto_start=1 交流论坛:http://www.firestonegames.com/bbs/forum.php 工程下载地址:请成为正式学员获取工程 课程截图: ?? 版权声明:本文为博主原创文章,未经博主允许不得转载.

unity基础开发----unity游戏速度更快的简易检查表

让游戏速度更快的简易检查表 保持顶点数在 200K 下面,针对 PC 时每帧应为 3M,主要取决于目标 GPU. 若使用内置着色器,请在移动 (Mobile) 或未点亮 (Unlit) 的类别中选择.它们对非移动平台相同有效,可是是更复杂的着色器的简化和限制版本号. 每一个场景中不同材质的数量尽可能少 - 不同对象之间尽可能共享相同的材质. 在非移动对象上设置静态 (Static) 属性,同意静态批处理 (static batching) 等内部优化. 切勿在不必要的情况下使用像素灯 - 选择仅