马 栋 邱 烨 王悦平 郭江林
[摘要]通过C++和directx实解现了泡泡堂游戏,并对泡泡堂游戏的技术进行简单扼要的分析。主要对简述泡泡堂游戏中的主要技术难题进行总结,并提出解决这些问题的方式和途径。通过分析,对泡泡堂这类游戏中用到的主要技术进行很好的分析解释,对以后的开发者有很重要的指导作用。
[关键词]泡泡堂c++directx碰撞检测爆炸实现
中图分类号:TP3文献标识码:A文章编号:1671—7597(2009)1020086--01
一、引言
由韩国开发的《泡泡堂》游戏曾经在中国盛行一时,它以简单趣味征服玩家。有专家将玩家区分为临时玩家、中间玩家和忠实玩家三类。而《泡泡堂》的服务对象大部分都是临时玩家。对于这一概念的定义为:年龄层从10岁到20岁甚至35岁左右,每天平均游戏时间约为2小时,希望选择可以即刻得到结果、界面简洁的游戏。临时玩家是互联网娱乐初级阶段的玩家层,对数字娱乐有一定渴望,对上手较难的游戏有畏惧感。他们比忠实玩家要更广泛,而且还是最有开发价值的目标人群。有资料统计,在美国临时玩家和忠实玩家之间的比例大约是50:1,在中国这种差距可能会更高。
而休闲游戏恰恰抓住了这些临时玩家对互动娱乐的需求。休闲游戏简单轻松,趣味十足,临时玩家们在短时间内就可获得游戏所带来的互动趣味和成就感。这些其实是体闲游戏成功的最大法宝。开发商非常清楚的认识到了这一点,他们以红白机的《炸弹人》作为原形,针对市场开发出了‘泡泡堂》。使游戏操作简单,极易上手,富有乐趣,充分吸收了《炸弹人》的诸多优点。在保留精髓的同时,《泡泡堂》还开发了一些有创意的玩点,加入一些很有影响力的娱乐元素(Avatar),使产品线更丰富,满足了临时玩家多方面的互联网娱乐需求。
二、总体设计
(一)课题研究的意义。本课题以开发该游戏为平台,综台运用游戏开发的基本知识,程序中算法的实现,线程的分配,程序运行中的内存使用情况的控制等。通过这些技术的综合运用,更深入的了解计算机程序方面的相关知识,熟悉游戏开发的理念和流程,了解整个游戏项目开发的关注点。
(二)功能模块简介。本课题所开发的单机版游戏泡泡堂,就是为玩家提供一个娱乐的空间,该游戏的操作简单,娱乐性高,可以让玩家在无聊的时候用来打发时间。
根据以上定义,该单机版泡泡堂游戏研究一下几个模块:
1、游戏开始画面。2、游戏地图的制作。3、人物移动的控制实现。4、泡泡的产生及泡泡的爆炸实现。5、碰撞检测的实现。6、结果的判断实现。7、计时的实现。8、几个小特效的实现。
(三)开发语言。该游戏是在visual cH6,O编译环境下编程实现的,主要用到c++语言和dlrectx。该游戏对硬件的需求不高。
三、详细设计
(一)系统功能需求
1、游戏开始画面的制作。玩家玩该游戏,首先要有一个开始的画面共玩家来选择,这样更具有人性化。开始画面。玩家可以选择是进入游戏,还是退出游戏。
2、游戏地图的制作。游戏吸引玩家的一个方面是画面的漂亮,所以做一个漂亮的游戏地图是必须的,这样才能让玩家有一种想玩的冲动。
3、游戏人物控制。游戏就必须有主角,主角由玩家控制移动,这样玩家才能在游戏的规则的基础上按自己的意愿来玩。
4、碰撞检测。一个好的碰撞检测,可以使游戏的流利度增加,也可以使画面看起来更加的逼真,亦不至于看起来一点都不与现实向吻和。
5、结果的判断。一个游戏如果没了结果的判断,没有输赢的评判,那么这个游戏肯定没有什么人玩,所以,结果判断的实现是很必需的。
6、计时的实现。增加计时是为了让玩家有一个时间的概念,而不至于玩啦多长时间都不知道。
7、特效的增加。增加特效,是为了提高玩家的兴趣,画面的漂亮与美观可以给玩家一种玩下去的冲动。
(二)泡泡堂游戏中的技术难题
1、随机地图的制作。2、遮挡的实现。3、泡泡爆炸及道具的产生的实现。4、碰撞算法的设计:算法是游戏的核心,要设计很好的算法,提高游戏运行的效率,运行速度要高,并且资源占用的要少。5、画面闪烁:在图片之间相互调用转换时,图像的画面要流畅,不能有停顿和闪烁。6、百叶窗特效的制作。
(三)技术难题的解决途径
1、随机地图的制作。地图的制作采用小块贴图,首先有一个背景地图,有两小块图片来实现[1],而景物的产生通过两个随机数来确定和产生,树、房子等有些景物是通过固定坐标来固定显示的。游戏进行中按F1会随机刷新地图一次。
2、遮挡的实现。遮挡的实现运用的是画家的原理,远处的东西先画,近处的东西后画,这样看起来就会有遮挡的效果的。在实际的游戏的制作中,先通过一个排序来确定各个景物的远近,然后依次贴上去,看上去就会有遮挡的实现。
3、泡泡爆炸及道具的产生的实现。泡泡的爆炸在游戏的制作的也是比较难解决的问题之一。泡泡的爆炸是遥过不同的时刻显示不同的图片来实现的。而道具的产生是通过一个变量来控制实现的,如果变量不为-1,那么证明就有道具的产生的,所以,就显示相应的道具。
4、碰撞算法的设计。该游戏的碰撞检测,我用的是区域碰撞,人物是一块区域,景物是一块区域,如果这两块区域有了交集,那么可以证明人和景物碰到了一起。所以就停止前进。
5、画面闪烁。由于游戏画面的更新是通过定时刷新来实现的,在画面的更新是,屏幕会出现闪烁,用双缓冲就可以解决这个问题,画面的更新不在是在前台直接刷新,而是在后台刷新实现的,这就避免了屏幕的闪烁。
6、百叶窗特效的制作。百叶窗特效的实现是通过一个定时器来实现,随着时间的增加,来一次显示图片,这样就会有百叶窗的效果。
四、结束语
泡泡堂游戏之所以曾经风靡全球,不光是因为其成熟的技术还有其简单的易于操作的界面。在泡泡堂上市之初就得到了大批游戏爱好者的洎捧。之所以泡泡堂游戏在全世界范围内取得成功,高效率的碰撞检测和高准确度的爆炸实现时技术中的关键,所以本论文对在泡泡堂开发过程中的技术难点进行了解析,而且对泡泡堂中的各个开发模块进行了归纳。本论文一定会对以后的程序开发者和技术爱好者提供一种很好综述。