請聽題:做一個遊戲,統共分幾步?
答:2步,第一步,想想要做一個什麼遊戲,第二步,把遊戲做出來。
謝謝大家。

如果做一款遊戲真的這麼簡單就好啦,面對“遊戲開發”這四個大字,很多人都會望而卻步吧,要麼不會畫畫,要麼不會音樂,要麼不會編程,要麼不會寫作,困難要多少有多少,而手裡能打的牌,可能就那麼一張,有兩項技能的人都能算得上翹楚了。
但是實際上,從玩家變成遊戲開發者,在擁有意願的基礎上,所缺少的,恐怕僅僅是一個契機。而2023年北京核聚變的BOOOM會場上,有一款遊戲就給了我這個契機。
Rebound & Retry
作者是機核用戶:Raker君
這是一款非常簡單的控制小球彈跳的遊戲(在機核也能搜到),開發者說,他在製作參加BOOOM的主要參賽作品之外,利用閒暇時間,製作了這款遊戲,但就是這樣一款隨手之作,我卻玩的樂此不疲。
就在這期間,我突然察覺,今年的最後一次BOOOM活動,已經悄然拉開序幕……天時地利人和,要做了嗎?現在?在這裡?!
在這份激情的推動之下,我報名參加了本次的BOOOM活動。
一、開題前的等待
報名後到開題之前的這段時間,心情是忐忑興奮的。大概這就是第一次參加活動的那種興奮勁兒,讓我實在是按捺不住。打開B站,開始大看特看各種國內獨立遊戲開發者的視頻,並藉此來對國內的獨立遊戲開發環境進行一個初步的評估。
有時候,看到一些高手,真的是自慚形穢啊,一個個的技術牛逼,審美能力也高,說話還好聽。讓我不得不懷疑自己,真的有資格加入到這個行列中去嗎?
但另外一些時候,會看到一些UP主展示的內容相對沒有那麼高端複雜的,但是聲音與話語之間散發出來的那份對於製作遊戲的熱情,卻分毫不輸於我心目中的頂級開發者大牛。其實我內心之中都明白,哪有什麼資格不資格,只要想做,願意做,做了出來,那就是遊戲開發者。
加入了BOOOM的開發者群之後,看到了大家熱烈在討論本次活動的樣子。其中有些是打過好幾次BOOOM,甚至是一直在參與國內外各種GameJam的老手,還有一些是像我一樣第一次參加類似活動的新人,大家發表意見,交換意見,拋出話題,熱烈討論。
組隊環節在這個時期就已經開始了,成員們會在機組的 🙋🏻♂️BOOOM招募夥伴 以及 🤝🏻BOOOM自薦合作 發帖組隊,機核的工作人員們也會定期在群裡搬運這些招募組隊帖,偶爾我也會在別的GameJam群裡看到BOOOM的組隊招募信息,甚至直接收到了組隊邀請。
不過我已經決定了,雖然是首次參賽,我這次要SOLO。
我認為,作為一個遊戲開發者向別人介紹自己,最好的自我介紹就是一款自己開發的遊戲(個人觀點)。同時也是對自己的一個考驗和測試。我到底有沒有真的那麼喜歡開發遊戲呢?我對遊戲的喜歡是僅限於玩,還是更願意去做?憑我現在的能力,到底能走多遠?
當然,敢這麼做的自信心,也是來源於,我本身就是遊戲行業從業者的一個優勢條件。從畢業之後,就一頭扎進國內的遊戲行業,雖然還沒有10年經驗,但是也幹了7、8年的遊戲開發編程工作了,換句話說就是幹了7、8年仍然碌碌無為……咳咳,總之我具備了能夠作完一款電子遊戲,最基本的一個條件,程序員。
不是說程序員在團隊中的地位有多麼重要(心裡話是,程序員就是團隊基石!),但是如果團隊中有一個足夠靠譜的程序,那麼這個遊戲能夠順利完成的概率,將會極大的提升。
預先製作這個策略,也是一些早早就組好的團隊們可能會選擇的方案之一。先提前決定好遊戲的類型,比如平臺跳躍,卡牌,RPG,AVG,FPS等等,決定好之後,先由程序去大體上做好一個系統架構,具體的模塊細節,等到開題之後再詳細定製,這樣也能節省很多時間。
實際上,在我從業期間,遊戲開發這項工作也是一直如此,在不同項目階段,大家能做的事情會受到彼此之間的進度影響,程序的工作需要在策劃的策劃案決定之後才能開始,關卡的製作則需要在程序做好了關卡編輯器或者建立起遊戲的基本邏輯後才能編輯測試,音樂需要確定曲目數量,長度和基調,美術需要一份詳細的需求列表。如果這些工作安排的不夠合理,會出現大量的時間浪費,這是對項目負責人,或者說是製作人的一個考驗:如何合理安排工作,保證團隊成員工作效率最大化,順利完成遊戲製作。
這個問題,越大的團隊越複雜,反過來,對我這種SOLO選手則十分簡單明瞭,因為人多意味著交流溝通成本的提升,而單人則只需要安排好自己的時間即可,不需要擔心拖累別人,也不會被別人耽誤而焦躁。當然,代價就是所有的事情都要自己做。
我也早有覺悟。
二、開題後的規劃
本次遊戲開發主題 《天使的骰子》/《惡魔的骰子》,以不公平的隨機為主題來進行開發。
這個題目給出了一個具體的物體,骰子,也給了一個抽象的概念,不公平。
抽象的東西總是難以想象的,先從具體的東西來吧,從骰子開始去發散的話能想到什麼呢?

