iOS遊戲開發新手筆記

在Udemy學遊戲開發,從基礎到完成Flappy bird和Runner遊戲,略過程式碼和大家分享背後細節。


關於課程


前幾天在Udemy發現這堂iOS遊戲開發課程,想想從來沒有寫過遊戲,直接買下當作新世界的起航點。

如果對於iOS App開發陌生,可以看到在編輯器內有許多模板,我目前學習、也是多數人起步的方向,都是在「Single View Application」模板進行開發、而旁邊的「Game」模板倒是完全沒用過。

如果用運動項目來想,大概就是「陸上運動」和「水上運動」的區別吧;就算很熟練跑馬拉松、換到水中的長泳還是需要重新適應環境、學習不同的基本技能。

本來只是想在原先規劃的空檔加減看看、轉換心情;結果因為太有趣了,過去四天除了吃飯外幾乎都在上這堂課!

學會了基本遊戲開發流程、並完成兩個專案:熱門遊戲Flappy bird、跑步障礙賽Cowboy Runner。至於剩下的專案Jack The Giant看起來實在不太吸引我,先無視它的存在。

略過程式碼,和大家分享過程中學到的遊戲邏輯、和我想的有趣範例 :)


物件移動

遊戲畫面每秒會刷新(update) 很多次,我們可以在每次更新時設定條件,讓物體產生視覺上的移動效果。

比如我在畫面中放上謎樣生物,告訴程式每次刷新畫面時,讓他向左移動一個單位;如果一秒刷新60次,就會一秒向左移動60個單位。可以想像我們站在一個超長的跑步機上面,讓相機鏡頭對著自己,就算是在上面坐著,也會被輸送帶慢慢地送出鏡頭畫面外。

在專案練習的橫向2D遊戲,也只是讓背景和障礙物從右到左輸送過去,角色從頭到尾都在原地跳躍。


觸碰偵測

系統偵測觸碰的位置,執行對應動作。

例如上面的範例,我告訴程式要在我點擊的地方出現一個小偷的大頭貼;也可以依照需求分成點擊螢幕時(touchesBegan)出現、或是手指離開螢幕時(touchesEnded)出現等。

在遊戲裡,當滿足觸碰條件,便執行我們預設的動作。例如Flappy bird中點擊畫面讓小鳥往上飛一下、Cowboy Runner中當玩家點到暫停按鈕的位置,就讓遊戲暫停。


物理屬性

賦予物理屬性,像是受到重力影響的自由掉落(affectedByGravity)、以及碰撞的感應範圍(SKPhysicsBody)等。

感應範圍像是在特訓99操縱飛機閃躲子彈、或是在東方系列閃躲彈幕都是好例子,圖片尺寸不完全等於感知的範圍,所以會出現擦過機身但沒有判定失敗的情況。

有看過漫畫獵人,就想像成圓吧。

日常生活如果有覺得遠遠靠近一些人,周遭的空氣就變了,可能是結冰的感覺或是在心中開出粉紅色的花朵,大概類似那樣的感覺,雖然沒有實際碰觸到、但已經撞到氣場(?),就像圖中外圍的圈圈。


動態靜態物件

關於物件可不可以被其他物件影響(isDynamic)位置的設定。

像是玩倉庫番,工人可以推動地上的箱子就是動態;牆壁相對來說就是靜態。或是屁股離開椅子,找到附近的矮櫃,可以抬起來移動就是動態、如果是嵌在牆內的系統傢俱就是靜態,類似這樣的概念。

範例中我把超人設成靜態物件,就不會被從上面墜落的角色壓到畫面外,直挺挺地飄在原地。


Flappy bird

完成品。


不過比起成品,過程中的嘗試更加有趣,像是沒有把地板設成靜態、小鳥一降落地板就被擊沈了;沒有設定禁止旋轉,小鳥就會轉啊轉的好開心。


Cowboy Runner

完成品。


跑步牛仔是用11個圖案快速播放形成的,難以想像細膩動畫的背後有多驚人,這邊看到的第一個念頭是「請人幫忙設計看來資金要充足點呢」。


為何只能在地上奔跑?

作者任性的想讓你飛就飛吧,牛仔先生~人生不設限啊~~~(揮手)


小結

文章和錄影片加起來用了四個多小時整理,希望這些遊戲背後的設計概念,能對第一次接觸的你有所幫助。就算不是開發者,知道這些新東西也很有趣啊~是不是~~


延伸閱讀

Udemy:iOS新手入門課程、台灣線上教學平台Hahow:iOS入門課程心得;新手筆記的初探Xcode編輯器自動排版Auto Layout

Pala

曾任電商公司Research Analyst,現朝iOS Developer自學轉職中。紀錄過去兩年下班自學Python網頁設計Google Analytics分享;也推薦從架站、撰文到運營,首年12萬瀏覽的部落格心得;新文章是iOS 11新手入門課程