标签:
最近突发奇想,下载了Microsoft Small Basic并编写了两个图形变换的小程序,希望能够让儿子对科技产生兴趣(当然,成为像我一样的码农可不是我的初衷)。 捡起自己入门电脑编程时学会的第一门语言 GW Basic,下载完Small Basic后写的第一个图形程序就是一个五彩缤纷的小球在屏幕上乱跳的程序,看上去有点像DOS下小球病毒爆发时的现象(不好意思暴露自己年龄了),而第二个程序则在窗口中显示了一个可以用鼠标控制的飞机图案,儿子当时看得很认真。心想,干脆自己做一款打飞机的游戏给儿子玩玩吧,考虑到Small Basic在图形处理方面毕竟还是相对薄弱,所以我就凭着以前对Microsoft XNA的研究经验,在Visual Studio 2013中借助MonoGame实现了一款简单的太空大战小游戏。
先简单介绍一下MonoGame吧。它是针对Microsoft XNA 4的开源实现,它能够支持诸如Xbox360、Windows、Windows Phone、iOS、Android、Mac OS X、Linux、Windows 8 Metro、Windows 10等多种平台。目前正在完善针对PlayStation Mobile、树莓派以及PlayStation 4的支持。在图形系统方面,MonoGame允许开发者选择基于OpenGL或者DirectX。您可以到MonoGame的官网介绍网页上了解更多有关MonoGame的历史信息。
在两年前我曾打算模拟一个类似魂斗罗的游戏,当时使用的是Microsoft XNA Game Studio 4,后来由于魂斗罗游戏地图处理有问题,我也没有继续深究这个游戏了。于是,在之后的一段时间中,我曾经也想过业余时间做个别力所能及的小游戏自娱自乐一下,可惜被告知Microsoft XNA Game Studio已经被微软抛弃了,最后一个支持它的VS版本是Visual Studio 2010,于是经过一番搜索,我开始了自己的MonoGame之旅。
刚开始的时候,MonoGame让我抓狂,因为它缺失一项最重要的功能:Content Pipeline。如果你要使用MonoGame,你必须继续使用Microsoft XNA Game Studio,并使用XNA的Content Pipeline将所需的材质、声音、动画、字体等素材编译成xnb文件,然后再到MonoGame中调用。这是非常让人难以接受的,所以,当时我也基本打消了继续使用MonoGame的念头。
然而,经过开源社区的努力,新版本的MonoGame已经全面支持Content Pipeline了,您可以从MonoGame所创建的解决方案管理器中找到游戏的Content文件,并双击它来打开Content编辑器:
应该说,使用最新版的MonoGame,已经可以满足开发中等规模的游戏需要了,尽管它仍然存在一些程序缺陷(Bugs)。
MonoGame的介绍到此为止,限于篇幅我也就不深入讲解了。请您先移步到下面这段视频,看看我做的Starwar太空大战游戏是不是像模像样:
【点击此处观看视频】
怎么样?还可以吧?不管怎么样,能够吸引到小朋友就行。^_^
请【点击此处】下载游戏的安装包。注意,在安装的过程中会提示安装OpenAL(一套开放的音频库),单击确认安装即可。在安装完成后,你可以通过开始菜单启动游戏配置程序以及Starwar太空大战游戏。
在启动游戏配置系统时,会出现一个用户账户控制(User Access Control)的对话框,单击“是(Yes)”即可,然后会打开配置界面:
配置完成单击确定按钮后,再进入开始菜单选择Starwar打开游戏即可:
用鼠标移动飞机,单击左键发射激光攻打敌机,游戏任意时刻按ESC键退出。
本游戏的源代码是公开的,地址是:https://github.com/daxnet/Starwar。您可以使用Git客户端将源代码克隆到本地,注意,要正确编译源代码,您的计算机需要满足以下条件:
说明:游戏资源均来自于网络。
游戏基于Visual C#采用面向对象设计,在游戏业务中,参与游戏的对象统称为精灵(Sprite),以下是本游戏各种不同类型的精灵类依赖图:
实现代码在此就不贴了,您可以直接到上述源代码主页上查看。
接下来还可以做一些事情来完善这个游戏,比如:
留着以后有兴趣再慢慢完善吧。
标签:
原文地址:http://www.cnblogs.com/daxnet/p/4841428.html