思緒逐漸飄遠……
打住打住……這麼頭腦風暴下去,要從宇宙大爆炸飄到世界的盡頭去了,回頭審視一下這些點子,我非常中意的是那個,雙人100面骰子,撞擊之後根據傷害判定來改變骰子面數的點子。但是這就意味著……我要做100個骰子……啊哈哈……PASS……
但是撞擊傷判這個核心機制似乎是沒什麼問題的,那就把改變面數,變成扣血,讓骰子互相碰撞來進行交鋒,骰子的點數表著隨機,但是因為玩家是可以控制骰子的,不同於扔下去就聽天由命的擲骰,我可以一直在對骰子本身進行操控,這不正式不公正的隨機嗎?還可以設計不同的骰子作為不同的戰士,擁有各種特殊能力……這樣,一個骰子撞擊格鬥遊戲的雛形就在我的腦海中誕生了……

理工男の美學
既然骰子已經投下,那就與想一下,大概需要做的工作吧:
- 至少做兩個不一樣的骰子,模型製作。
- 基礎的骰子操控邏輯,程序編寫。
- 本地雙人對戰的按鍵交互邏輯,程序編寫。
- 戰鬥的傷害判定邏輯,程序編寫。
- 單局的完成流程控制,程序編寫。
- 基礎的UI交互邏輯,UI製作+程序關聯。
- 戰鬥BGM,音樂製作。
- 防止單人無法遊玩,添加基本的AI控制邏輯,程序編寫。
按照優先級先後順序,大概列下來,中間也想過各種有的沒的,什麼世界觀背景設定啊,故事大綱啊,CG演出啊,特效啊,技能啊什麼的……但是在工作量評估之下,我還是選擇了非常保守的,儘可能減少非必要的成分,以完成遊戲為第一優先目標決定了以上工作內容,那麼接下來就是實施環節了。
三、截止前的實施
建模什麼的我是從沒做過的,最早的時候我想的是,骰子就是一個方塊六個面,每個面上有不同的點數吧,那我就畫出來六個面的貼圖,直接貼到Unity的默認模型Cube上不就行了?Sai 2,啟動!

以前畫直播封面的時候用過點,偶爾也會畫點腦洞什麼的,究極抽象畫家
什麼嘛……這不是挺簡……





1 / 2
???
額……似乎跟想象中的不太一樣啊……我甚至都產生了某些奇特的幻視……
這時候就得活用自己的聰明才智……去BOOOM群裡求助!最終在大家的嘲笑之下,做出了最好的選擇,Blender下載!
熱門軟件,教程就是多,打開B站,搜索“三分鐘 Blender 骰子”,回車!

視頻時長10分9秒
30分鐘之後,一顆新鮮的骰子就出爐啦!對比之前的的骰子,真的是高下立判……

