開發日誌 #0001 | 立案 和 結構

引言

    其實開始寫Blogger的原因正是想紀錄一下關於學習遊戲開發的過程,尤其是工作一忙就忘了自己原本做到哪,也是十分困擾。但過了幾個月一篇關於遊戲開發的文章都沒有,我都不禁在想自己在做什麼了。
    畢竟我不是什麼大佬級人物,所以大概也不是什麼技術分享,只會是一些紀錄的日誌而已。但願這次能堅持下去,畢竟之前已經中途放棄過好幾次了。

立案方向

    對於遊戲的開發立案大致方向,其實從初中開始想寫遊戲時已經有不少的想法(其實都只是妄想),以前也有過不少Project,但都因為不同的原因放棄或推遲。可能是當時的技術力不足,美術能力欠佳,還有一大堆其他原因。
但現在隨着學習和能力的成長或許也是時候重捨當年的夢想。

前幾年的吸血鬼倖存者熱潮也算是給我不少想法和方向,所以這次的立案會以VS like的遊戲方式為主,也會儘可能的加入其他想法進去,例如街機的遊戲模式等,關於這部分之後會再詳細說。
    **雖然有些過去Project也是可以重新開始開發,但總覺得自己還有不少的能力還需要提升,
        所以這次才是以新Idea出發,也算是試試身手,之後未來可以再談談有哪些棄案/未來的計劃

開發工具

Game Engine : Godot 4.1 (Mono Ver)
IDE : Visual Studio Code
Illustration : Aseprite

開始開發-場景結構

由於用的是Godot,主要的遊戲中的物件都是以節點(Node)呈現,和Unity的Game Object和Component有着微妙的差異,但由於個人習慣問題,開發過程針對Node和Signal等Godot專有開發功能的使用其實還是比較少的。

以下是一張我設想的遊戲關卡的結構圖,
由於是遊戲寫到一半才做的圖,因此正式的Project會存在一些差異。


首先,遊戲的物件主要是由一個結構體(struct)裝載,並以SOA(Structure of arrays)的方式裝載物件的各種屬性,也就是左上的Data。但由於結構體(struct)並不是Godot引擎中認定的節點,不能使用大部分的Method,例如GetNode、GetParent。因此,裝載着並飾演對外介面(Interface)的是一個名為Data Manager的節點,一切對Data的修改都需要經過Data Manager的Method才能修改。

接着,每幀會由名為System Manager的節點都會呼叫Data Manager的Method來修改數據,例如每幀敵人位置的更新等等。以後所有的新系統只需要在System Manager裡新增新的Method即可。

但由於所有的物件都並沒有被渲染,所以畫面上仍空空如也。在此需加入一個Node專門控制物件們的渲染,但在本次Project中,我直接加入在System Manager中,而非獨立的節點。

最後,在整個系統上會有一個獨立的節點,名為Player。它受玩家的Input控制,並透過Data Manager影響Data。

以上是一個場景所使用的邏輯,在畫到一個階段才發現和ECS框架頗為相近,因此也有加入ECS System中System的概念。

開始開發-遊戲循環

再接下來是整個遊戲的循環。


首先,最左方的起點Game Menu,在Game Menu按下不同的選項,選項則會作為Arguments輸入至場景中,例如如果選擇場地為草原,在場景中會出的敵人類型是什麼,關卡時間是多少等等。場景達成某一條件後,會進入End Game,再回到Game Menu。


結論

以上是大致的想法,先寫到這裡,之後會再寫關於已完成的部分。




熱門文章