从零开始的8-bit迷宫探险【Level 10】游戏故事及架构设计

故事是这样的...
游戏的主角是一位登山探险家,名字叫做山姆,他想要攀登世界上的高山,但是登山需要很多的钱。
听说村子里有个黑森林,里头藏了稀有水晶,价值不菲,於是他展开了这个冒险旅程。
夜晚的黑森林,像是迷宫一般,甚至还有坏天气来捣乱。
山姆能顺利躲避坏天气,收集全部的水晶吗?让我们继续看下去~

游戏开发企划书

接着,我们来设定一下心中的游戏企划书,要开发的项目大致上分为这几类:

游戏规则

玩家必须操控主角,在迷宫内收集完全部的水晶,并且逃避怪物的追击,一但被怪物碰到,就会损失一条生命 (初始共有四条生命),当生命值用完时,游戏结束,计算最高得分。若是收集完全部的水晶,则进到下一关,继续挑战更高的得分。玩家如果收集到魔幻水晶,会持续一段时间不会被怪物伤害,在这段期间内可以反击怪物,将怪物赶回出生点。

游戏名称

  • Magical Crystal (魔幻水晶)

主角设定

  • 山姆
    • 玩家可以移动主角 (上、下、左、右四种方向)
    • 动画:四种方向的移动动画
    • 有自己的移动速度
    • 有自己的座标位置

怪物设定

  • 怪物共四只
    • 坏天气1号:下雨 (Rain)
    • 坏天气2号:暴风雨 (Storm)
    • 坏天气3号:闪电 (Lightning)
    • 坏天气4号:雪人 (Snow)
  • 怪物的特性
    • 会自己移动 (上、下、左、右四种方向)
    • 有不同的移动模式 (追击、逃逸、玩耍、重生)
    • 每种怪物追击主角的方式不同,有自己的个性
    • 动画:四种方向的移动动画
    • 有自己的移动速度
    • 有自己的座标位置
以程序面思考:建立 "角色" 类型的 Class

我们可以选择帮各个角色建立自己的类别 Class,优点是简单明了,缺点是可能会有很多重复的程序码。
在这游戏中,会移动的角色就是主角跟怪物,他们都有一些共通的特性,只有某些地方不同,在这边可以利用类别继承的优点,将共通的基本属性及方法写在共用的"角色"父类别,再帮他们各自的子类别(主角、怪物)加上一些自己专属的属性及方法。

战利品/食物

  • 水晶
    • 主角要收集的东西,全部收集完毕就会破关
  • 魔幻水晶
    • 主角取得後,怪物就会变成逃逸的模式,维持一段时间 (20秒)
    • 这时候当主角碰到怪物,怪物就会回家重生
  • 香菇
    • 主角吃到後,怪物会静止移动,维持一段时间後恢复
以程序面思考:
建立 "收集物" 类型的 Class

取得不同的收集物,会有不同的效果,但是同样都有自己的座标位置,一样可以规划用同个父类别的方式实作,针对有特殊功能的物品再使用继承父类别的方式建立新的子类别。并侦测当收集物与主角位置重叠时,执行不同的效果。

迷宫

  • 墙壁种类
    • 栅栏
    • 木头
    • 叶子
  • 隐形墙壁种类
    • 能隐身的树
  • 特性
    • 主角跟怪物都不能穿透墙壁
    • 墙壁的贴图依种类不同
    • 主角可以进入隐形墙壁,在这个位置可以躲避怪物的追击
以程序面思考:
可使用 阵列 Array 先写出地图的样子,并定义墙壁的位置及种类

得分

  • 水晶
    • 收集到一颗水晶得 10 分
  • 魔幻水晶
    • 收集到一颗魔幻水晶得 100 分
  • 香菇
    • 收集到一朵香菇得 200 分
  • 击退怪物
    • 在怪物是逃逸模式的情况下,攻击怪物得 50 分
以程序面思考:
使用 Int 类型的变数纪录分数
并且将最高得分储存至 .plist,重新开始游戏时,可以取得本机历史最高分

音乐及音效

  • 点击方向键的音效
  • 游戏开始音乐
  • 背景音乐
  • 收集东西时的音效
  • 怪物攻击主角时的音效
  • 主角反击怪物时的音效
  • 主角吃到香菇时的音效
  • 游戏结束音乐
以程序面思考:
使用 AVAudioPlayer 播放 mp3 档案

场景的切换

  • 第一场景:迷宫游戏本体
  • 第二场景:游戏结束画面
以程序面思考:
建立两个不同场景的档案 .sks
使用 SpriteKit 的 SKScene 切换场景

今日小结

将游戏大纲列出来,可以帮助自己思考游戏开发的整体脉络,并将同类型的角色或物件归类,写出更弹性、易读的程序码。接下来就会开始进入游戏开发实作的部分,一起探险吧!/images/emoticon/emoticon77.gif


参考来源:
游戏发想参考自:Pac-Man


<<:  Day3 Let's ODOO: 基本架构

>>:  Day 18 ( 中级 ) 地球绕着太阳转

DAY 27 文章列表

嗨,今天来完成底下文章的部分,金嗨,内容越写越多,因为快要完赛了节奏没抓好XD,前面都是分开解析的,...

Day16- 让页面不再被上下左右上下左右

玩贪食蛇游戏时按上下左右按键会触发网页上下左右滚动,想把这个预设功能关掉,查了一下网路上热心大大的解...

[Day 11] 实作 Ktor i18n 机制

以微框架来说,i18n 不是必备的功能,但如果是想要开发面向一般大众的服务,在这个国际化的时代,i1...

受信任计算机系统评估标准(TCSEC)

TCSEC定义了评估可信计算系统的标准,该系统包括四个分类。每个分类可以分为几类。B分类的类别(B1...

DAY20 - 终於榨不出汁(文章) 了

计画永远赶不上变化 看了好多年的铁人赛,今年总算加入了 原本就知道可能没那麽多东西可以写,因为会的实...