刻意沒有倒角,增加視覺上的攻擊力,理工男の美學
換一個顏色就是一個新戰士(偷懶太爽啦),建模工作,完成!
接下來的一大段工作內容,都是相對比較枯燥的編碼工作。簡單劃分一下模塊,處理數據的:DataManager,處理遊戲邏輯的:GameMain,處理UI顯示變化的:GameUI,玩家1的控制:Player0Control,玩家2的控制:Player1Control。但是同樣的操作要寫兩份非常麻煩,所以多一個玩家基類:PlayerControl。
統共加起來算了一下……也就不到1000行代碼。
我就挑一些比較有印象的模塊和實現簡單說說吧:
玩家控制:Unity早期有一個非常經典的Demo,名子叫《Roll a Ball》,裡面有一個非常簡單的WSAD控制小球移動的代碼。在此基礎之上,只要在Unity的InputManager裡面,修改一下按鍵映射,就能實現我所需要的本地雙玩家控制移動功能。
當然僅僅是一個移動還是不夠的,玩家類裡還需要血量,點數,移動速度,傷害處理,狀態管理等等各種屬性和方法,這樣才能完善功能的實現。
傷害判定:在做這個部分的時候,就要講一講我之前沒有提到的傷害公式,即:傷害=點數*速度,這是我非常滿意的一個點子。因為如果我僅僅是依靠點數來進行傷判,那麼可以預見的最優策略則是:開場擺出六點,然後等別人來撞。
這可完全不是我想要看到的情況,所以我把傷害數值與速度直接相關,靜止不動的,速度為0,那麼不管你的點數有多麼大,給對手造成的傷害永遠是0。想要造成傷害,就必須要動起來,而具有物理特性的骰子一旦動起來,則必定會開始滾動,那麼點數就會不斷變化,無法控制,速度與點數之間的取捨就是這場博弈的核心問題。
其實對應的策略變更也很直接,即:保持移動或者閃避,避免在低速狀態下被撞擊,以及抓住對手的剎車轉彎等減速瞬間,用最大速度裝上去爭取更高的上傷害,這就是我想要的效果,也是格鬥遊戲中的經典立回思路。
AI控制:這部分是我在完成基本的遊戲邏輯之後開始考慮的。因為之前參加過BOOOM的試玩,所以我明白對戰遊戲,如果沒有對手是多麼的尷尬。AI控制這個功能,是勢在必行的。
但是初步實現的時候,我花了一個晚上去詳細調試,加了很多邏輯判斷,效果都不太好。要麼骰子會飛出場外,要麼在地表抽搐,要麼待著一動不動,攻擊意圖和求生意圖總是沒辦法很好得協調,跟大家討論交流,有說機器學習的,有說全隨機的……一晚上就搭進去了,進展為0。哎……這也是常有的事啦。
最後其實還是用了一個個人感覺很low的做法,在安全閾值的限制下,做一個不穩定系統,同時給AI輸入做一個CD限制,避免過分頻繁的操作導致抽搐。





1 / 2
渣代碼……輕噴……
最終效果也是非常令人滿意,讓人誤以為是非常高端的AI技術,其實底層邏輯就是在不會輕易自爆限制下的一頓亂滾XD。
UI優化:配合傷害公式,為了更直觀的展示玩家的點數和速度,我做了點數顯示和速度條來輔助玩家掌握自身狀態。
同時,給雙方都添加AI控制選項,此舉也直接相當於增加了一個全新的玩法,也就是鬥蛐蛐。這是最簡單的享受,對於已經做好了AI操控的狀態下,這也沒有任何難度和工作量。
在這之後,UI基本就是最終版的樣子了,本來我還想優化一下速度調的表現,做成倒三角的那種類似於賽車飛機等發動機出力的圖表樣式,但是礙於能力不足,沒能實現。

挺像回事的,是吧
這裡我真的很想吐槽本屆遊戲遊玩中的好多遊戲,全都沒有返回按鈕!界面UI交互的基本邏輯,進入退出,打開關閉啊!你不能讓玩家想回到標題就得重開遊戲吧!天惹~
音樂製作:說起來也有些慚愧,實際上國慶期間……我在家裡基本上是完全沒有動工的……因為要帶老婆孩子回老家團聚,而且我並沒有筆記本(臺式機神教),於是我靈機一動!我SteamDeck裡面不是裝了一個Windows嗎?直接用Unity的Plastic SCM版本管理系統遷移到Deck裡面,不就可以在家裡開發了嗎?





1 / 2
這錯誤至今也不知道怎麼處理……
結果是項目確實遷移到Deck上了,雖然有報錯,而且至今都沒有解決,Plastic SCM這工具我也沒搞太明白怎麼用,結果就是操作並不能同步……最終也沒在Deck上乾點什麼正事(遊戲機,那就得玩遊戲)……
結果就是9月29到10月5號這7天基本都沒幹什麼編碼工作,心裡實在有點虛,於是打算在手機上搓一個BGM戰鬥旋律出來。跟群友諮詢比較合適的軟件後,最終選用了庫樂隊,鼓機,搞出來了一段感覺上像是戰鬥音樂的東西。

不過這個BGM在錄音時精度很難控制,還是得需要一個精確的音頻剪輯軟件,簡單瞭解了一下相關軟件後,我選擇了GoldWave。再次剪輯處理之後,BGM才終於能過夠投入實用。

