当前位置:首页 期刊杂志

海豚保卫战2D 游戏在Unity3D 下的开发

时间:2024-05-04

何小慧 廖晓芳 关韵婷

(广东外语外贸大学南国商学院 广东省广州市 510545)

信息时代的到来给人们增加了更多选择的可能性。Unity3D 作为当今游戏开发的主流工具,被越来越多的游戏公司所青睐,具有四大不可忽略的优势:能跨平台发布、2D 和3D 自由转换、易学易用、拥有超高效能。日后的发展前景不可估量,在对Unity3D 深入认识中,有更多人选择Unity3d 进行2D 开发[1]。

《海豚保卫战》此款游戏以短小的故事引出游戏背后的深意:海豚湾被袭击,海豚家族浴血奋战,慌乱中走失的小海豚dolphin 幸免于难,慢慢长大,踏上保护海豚湾家园的路!故事简单却给人怜惜又充满浴血奋战的气息[2]。

1 研究方向和目标

《海豚保卫战》是以海洋保护为主题开发的一款2D 游戏。这一主题确定源于人们对大自然的不敬畏。人类怎么对待大自然,大自然也会以另类的方式对待人类。

气温升高,冰雪消融,对动物来说几乎是灭顶之灾。南极的企鹅和北极的北极熊都濒临灭绝。更坏的消息是,有科学家在青藏高原冰核样本中,发现了古老病毒存在的证据。其中28 种是新病毒。在全球变暖导致世界各地的冰川缩小的状态下,被封存了数万年乃至数十万年的微生物和病毒将可能被释放出来。在大自然的报复中,人和自然的相处,我们是否得以认真反思。而海豚也是其中的牺牲者。

近年来,新闻报道了许多关于海豚自杀的事件,顿时引起大众的关注。许多人感到唏嘘不解:为什么海豚选择集体搁浅自杀呢?

在人类科技日新月异地发展中,人类利用海洋资源的能力不断提高,然而也极大地破坏了海洋环境:声纳探测仪等的运用产生海洋噪声从而影响部分海洋生物机能的正常使用,比如海豚的回声定位系统出现紊乱;人类产生的各种化学垃圾流入海里造成海水污染,海洋生物发生病变……人类对海洋生物最直接的伤害就是买卖屠杀,海豚肉是一种美味的食物,巨大的市场需求让不法分子冒险大量捕杀。

在我们的认知中,海豚是多么善良聪明的生物,从古至今流传着许多海豚救人的传说。它们不仅能救人于危难之际,而且是个天才的表演家。但是人类对海豚的杀戮却从未停断。我感受到人类的可怕,感受到海豚的呼救——以自杀的方式引起关注。所以我想要以教育游戏的形式给人类的内心冲击力和触动感,通过海豚保卫的决心引起人类的关注。与救人形成对比,让人类意识到人类行为对海豚及海洋世界的伤害,呼吁人类保护海洋世界。

2 系统设计

2.1 前期准备

构建大致想法的框架后,进行相关资料的大量收集和阅读素材的参考,开始辑写游戏策划书。通过对游戏竞品的对比分析和思考,将有用的信息融入到策划中,形成模块化的文字内容,不断完善游戏创意设计。利用绘图软件以及数位板,设计出海豚主角形象、游戏名字、游戏海洋场景、水中的人、海洋动植物、游戏排行榜、按钮等游戏素材[3],分析结果如表1 所示。

表1:《海豚保卫战》与竞品的多维度对比分析

(1)准备游戏资源。素材准备是游戏开始的基础。贴图资源来自联想创作;音效资源通过网络搜索获取适合的音频素材。《海豚保卫战》里绘制了差不多50 张图片素材,使用了6 种游戏声音。

(2)设置游戏场景。进入游戏开发工作,前期工作是设计游戏中的所有场景,包括Init 界面背景和游戏场景。根据海洋世界的环境,以及海豚的生存环境,自主创作出了符合主题和游戏中心思想的画面。

