Booom開發Solo完成經驗總結(2/2)


3樓貓 發佈時間:2023-10-12 00:32:29 作者:狗見了英語都搖頭 Language

這裡是 狗見了英語都搖頭 ,很開心三週內真的把遊戲肝出來了,遊戲的名字叫《黑牆之下》因為這後半程比前半程的涉及密度和開發密度高得多,沒有留下很多圖片,看著全是字可能會比較枯燥不好意思。
取名字真的是這個過程中第二難的事,之前本來叫《黑牆清潔工》的,被朋友狠狠吐槽像家政服務,最後取了《黑牆之下》這名字,按設定來說是符合的,但是一點都沒體現出玩法,還是不太滿意,歡迎大家在能試玩後在評論區競標,我就挑一個好聽的改掉。
設計思路在上一篇其實說了不少,這篇創作筆記的目的是記錄Solo過程中的遊戲設計思路的迭代和一些快速查錯和快速掌握新領域基礎技能的方法。能幫助到下一屆想參加Booom,或者找到有興趣想和我把這個項目發展成長期項目的美術和程序就更好了(想借此宣傳一下騙騙關注https://www.gcores.com/games/113223這個目的是可以說嗎|・ω・`))。

準備界面

開始界面

移動

攻擊

關卡選擇

準備界面

開始界面

移動

攻擊

關卡選擇

準備界面

1 / 5
一些截圖

迭代部分

打算分享的迭代相關的內容主要分三部分:敵人AI系統,商店系統,Meta系統,其中敵人AI是主要迭代對象。
商店系統
  1. 商店系統的迭代其實比較自然,最開始是為了讓每局戰鬥的收益有地方花費,所以是把所有強力插件和一些增益一股腦放到商店裡。
  2. 霰彈國王裡自我增益和敵人增益綁定的設計確實很棒,我的遊戲裡本來是打算在每局戰鬥結束後選擇增益,但後來把這個時間段留給了Meta因素,這是後話。我的遊戲裡有警戒值這個設定,為了把這個設定利用起來,我設置了跟隨警戒值解鎖的商店系統,並把敵人增益和購買功能綁定在一起,提高遊戲的策略度。
  3. 完成第2步的迭代後自己試玩了一把,說實話感覺2方案一點策略度都沒。於是我將商店系統進一步鎖死,每個強力插件和增益都與唯一的警戒值綁定。並從數值上設置了一個小謎題,進一步提高遊戲的策略性。
不考慮增益的情況下是無法買到警戒度為2的“出九宮”插件的,需要結合其他警戒度來達成這個目的。相應的拿到“出九宮”插件這遊戲裡地方棋子對主機的威脅會小非常多,就當做是一個逃課插件吧。
等待被開啟的商店系統

等待被開啟的商店系統

Meta/問卷系統
這個系統起初是完全不打算做的,取而代之的是一套和商店聯動的升級系統,但說實話Booom時間有限,我Solo開發的規模也有限,每局遊戲都結算升級在我的設計裡不太方便,我又叛逆,很排斥做成三選一的升級形式,審美疲勞了說實話。所以打算找其他系統來填充這部分。
當時距離活動結束大概還有六天,那天晚上室友之間在做那個MBTI人格測試,我注意到一個很有意思的現象,幾個很沒興趣的室友看到其他人在討論自己的測試後自己主動去找網站測了。我覺得這是一種尋求心理認同的體現,我搜資料初步判斷了一下實現難度,決定在戰鬥結束後增加這個問卷系統,它負責填充劇情的同時,增加一點點Meta元素,你可以在完成對話後查看其他人的選擇結果,提供一些些遊戲外的樂趣,也許還能起到拉新作用。
我擔心的是數據庫技術我之前完全沒接觸過,周圍人也沒有做過的經歷,更別說數據庫上雲了。在經歷一天的教程搜索後,我在csdn上找到了基礎可用的DatabaseManager,把代碼改一遍後成功與本機的Mysql連接,其實這個Meta/問卷系統的數據吞吐量很小,實現起來也不難,接下來的一天我結合GPT的胡謅大致掌握了基礎的查詢語句和連接規範,完成了基礎功能的編寫和本地Mysql數據傳遞的實驗。第三天我跟著B站上的上雲教程將數據庫搬到了阿里雲上,修完bug,結合臨時的劇情文案,這個系統算順利落地了。
1 / 2
對話劇情和看別人的選擇
敵人AI系統
1.
前一篇半程實錄裡提到了遊戲重點參考陷陣之志和霰彈國王,起初是完全模仿陷陣之志的提前預告系統類設計敵人AI,敵人會完全按照提示來攻擊目標位置。這樣的結果是Player只要同向移動一格就能避免車的威脅,是在是太傻了。
回看了一下陷陣之志GDC的演講(https://www.bilibili.com/video/BV1Rx411X7Lg/?spm_id_from=333.337.search-card.all.click&vd_source=42adcf39eb4e4d28795c0022a66ea630),想起來了他這套預示系統之所以能順利運行,是因為建築是不能動的,這個謎題對於陷陣之志的玩家來說是必須解的。
對於一個類似的機制,你可以模仿,但你不能不帶腦子的模仿,我的遊戲雖然主機被限定在九宮範圍移動,但還能移動,Player完全可以逃避謎題,所以在我的遊戲裡套用這套預示系統是不合適的。
另一方面是敵人的行動順序:我將敵人的狀態機分為五個部分,其中最重要的是“思考”和“執行”部分。陷陣之志裡是先全部攻擊一遍再移動,這對於象棋來說是不可能的,因為象棋攻擊行為本身就伴隨著移動(也不絕對,之後的版本確實可以把這個方向作為一種敵人強化的思路)。
它的預告系統和行動順序都不適用於我的遊戲,所以接下來的AI迭代思路我完全放棄參考陷陣之志。AI的行動順序也不再是全部攻擊一遍再全部行動,而是每個棋子進行完思考和執行後再輪到下一個棋子完思考和執行。
2.
前一篇半程實錄也提到了我玩霰彈國王中的一個痛點,我對完全沒有吃子提示深惡痛絕(他並不是沒有提示系統,但是他的提示系統太不透明瞭)。儘管第一次迭代否定了陷陣之志的攻擊預告方案,但攻擊預告本身我是不可能放棄的。在試錯過程中我有想過棋子保持陷陣之志的攻擊預告方案不變,如果能一步吃子就實時改變攻擊者的目標位置。但我很快否定了這個方案,該方案對於象棋來說既混亂又笨重。
3.
最後我決定完全隱藏棋子的攻擊意圖,但如果你有移動傾向,鼠標每指向一個網格都會遍歷一遍敵人來模擬是否能被攻擊(其實有bug,有時候不能顯示全部有威脅的棋子,但只要有威脅肯定會顯示)。這樣能讓棋盤上信息不會對玩家產生過多外在認知負荷的同時,也能保證基本信息傳達的需求。
4.
中國象棋中有種棋子是國際象棋以及陷陣之志敵人都沒有涉及的,就是“炮”。炮架子這個事真的蠻麻煩的,傳統的象棋遊戲程序是雙方回合交替的,所以不存在“自己人把炮架子撤了”的現象,但我的遊戲中敵方棋子全部行動完成後才會輪到我方Player行動,就經常出現“自己人把炮架子撤了”的拆臺現象。
為了解決這個問題,我嘗試過“固定炮架子”,但代碼層面會對其他棋子的行為產生惡劣影響,Booom活動的時間確實不夠,思考後我選擇直接在狀態機中增加一個調整行動順序的步驟,在執行中把“炮”的執行優先級放到最高,這個問題得到一定程度改善,但沒有根除。
最後是“將”,這是在臨近結束的試玩過程中發現的問題,“將”和其他棋子一樣,都是以攻擊Player為目標做行動的。但遊戲的目的是“將”被擊殺則這局遊戲結束,這就導致“將”出現一種很傻的“往槍口上撞”的現象,這太不正常了,我初期的解決方法是偷懶增加血量,基本完成遊戲後我回過頭來思考這個現象的解決方法。
最後我把“將”的AI部分剝離出來,如果將能夠一步吃子,就執行吃子行為,如果不能就遍歷九宮的所有格子,向離Player最遠的格子移動。但是這個改動又讓朋友抱怨改得太難了,所以又調整了關卡敵人配置,現在回過頭來想這些調整讓一些關卡過於簡單了,調平衡真難啊。

快速查錯和快速瞭解完全未知領域的方法

查bug是程序不得不品的一部分,註釋寫清楚命名別亂寫這些老生常談的就不提了。這裡推薦QFramework裡的模塊化架構,它將遊戲清晰分成四個不耦合的模塊,有效避免了屎山出現的可能性,同時它又通過接口實現了很方便的模塊擴展以滿足你偶爾的特殊調用需求。它提供的一些開箱即用的小工具這裡就不一一舉例了,除開音效系統比較簡陋外其他系統都很推薦,總之就是非常好用。
我通過Poe來使用GPT ( https://poe.com/chat/oiek7l7xqn3ky0fou
我不知道生成式人工智能未來會不會完全替代程序員,總之我覺得還是得等上一段較長的時間,目前頂多是一個高級搜索工具。這就意味著Unity裡的報錯和警告你問GPT它能分析得很好,一定程度上你把你有問題的代碼給它它能分析出很基礎的錯誤,但你要他手把手給你寫功能或者改高級錯誤就痴人說夢了。
舉個例子,我在實現霰彈槍開槍獲取受傷目標功能的時候,讓GPT生成經過ABC三點的貝塞爾曲線,在我跟GPT搏鬥的一個半小時裡,GPT每次都把B點當做控制點,讓他改正它立馬道歉,然後再把錯誤答案發一遍,給我都整麻了,最後我用插值實現的這個功能。總結了一下如果你對GPT的錯誤糾正三次後它還是沒給出可行方案,甚至開始復讀,就不用繼續在他身上浪費時間了。
對於怎麼快速瞭解完全未知領域的法子,我的建議是別一開始就去問GPT,GPT是能給出很多建議,但全是廢話的可能性很大。最好還是去論壇裡找別人寫的指南,心裡有一個大致思路後再使用GPT才能保證不被帶歪,效率也會快很多 。

插件

單人Solo實現功能我個人是能使用插件就使用插件,但要注意的是儘量選擇主流插件購買使用,一些小插件的文檔和功能寫得真的不敢恭維。比如我的遊戲裡的對話系統,起初是現買的ZT dialogue,因為看他是國人開發的插件,文檔能看得比較快,但他文檔的對話事件系統我真的完全沒看明白,一番思想鬥爭後滾回經典Dialogue system的懷抱了。
但也是我插件用的太多,一個普通的2D遊戲最終包體達到了100多mb,肯定是有很大優化空間的,孰輕孰重您得自己權衡

音效和美術資源獲取

對於Solo人來說,音效和美術資源是比較頭疼的事情,itch上有大把的CC0資源可供使用,如果還不滿意,可以去耳聆網找找,還不滿意可以打開你的Ipad裡的庫樂隊,很多自帶樂器裡有一檔“自動演奏”,你手稍微瞎搓幾下,能出一段還能聽的音樂,如果你是像素遊戲,可以嘗試專門生產數位音樂的小工具sfxr( https://pro.sfxr.me/ )。
這裡列出我的遊戲中使用到的外部CC0免費可商用資源:
狙殺爆炸特效(https://mattwalkden.itch.io/free-robot-warfare-pack),霰彈槍動畫(找不到了不好意思,只記得這個包是個挺出名的cc0包),部分音效(https://dillonbecker.itch.io/sdap)均來自itch免費CC0資源,霰彈槍開槍、彈殼音效來自耳聆網cc0的免費資源,部分音效使用sfxr(https://pro.sfxr.me/)生成,剩下的簡單音效自己用ipad庫樂隊搓的。

最後的建議——儘量別Solo

是的,Solo很酷,但我還是想給覺得Solo很酷,想單人開發的朋友潑冷水:如果你有合作過值得信賴的團隊,儘量別Solo。
如果是因為不習慣組隊選擇Solo,本Solo人還是強烈建議組隊參加:Solo人必須要有充足的時間和精力,單人要兼顧程序、美術、文案、策劃、測試,你沒法把這些部分都做得一樣好,真的很累;策劃案寫著寫著經常懷疑做出來不好玩導致開發熱情低落;最重要的是遊戲開發是個團體項目,如果你想走遊戲行業這條路,Solo裡的很多經驗並不適用於你的實際工作,你對團隊合作的不適應終有一天是要克服的。
水泡小小的也很可愛捏

水泡小小的也很可愛捏

再次,我在後半程裡泡泡麵不小心手燙傷了,起了個小水泡,打代碼有點小疼。儘管塗藥很快好了,但遊戲開發過程中的意外非常多,單人Solo可供迴旋的餘地太小,稍稍出現差錯(比如導師突然push你開組會)就可能導致項目計劃不順,得重新安排計劃。
最後,不管你是打算Solo下屆Booom,還是在繼續為你的遊戲打拼,都祝你項目卡死前都有自動保存,別人寫的註釋都無比詳細,每個模塊都高內聚低耦合,開發順順利利。
不知道結束後其他人還能不能關注,總之關注《黑牆之下》,關注《黑牆之下》謝謝喵https://www.gcores.com/games/113223

© 2022 3樓貓 下載APP 站點地圖 廣告合作:asmrly666@gmail.com