掐頭去尾對波形,讓BGM循環儘可能自然
完善增強:鑑於我的遊戲本身設計就很簡單,工作量也是精心刪減,只保留了最重要的部分,所以在10月7號晚上,我就完成了預想中的工作內容,甚至還有餘力添加了碰撞時的慢動作效果。打包上傳,宣告著我的首次BOOOM活動參加成功!
這時候已經有一些速度很快的團隊早已提交了作品,在轉悠了一圈之後,我最終還是發出了很菜的聲音……

菜到了
剩下時間還有4天,還有愚地!還有愚地!從正拳開始練起罷!能做多少做多少! 呀嘞呀嘞,終於有一點GameJam的感覺了!
這4天,我最終完成了入場動畫,強化骰子621,隱藏BOSS九號球這三部分,實際上從我開始做UI優化的速度條的時候,我腦子裡就在不斷想象著,要致敬一波裝甲核心。所以這三個東西基本全都是為了這個目的肝出來的。





1 / 2
強化骰子621和九球
特別是隱藏最終BOSS九球,最後提交截至時間之前我還在測試它,為了致敬原作的最終戰,還搞了要連贏三次的離譜設定,最終在最後一秒提交了一個新增了不少功能與bug的殘念版本。
理論上這次BOOOM活動裡,我身為開發者所做的事情就到此落下帷幕。不過比賽之外還有不少事情可以繼續做下去。
四、結束後的回顧
現在想來,骰子撞擊的這個點子來源,可能是我小時候自己在娛樂匱乏的時候自己想出來的一個玩法:砸磚頭。小孩子的想象力都是非常豐富的,我把不同顏色的石頭,不同種類的石頭,岩石,水泥塊,紅磚,黑心磚,鵝卵石,甚至是土塊都想象成各種戰士,把石頭砸來砸去,當作是戰士們在戰鬥,缺塊損角就是受傷,裂成兩半就是死亡。
小時候,我在樹林邊的沙坑裡砸石頭。長大後,我在電腦世界裡砸賽博骰子。人生,很奇妙吧。
一開始其實不用想太多太複雜,一旦做起來,想法只會源源不斷地冒出來,還得多虧了我的能力有限,避免我走太遠搞到難以收場。就比如寫遊戲簡介的時候,我腦子裡回想起了《刃牙》地下競技場篇的開場白,地上最強骰子爭奪戰!所以我也在做的時候把燈光調成了點光源,來模擬一個擂臺的感覺。
關於隱藏關,我還做了一點點小心思,就是遊戲封面圖上的骰子,其實是強化骰子621,而簡介裡的圖片則是普通骰子,就有一種做了,但是隱藏關要藏著點,但是但是我費了這麼大勁做的東西,萬一沒人發現怎麼辦,最後還是蚌不住直接告訴大家怎麼進隱藏關了QAQ。其實這裡有一個我個人非常慚愧的事情,那就是隱藏關的BGM,真的就是直接拿了九球戰的遊戲原聲……這應該是違規的吧,但是我實在是做不出能還原出那種感覺的音樂,時間上也來不及了,心裡就給自己開脫,反正是隱藏關,大家進不進得去還兩說呢,就這樣吧。如果之後有機會,還是參照原BGM,自己想辦法搓一個印象曲來致敬才吧……如果因為這個失去資格,我也沒什麼可辯解的。

封面圖,強化骰子621
雖然比賽已經結束了,但是遊戲距離下一個理想形態還有很多工作要做,沒來得及的bug修正,難度調整,之前想做也沒能完整做出來的Trans-AM系統,所幸的是,到了今天,這些東西基本都處理完畢了,也收到了不少反饋,對我起到了極大的鼓舞作用。
其實在之前的一段時間,我都在困惑一件事情,要不要把這個項目繼續完善下去,這個玩法得到驗證了嗎?有價值深挖嗎?如何決定項目是否具有發展前景呢?這些問題對我而言有些過於複雜了……BOOOM群裡的大家似乎已經是進入了宴會的結束階段,有的人在享受不同的作品,有的人已經開始準備下一場GameJam活動了。明確表示想要繼續做下去的似乎佔很少的一部分。
我跟同事聊,他說,我只是缺少下一個項目,只要有了新的目標就會忘記這一個。第一次的體驗總是特別的,也許我只是沒能分清這份衝動是來自第一次的興奮,還是對這個遊戲想要繼續開發的興致。也許還需要一些時間來沉澱一下吧……
總而言之,邁出了第一步,我知道我還會繼續走下去。