论文部分内容阅读
[摘要]随着嵌入式技术及手机互联网技术的发展,手机游戏业也进入了一个新的网络游戏时代。好多大学设置了嵌入式游戏设计课程,在嵌入式平台上设计了大炮打飞机游戏,介绍了该游戏的设计思路及设计算法,物体的变速运动算法和碰撞检测算法。对培养适应社会需求的嵌入式技术人才有着重要意义。
[关键词]嵌入式技术手机游戏课程研究
[中图分类号]G434 [文献标识码]A一、引言
现在随着彩屏智能手机及掌上电脑的普及才使嵌入式游戏真正产业化,嵌入式游戏的表现力已经不输于大型机,不再是几种色彩的几何图形变化,而嵌入式设备本身与网络的优良结合势必将使嵌入式游戏进一步扩大市场。同样由于移动网络技术的发展,手机游戏业也进入了一个新的网络游戏时代[1]。嵌入式系统的技术到达一定水平后,多媒体的进入已不可避免,在图像、音效上更出色的表现对于嵌入式设备使用者来说是一个莫大的诱惑。为了传输多媒体文件和运行复杂的嵌入式软件及游戏,嵌入式产品要求更高的处理器和存储器。按照现在技术革新的速度,嵌入式系统的运算能力很快可以达到五年前的大型机[2]。无线通信设备是嵌入式游戏最主要的载体,便于携带和与网络完美结合使无线通信设备成为潜在的网络游戏最大平台。
二、嵌入式游戏设计关键技术概述
游戏设计主要就是在嵌入式系统上实现游戏,也就是如何使一个游戏和嵌入式系统有机的结合起来。
首先游戏是画面和操作的结合体。在游戏设计中,一个是有漂亮的界面,一个是有简单的操作系统,不应该有繁琐的操作风格。界面的设计是游戏设计的主要难点。在手机等电子设备上实现图形比在PC上实现图形难上许多[3]。
其次是控件的设计,如窗口显示控件、按钮控件设计,同时的还有触摸屏的机制。由于是嵌入式产品上的游戏,应该尽量的减少对键盘的依赖,通过触摸屏实现操作。所以我们要充分的学习触摸屏消息机制和按钮的消息机制。这是嵌入式系统的设计问题,利用C语言可以实现。
最后是算法的设计,利用数学建模的思想和运动仿真处理、运动的物理过程数字化、物理学中的力学和运动学公式等方法设计程序算法。
游戏的存在肯定有它的输赢。玩游戏的目的一是为了消磨时光,一是为了在游戏中取得娱乐同时还有一种竞争。为了实现在这些功能,游戏中应该有计分功能、计步数功能、计时功能等。
三、嵌入式大炮打飞机游戏设计课程研究
了解多种游戏软件开发思路和算法,并能在嵌入式平台上实现多种游戏软件,并初步掌握如何运用已有知识构造一个完整的嵌入式系统。下面介绍大炮打飞机游戏的设计方法。
1.游戏设计思路
大炮打飞机游戏设计是一个人机对战游戏,人控制炮台,计算机控制飞机。飞机可以根据炮台的位置进行投弹。飞机在屏幕的上方水平匀速运动,所以打出的子弹也具有一定初速度,加上重力加速度,飞机打出的子弹的运动路径应该是一个向下加速的抛物线。玩家可以控制炮台左右移动,并发射炮弹。玩家有3次机会,如果炮台被第三次击中,则游戏结束。如果炮台打中飞机,每打中一次加10分,飞机显示为爆炸,并从屏幕的左端重新飞出一架。为了提高对抗性,本游戏将借鉴掌上游戏机的分数规则,即达到一定分数,飞机的移动速度将增加[4]。
总体设计思路:玩家通过键盘按键来控制炮台的移动和开炮,也就是响应按键消息。飞机是由机器自动控制,飞机的行为有两个——移动和投弹。移动采用平移贴图实现。什么时候投弹,是通过飞机和炮台的当前位置计算出来的,具体说,就是要计算导弹的落点是否在当前炮台范围内,如果在当前炮台范围内则投弹。在游戏运行过程中,飞机和炮台的子弹每次移动(即每一帧)都要计算是否击中对方,若飞机击中炮台,则玩家命数减一(初始有3条命)。若炮台击中飞机,则加10分,每过100分飞机将加快速度。当飞机3次击中玩家,即玩家命数为0,则结束游戏。飞机和炮台每次只能发射一发炮弹,当炮弹在屏幕上消失后,才能发射第2发。
大炮打飞机游戏设计流程图如图1所示:
图1:大炮打飞机游戏设计流程图
2.游戏设计算法
随着游戏产业的发展与游戏开发技术的提高,游戏引擎日趋完善,主要的物理算法、智能算法以及动画制作也形成了一定的标准[5]。在本次设计中,主要使用了两种物理算法:
● 物体的变速运动算法
● 碰撞检测算法
(1)物体的变速运动算法
飞机打出的子弹的轨迹是一条向下的抛物线,它要受到重力加速度和飞机的水平初速度的影响。飞机在投弹前要计算大炮的位置,如果投弹的落点正好是当时大炮所在的位置,则进行投弹。加速度与速度的关系如下:
V = Vo + at
在传统的Windows游戏设计中,通常我们会以程序中定时器的时间间隔为t的单位,但是在嵌入式操作系统的环境下,我们采用“帧”为单位,距离采用“像素”为单位,所以速度的单位就位“像素/帧”。每一帧都要处理子弹的移动,所以,子弹每一帧在竖直方向上的速度变化就为:
V = Vo + a
在水平方向上,将按飞机的移动速度进行匀速运动。所以在程序中处理子弹位置的代码如下:
pB->x+=plane->PlaneSpeed;
pB->y+=pB->v;
pB->v+=2;
其中pB为飞机子弹结构变量,plane->PlaneSpeed 为飞机速度,pB->v+=2中所加的“2”为模拟重力加速度值,这个数值是通过实验得来的。最初采用真实重力加速度的近似值10,但是由
S = 1/2(gt2)
可以得出,第1帧子弹移动10个像素,第2帧移动40个像素,第3帧移动90个像素……,子弹从44(屏幕纵坐标点)开始下落,地面水平线纵坐标为200,也就是说子弹在屏幕上只能显示3帧,几乎看不见,所以通过实验得出,取2为重力加速度值较为理想。
(2)碰撞检测算法
如今在游戏设计中,主要使用3种碰撞检测的方法:
● 范围检测
● 颜色检测
● 路线检测
这3种检测方法各有利弊。范围检测算法简单,只要判断位图是否相交即可,运算量小,但误差较大。
颜色检测判断精确,但是算法复杂,运算量大,每次移动都必须重新做镂空处理,并读取位图所有像素的色彩值,然后进行AND运算,判断是否发生了碰撞。如果通过运算结果,发现有相同的像素,说明物体发生了碰撞。但是从效果看,颜色碰撞检测会更好一些,但是由于现在的设备要求,CPU负载会很重,这种检测方法比较适用于不规则图形的碰撞检测。
路线检测是通过已知的物体运动路线判断两运动物体是否会有交点,此种算法相对精准,但运算量也较大。它的作用是用来进行以后的行为智能做判断的。这里所提到的行为智能,是飞机(由计算机控制)躲避子弹的能力,如果通过路线碰撞检测发现飞机会和子弹发生碰撞,那么飞机将在碰撞前改变飞行路线,避免被击中。路线检测通过物体的运动路线,来判断物体是否会发生碰撞,比较适用于人工智能。
本次设计采用的是范围检测,虽然颜色检测和路线检测判断精准,但是运算量过大,会影响游戏的速度。范围检测相对于其他两种检测方法来说,误差较大,但是在游戏设计中所采用的位图小,位图周边空白像素少,产生的最大误差也就只有3个像素,所以不会有什么影响。
四、总结
随着技术的进步,当嵌入式设备的表现力足够强大,人们必将选择其作为网络游戏的新平台。大型嵌入式系统在将来的普及,嵌入式游戏复杂性的提高,使将来嵌入式系统开发商无暇顾及嵌入式游戏,未来必定出现大量的嵌入式游戏开发商,从而彻底改变当今电子游戏业的格局。嵌入式游戏的成熟将是电子游戏业的竞争更加激烈。
基金项目:北京信息科技大学《嵌入式系统及应用》课程建设项目
[参考文献]
[1]胡昭民.游戏设计概论(第3版).北京:清华大学出版社,2011
[2]王小妮.基于嵌入式系列课程的教学改革与探索[J].教育理论与教学研究,2013.5
[3](美)Scott Jacobs.游戏编程精粹7[M].北京:北人民邮电出版社,2010
[4]王小妮、魏桂英、杨根兴.嵌入式组件设计[M].北京航空航天大学出版社,2012
[5](美)Andrew Binstock. 程序员实用算法[M].北京:机械工业出版社,2009
[关键词]嵌入式技术手机游戏课程研究
[中图分类号]G434 [文献标识码]A一、引言
现在随着彩屏智能手机及掌上电脑的普及才使嵌入式游戏真正产业化,嵌入式游戏的表现力已经不输于大型机,不再是几种色彩的几何图形变化,而嵌入式设备本身与网络的优良结合势必将使嵌入式游戏进一步扩大市场。同样由于移动网络技术的发展,手机游戏业也进入了一个新的网络游戏时代[1]。嵌入式系统的技术到达一定水平后,多媒体的进入已不可避免,在图像、音效上更出色的表现对于嵌入式设备使用者来说是一个莫大的诱惑。为了传输多媒体文件和运行复杂的嵌入式软件及游戏,嵌入式产品要求更高的处理器和存储器。按照现在技术革新的速度,嵌入式系统的运算能力很快可以达到五年前的大型机[2]。无线通信设备是嵌入式游戏最主要的载体,便于携带和与网络完美结合使无线通信设备成为潜在的网络游戏最大平台。
二、嵌入式游戏设计关键技术概述
游戏设计主要就是在嵌入式系统上实现游戏,也就是如何使一个游戏和嵌入式系统有机的结合起来。
首先游戏是画面和操作的结合体。在游戏设计中,一个是有漂亮的界面,一个是有简单的操作系统,不应该有繁琐的操作风格。界面的设计是游戏设计的主要难点。在手机等电子设备上实现图形比在PC上实现图形难上许多[3]。
其次是控件的设计,如窗口显示控件、按钮控件设计,同时的还有触摸屏的机制。由于是嵌入式产品上的游戏,应该尽量的减少对键盘的依赖,通过触摸屏实现操作。所以我们要充分的学习触摸屏消息机制和按钮的消息机制。这是嵌入式系统的设计问题,利用C语言可以实现。
最后是算法的设计,利用数学建模的思想和运动仿真处理、运动的物理过程数字化、物理学中的力学和运动学公式等方法设计程序算法。
游戏的存在肯定有它的输赢。玩游戏的目的一是为了消磨时光,一是为了在游戏中取得娱乐同时还有一种竞争。为了实现在这些功能,游戏中应该有计分功能、计步数功能、计时功能等。
三、嵌入式大炮打飞机游戏设计课程研究
了解多种游戏软件开发思路和算法,并能在嵌入式平台上实现多种游戏软件,并初步掌握如何运用已有知识构造一个完整的嵌入式系统。下面介绍大炮打飞机游戏的设计方法。
1.游戏设计思路
大炮打飞机游戏设计是一个人机对战游戏,人控制炮台,计算机控制飞机。飞机可以根据炮台的位置进行投弹。飞机在屏幕的上方水平匀速运动,所以打出的子弹也具有一定初速度,加上重力加速度,飞机打出的子弹的运动路径应该是一个向下加速的抛物线。玩家可以控制炮台左右移动,并发射炮弹。玩家有3次机会,如果炮台被第三次击中,则游戏结束。如果炮台打中飞机,每打中一次加10分,飞机显示为爆炸,并从屏幕的左端重新飞出一架。为了提高对抗性,本游戏将借鉴掌上游戏机的分数规则,即达到一定分数,飞机的移动速度将增加[4]。
总体设计思路:玩家通过键盘按键来控制炮台的移动和开炮,也就是响应按键消息。飞机是由机器自动控制,飞机的行为有两个——移动和投弹。移动采用平移贴图实现。什么时候投弹,是通过飞机和炮台的当前位置计算出来的,具体说,就是要计算导弹的落点是否在当前炮台范围内,如果在当前炮台范围内则投弹。在游戏运行过程中,飞机和炮台的子弹每次移动(即每一帧)都要计算是否击中对方,若飞机击中炮台,则玩家命数减一(初始有3条命)。若炮台击中飞机,则加10分,每过100分飞机将加快速度。当飞机3次击中玩家,即玩家命数为0,则结束游戏。飞机和炮台每次只能发射一发炮弹,当炮弹在屏幕上消失后,才能发射第2发。
大炮打飞机游戏设计流程图如图1所示:
图1:大炮打飞机游戏设计流程图
2.游戏设计算法
随着游戏产业的发展与游戏开发技术的提高,游戏引擎日趋完善,主要的物理算法、智能算法以及动画制作也形成了一定的标准[5]。在本次设计中,主要使用了两种物理算法:
● 物体的变速运动算法
● 碰撞检测算法
(1)物体的变速运动算法
飞机打出的子弹的轨迹是一条向下的抛物线,它要受到重力加速度和飞机的水平初速度的影响。飞机在投弹前要计算大炮的位置,如果投弹的落点正好是当时大炮所在的位置,则进行投弹。加速度与速度的关系如下:
V = Vo + at
在传统的Windows游戏设计中,通常我们会以程序中定时器的时间间隔为t的单位,但是在嵌入式操作系统的环境下,我们采用“帧”为单位,距离采用“像素”为单位,所以速度的单位就位“像素/帧”。每一帧都要处理子弹的移动,所以,子弹每一帧在竖直方向上的速度变化就为:
V = Vo + a
在水平方向上,将按飞机的移动速度进行匀速运动。所以在程序中处理子弹位置的代码如下:
pB->x+=plane->PlaneSpeed;
pB->y+=pB->v;
pB->v+=2;
其中pB为飞机子弹结构变量,plane->PlaneSpeed 为飞机速度,pB->v+=2中所加的“2”为模拟重力加速度值,这个数值是通过实验得来的。最初采用真实重力加速度的近似值10,但是由
S = 1/2(gt2)
可以得出,第1帧子弹移动10个像素,第2帧移动40个像素,第3帧移动90个像素……,子弹从44(屏幕纵坐标点)开始下落,地面水平线纵坐标为200,也就是说子弹在屏幕上只能显示3帧,几乎看不见,所以通过实验得出,取2为重力加速度值较为理想。
(2)碰撞检测算法
如今在游戏设计中,主要使用3种碰撞检测的方法:
● 范围检测
● 颜色检测
● 路线检测
这3种检测方法各有利弊。范围检测算法简单,只要判断位图是否相交即可,运算量小,但误差较大。
颜色检测判断精确,但是算法复杂,运算量大,每次移动都必须重新做镂空处理,并读取位图所有像素的色彩值,然后进行AND运算,判断是否发生了碰撞。如果通过运算结果,发现有相同的像素,说明物体发生了碰撞。但是从效果看,颜色碰撞检测会更好一些,但是由于现在的设备要求,CPU负载会很重,这种检测方法比较适用于不规则图形的碰撞检测。
路线检测是通过已知的物体运动路线判断两运动物体是否会有交点,此种算法相对精准,但运算量也较大。它的作用是用来进行以后的行为智能做判断的。这里所提到的行为智能,是飞机(由计算机控制)躲避子弹的能力,如果通过路线碰撞检测发现飞机会和子弹发生碰撞,那么飞机将在碰撞前改变飞行路线,避免被击中。路线检测通过物体的运动路线,来判断物体是否会发生碰撞,比较适用于人工智能。
本次设计采用的是范围检测,虽然颜色检测和路线检测判断精准,但是运算量过大,会影响游戏的速度。范围检测相对于其他两种检测方法来说,误差较大,但是在游戏设计中所采用的位图小,位图周边空白像素少,产生的最大误差也就只有3个像素,所以不会有什么影响。
四、总结
随着技术的进步,当嵌入式设备的表现力足够强大,人们必将选择其作为网络游戏的新平台。大型嵌入式系统在将来的普及,嵌入式游戏复杂性的提高,使将来嵌入式系统开发商无暇顾及嵌入式游戏,未来必定出现大量的嵌入式游戏开发商,从而彻底改变当今电子游戏业的格局。嵌入式游戏的成熟将是电子游戏业的竞争更加激烈。
基金项目:北京信息科技大学《嵌入式系统及应用》课程建设项目
[参考文献]
[1]胡昭民.游戏设计概论(第3版).北京:清华大学出版社,2011
[2]王小妮.基于嵌入式系列课程的教学改革与探索[J].教育理论与教学研究,2013.5
[3](美)Scott Jacobs.游戏编程精粹7[M].北京:北人民邮电出版社,2010
[4]王小妮、魏桂英、杨根兴.嵌入式组件设计[M].北京航空航天大学出版社,2012
[5](美)Andrew Binstock. 程序员实用算法[M].北京:机械工业出版社,2009