(3)移动的地面以及障碍物。游戏通过地面和障碍物的循环移动,海豚固定在一个合适的位置,形成相对运动,显得主角是在不停地游动和跳动。

(4)准备游戏Player,即海豚。在对比中,了解到简单易上手的游戏具有更广的受众面,吸引力更强。所以,我们为游戏作品设计出了海豚专属的“海豚跳”动作动画素材。

(5)游戏开始页面。游戏不是必须要有故事,然而游戏一般会讲述一个故事。欢迎页面是一段简短有趣的视频,作为过场动画,讲述了整个游戏的故事背景。

(6)游戏登录注册界面。一个完整的游戏少不了登录注册界面。通过登录注册账号,玩家拥有了这个通行认证,游戏的过程就能被记录下来。这是对游戏玩家身份的认可,让玩家更加享受游戏中的自我满足感。

(7)生成的游戏额外奖励。“人”在游戏画面中随机出现,作为一种奖励得分物体。海豚通过触碰“人”实现海豚救人的行为,游戏继而对这种行为做出奖励,以此在游戏中弘扬善良的美德。

(8)游戏主角得分与死亡。海豚与叉子是互斥关系。海豚只有越过高低不一的叉子才会不断通关得分,获得相应等级的勋章奖励,否则,海豚生命只有一次,碰到叉子立刻死亡。

2.2 中期程序设计

在unity 软件中创建工程,全部游戏所需素材导入以后,搭建UI、制作动画、创建界面;设置图层层次、海豚登场、封装输入;玩家登录与注册账号、消息框提示状态;叉子循环随机、人循环随机、背景随机;得分救人、碰撞检测、海豚死亡;分数结果显示、+5 分动态显示、得分滑动条动态变化;排行榜更新重置、不同游戏结果等级徽章奖励、游戏重来;添加音效、添加过场动画等,所有过程相关代码写入,有计划有步骤地进行着游戏设计与实现。

3 功能实现

3.1 设置游戏开场动画

利用pr 制作了本游戏的故事背景视频。将视频导入到工程的Accest 中,并放入场景中,利用音效组件设置OnClick 即可自动播放。

游戏起始,随即一阵欢快愉悦的背景音乐响起,小海豚一家在大海里欢快地嬉戏着。可是有一天,一声枪响,突然来了艘人类的船,人类用鱼叉往大海里的海豚刺去。海豚家族几乎全部死亡,小海豚的爸爸妈妈勇敢牺牲,保护了小海豚安全逃离。小海豚不忘海豚爸爸妈妈的嘱托,长大以后踏上了保卫家园使命的道路。

3.2 数据的读写和实时更新

将画面的背景的不透明度调低,达到一种游戏预备启动的效果,使玩家在游戏缓冲区渐进状态慢慢适应。

通过编写程序对比,发现MySql 和sql 的Helper 类太过于复杂,所以我后来选择了相对简单的fileStream 文件流写入和读取方式。当没有用户名时,需要先注册一个账号,利用密码的格式特殊性,添加了是否显示密码的功能。当注册以后,用户名和密码就会保存到txt 文件中。下次登录,数据库里就自动留有信息供用户识别了。当点击登录按钮,界面会跳转到Init 界面准备开始游戏。

从开场动画跳转至新的场景,游戏画面首先显示登录界面,玩家根据输入框提示点击输入框输入内容,点击登录按钮,在未注册的情况下,此时消息框MessageUI 会弹出文本提示“没有这个账号”,于是点击确定关闭消息提示。

在登录界面处点击注册按钮,此时注册界面出现。玩家根据输入框提示点击输入框输入内容,通过勾选是否显示密码的选项框可以设置密码是否可见;需要注意确认密码和密码这两处的输入内容要一致,否则点击注册按钮时将弹出消息提示“两次输入的密码不一致”,点击确定按钮重新输入;当用户已注册,再次注册同一用户名时,消息提示“用户已被注册”;注册成功后界面会自动跳转到登录界面进行登录操作。

