基于Android的游戏大厅的分析与设计
摘要随着3G移动网络应用的普及以及4G网络的推广,手机游戏的规模、复杂程度日益增强;其技术手段、设计思想、系统体系结构都发生了深刻的变化。我国网络游戏市场发展迅速并进入了一个高速增长期,并已经创造了较大的产值,带动了相关产业的发展。如今网络上的提供的游戏大多数是单机版的,界面单一,功能单一。本系统将实现集益智类、竞速类、射击类、棋牌类、动作类等各种类别的游戏为一个游戏大厅,这样手机游戏将不在是一个功能单一界面枯燥的游戏,而是一个较完善的类似“游乐园”的综合娱乐游戏平台。当用户进入游戏大厅,可以根据自己的兴趣选择某种类别中的一个游戏玩,点击一款游戏图标后即进入该游戏子菜单。
【关键词】移动网络 游戏大厅 综合娱乐游戏平台
1 综合娱乐游戏大厅介绍
1.1 项目背景
伴随着Google Android操作系统的盛行,国内外的开发团队也逐渐的壮大起来了,基于Android应用的开发等已逐渐倍受大家关注,而手机游戏开发历来是移动开发中分量最重的部分,面对如此火爆的Android市场自然也不甘示弱。由于Android的应用层开发是基于Java的开发,所以必有其可以快速移植J2ME开发的游戏的优势,但是移植的游戏必定也不能发挥Android操作系统独特的特性,所以目前基于Android游戏开发的市场还是不够成熟的,面对这种情况,在了解Android SDK基础上,我们团队打算开发一款集益智类、竞速类、射击类、棋牌类、动作类等各种类别的游戏为一个游戏大厅,此游戏采用OpenGL绘图技术,实现2.5D斜视角的立体视角,采用SQLite轻量级数据库存储技术等旨在为Android量身打造一款综合类游戏。
1.2 研究价值与创新点
Android平台上的游戏相比应用软件,不需要进行严格的市场细分,不需要针对目标用户量身定制。这是因为游戏玩家的核心需求是统一的,那就是:娱乐与打发时间,这种需求附着于特定的社会发展阶段,不受地域的限制,甚至于能够穿透文化壁垒。因此,绝大多数种类的游戏都具备传染性与普适性,每一个售出的游戏都将会点燃周围潜在玩家的激情,最终吞噬整个需求市场。
我们提出建设的综合娱乐游戏大厅将集成若干不同主题的游戏,但这些游戏又不是完全独立的,而是通过积分、经验值、用户等级等信息参数将整合游戏平台做活,将其“融会贯通“,让玩家仅仅在我们的一款应用中就能体验各种主题的游戏,从而在众多游戏中脱颖而出,保持持久的活力。
综上所述,Android平台相比其他智能手机平台有许多优势,这些优势使得Android发展迅速,而Android游戏作为Android手机最主要的应用之一,其研究价值有目共睹。相信,我们提出的综合娱乐游戏大厅概念在深入挖掘与不断努力下将会得以成功。
2 总体设计
2.1 研究目标
本作品的研究目标是实现基于Android的综合娱乐游戏大厅。这个游戏大厅类似于我们生活中的“欢乐谷”、“迪斯尼”游乐园一样,包含若干不同的主题,不同主题各有特色,玩家可以进入游戏大厅,选择自己喜欢的游戏尽情的“游玩”,完全可以在我们开发的“游戏乐园”中寻找欢乐。通过这种创新性的游戏整合方式,用户不必下载很多游戏,而是拥有一款应用即可。在整个游戏平台中,各个游戏之间不是互相割裂的,而是通过积分、经验值、用户等级等参数信息进行多位一体的融合。
如图1所示,从模块图可以看出,综合游戏娱乐大厅是各个游戏模块的入口,从大厅可以进入不同主题的游戏,并且从每款游戏可以返回游戏大厅。目前我们游戏平台融合了3大游戏:敏捷大师、拯救螃蟹、消灭怪兽。后期,我们拟计划开发7款不同主题的游戏,并且将其有机地融合于一体。
此三款游戏采用的主题元素各不相同,敏捷大师涉及对颜色的识别、对混淆信息的辨别能力以及反应速度,拯救螃蟹涉及玩家的策略性、逻辑性,消灭怪兽涉及逻辑推理、前瞻性考虑、大局把握等。
2.2 设计思路
2.2.1 游戏大厅
对于整个游戏来说,游戏大厅地图界面实则是各个游戏的入口,在该界面上放置了进入每个游戏的按钮,这些按钮都通过ActionListener被监听,一旦玩家单击按钮,按钮则被激活,随后进入对应地游戏。
public void onClick(View v) {
//监听事件处理函数
Intent i = null;
switch (v.getId()) {
case R.id.start_iqtest://敏捷大师游戏入口
i = new Intent(this, MixedColor MenuActivity.class);
break;
case R.id.start_freemonster://消灭怪兽游戏入口
i = new Intent(this, org.yay.heroes.Menu.class);
break;
case R.id.savepangxie://拯救螃蟹游戏入口
i = new Intent(this,com.howfun.android.antguide.Splash.class);
break;
}
if (i != null) {
startActivity(i);//开启选择的游戏
}
}
2.2.2 敏捷大师
该游戏是一款益智类游戏,主要特色是随机生成不同颜色的矩形,该矩形上有随机生成的文字描述,并且该文字也有不同于矩形背景颜色随机生成的颜色。该游戏,我们通过设计一个UIModel类来,利用Java的多线程机制实现游戏每一个关卡的自动生成。
public void randomMethod(int[] arr, int start, int end) {
if (start >= end) {
return;// 递归函数出口,当start>=end
}
for (int i = 0; i < arr.length; i++) {
if (arr[i] == FIELD_VIRGIN) {
arr[i] = FIELD_MARK;//如果颜色未被分配,则进入后,将其标记为已分配
int selectedIndex = start + mRan.nextInt(end - start);
//next.int()函数就是系统内置的一个随机数生成函数
arr[i] = selectedIndex;
randomMethod(arr, start, selectedIndex);
//递归调用随机函数,并且传递给end形参的值变为了selectedIndex
randomMethod(arr, selectedIndex + 1, end);
//递归调用随机函数,并且传递给start形参的值变为了selectedIndex+1
break;
}
}
}
2.2.3 消灭怪兽
该游戏是一款策略性游戏,玩家通过点击怪兽互换位置,将3个或以上的怪兽置于同一列或一行即可消除该怪兽。
此游戏我们采用了开源游戏引擎AndEngine,它是一款Android平台的开源2D游戏引擎。在该游戏中,我们使用句柄实现线程通信,通过随机函数选取怪兽。
/*线程之外发送消息的句柄*/
private Handler handler = new Handler(){
public void handleMessage(Message msg) {
switch (msg.what) {
case 0:
onStopGame();//停止游戏
break;
case 1:
submitScore();//提交游戏分数
break;
case 2:
showLongMessage("死局");//经过函数判断游戏死局,则给用户提示信息
break;
case 3:
doTips();//消灭怪兽后,显示发光,用于提示用户
break;
case 4:
showLongMessage("超时");//当时间超过限制,则提示超时
break;
default: break;
}
}
};
2.2.4 拯救螃蟹
该游戏是一款休闲类游戏,玩家通过在屏幕上划线,指引螃蟹回家。
此款游戏的设计,为了能够有效保存用户的数据,我们使用的SQLite Database, 它是一款轻型的数据库,它的设计目标是嵌入式的,而且目前已经在很多嵌入式产品中使用了。它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了。
Android平台提供给我们了一个数据库辅助类来创建或打开数据库,这个辅助类继承自SQLiteOpenHelper类,在该类的构造器中,调用Context中的方法创建并打开一个指定名称的数据库对象。继承和扩展SQLiteOpenHelper类主要做的工作就是重写以下两个方法。
(1)onCreate(SQLiteDatabase db) : 当数据库被首次创建时执行该方法,一般将创建表等初始化操作在该方法中执行。
(2)onUpgrade(SQLiteDatabse dv, int oldVersion,intnew Version):当打开数据库时传入的版本号与当前的版本号不同时会调用该方法。
除了上述两个必须要实现的方法外,还可以选择性地实现onOpen 方法,该方法会在每次打开数据库时被调用。
2.3 拟解决的关键问题
2.3.1 游戏地图的设计
此问题需要解决在Android平台游戏设计中如何能够更快速的对复杂的游戏地图进行存储和解析,合理有效的数据结构对提高游戏整体的效率极大地帮助。
2.3.2 游戏性能的优化
此款综合娱乐游戏大厅整合数款游戏,系统层次结构复杂,功能模块众多,如何将各大主题的游戏合理地、无缝地有机结合起来,并且还能保持系统性能的高速,使我们需要解决的难点。
2.3.3 游戏AI的实现
在Android游戏中,人工智能的高低直接决定了游戏互动性,在消灭怪兽游戏设计中,需要设计针对不同类型怪物需要作出不同的防御反击。还需要设计怪物的自动寻路如何能够在最短的时间之内走出障碍。
2.3.4 人性化UI设计
舒适的用户界面能够给使用者带来良好的用户体验,可爱精美的画风会给玩家留下美好的印象,如果你的用户界面一团糟那么即使你的可玩性再高玩家可能也不会去想动他。
参考文献
[1]李华明.Android游戏编程之从零开始[M].北京:清华大学出版社,2011.
[2]李刚.疯狂Android讲义[M].北京:电子工业出版社,2011.
[3]杨丰盛.Android技术内幕:系统卷[M].北京:机械工业出版社,2011.
[4]梅尔(Reto Meier),王超.Android 2高级编程(第2版)[M].北京:清华大学出版社,2010.
作者简介
喻思远(1994-),男,湖北省赤壁市人。本科在读,主要研究方向为网络舆情研究与数据挖掘、移动平台应用开发。
作者单位
石河子大学信息科学与技术学院新疆维吾尔自治区石河子市832000