iT邦幫忙

2021 iThome 鐵人賽

DAY 10
0
Mobile Development

從零開始的8-bit迷宮探險!Swift SpriteKit 遊戲開發實戰系列 第 10

從零開始的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


上一篇
從零開始的8-bit迷宮探險【Level 9】與 SpriteKit 的初次見面 (二)
下一篇
從零開始的8-bit迷宮探險【Level 11】在 iPhone 裡蓋座迷宮,就。很。牆
系列文
從零開始的8-bit迷宮探險!Swift SpriteKit 遊戲開發實戰30

尚未有邦友留言

立即登入留言