继续回到登录界面,玩家输入刚刚创建的账户和密码进行登录。当密码错误时,消息框会自动弹出。输入正确以后,消息框弹出提示“登录成功”并马上跳转到Init 界面准备开始游戏。

3.3 设置初始化界面

在Init 界面中,植物有动画效果,螃蟹会走动,气泡会上升。游戏名字会晃动,伴着有节奏的韵律,点击开始游戏吧!当不玩的时候,点击退出按钮,程序结束,退出游戏,如图1 所示。

图1:游戏初始化界面

3.4 设置游戏场景

游戏进行时,背景看起来是无限重复的。这是利用了横向卷轴的方法,将两幅一样的地面图像贴合在一起,让它们看起来无缝对接。确定地面边界常量,即地面最左边、最右边的数值以及中间数值,分别为 -22.35f、22.35f、0f。在游戏过程中对地面进行越界判断,当边界越过后修正,即可实现循环。

在游戏场景中,利用Random 类我设置了三种背景,可供系统随机选择,每轮的游戏背景都是随机的,增加了游戏的未知冒险性,给玩家带来更多乐趣,如图2 是游戏白天场景,图3 是黄昏场景,图4 是黑夜场景。

图2:白天场景

图3:黄昏场景

图4:黑夜场景

3.5 海豚的状态

海豚先通过animator 设置动画后,让其在游戏中保持动作。海豚实际上是不动的。进入Play 界面后,通过单击鼠标左键,完成“海豚跳”动作,实现躲避陷阱以及触碰救人的功能。

游戏开始时,不按鼠标左键的情况下,海豚可在水中自由游动,距离陷阱会有一段缓冲距离;在游戏过程中,海豚需要及时躲避陷阱(叉子)得分积蓄能量,同时选择救人以获得更高的分数。海豚只有一次生命,碰到障碍物立即死亡,游戏重新开始。

3.6 障碍物生成

障碍物也是不断循环的,叉子的随机高度通过计算得出。先确定叉子的最低和最高高度位置随后用Random 类实现高度间的随机性,即可实现叉子出现的随机高度。《海豚保卫战》经过测试确定了叉子的最值:public const float MIN_Y =-0.19f;public const float MAX_Y = 2f。

3.7 游戏关卡

游戏通过一定分数的判断继而确定所在关卡。当海豚救人或越过障碍物,均可得分。滑动条会根据分数的多少进行等比例地动态增加。为方便进行比例增加,血条是组合而成的,其中红条是得分控制条,将其Image Type 设置为filled类型再通过代码控制红条的fillAmount 即可实现[5]。

3.8 结束界面

海豚触碰到叉子,海豚死亡,跳转至GameOver 界面,点击再来一次按钮可回到Init 界面。重置最高分后,最高分归零,打破上一个最高分会出现皇冠。徽章根据分数范围确定金、银、铜三种徽章等级。回到Init 界面,点击游戏开始,继续新一轮的游戏[4],如图5 所示。

图5:游戏结束界面

4 总结

通过Unity3D 软件和编程工具的结合,可以比较轻松地实现2D 游戏。2D 游戏是游戏开发初学者的福音,同时,相比3D 游戏,游戏的画面能更加简单地做出华丽的效果。这与我喜欢的绘画和设计较相吻合。我想让设计变得更加灵动,所以选择了做2D 游戏[5]。

《海豚保卫战》经过了作品创意、文献阅读、竞品分析、方案设计、技术实现、产品测试等流程,每一步都做了许多的琢磨,以展现更好一点的游戏效果。

通过这样一个有意义的小游戏,激起人内心一点触动,让人类从娱乐中意识到人类行为对海豚及海洋世界的伤害,呼吁人类保护海洋世界,这是《海豚保卫战》游戏设计的意义。哪怕是再小的影响力,那也为世界的改变做出了一点点的贡献力量。希望今后我们能更加完善游戏设计,让游戏变得更加系统化,开发出令人耳目一新的游戏。

免责声明

我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自各大过期杂志,内容仅供学习参考,不准确地方联系删除处理!