#3 一個大學生,只靠AI代碼,同人遊戲能做到什麼程度 開發日記

  大家好啊,這裏是一個想做遊戲但是由於沒什麼做遊戲的經歷導致沒有公司願意要我去實習只能一個人蹲在寢室裏做遊戲的苦逼大學生,過了一週,我又來記錄一下目前的開發狀況了。

現在已經開發了一個月左右了

  最近的一週是一個相當折磨人的日子,因爲開學已經一個多月了,溝槽的課程又開始多起來了,加上大部分都是小課,所以不敢帶電腦去,所以用Claude編程的時間越來越少了,這還不是最關鍵的,目前的開發工作開始逐漸接觸到了AI開發的關鍵瓶頸,也就是因爲這兩個原因的互相影響,導致我這一週的技術開發幾乎沒有突破性進展,人都要給幹傻了,可以說是開發目前以來遇到的最大困難,如果對這個感興趣的話可以往下看看。

  除此之外,由於最近上課時間比較多,所以我只能在課上幹美術了,課少就專門找Claude編程,課多就專門做美術,後面也會發一些目前正在製作的人物立繪圖。

目前的開發進度以及遇到的最大難題:

   1.複雜集成性系統對AI編程的極大挑戰

  在上一個日誌當中,我正在製作一個可以完全替代RPGMAKERMZ原始主菜單的集成性揹包系統,它不僅要求有類似生化危機4原版的揹包功能,還需要起到集成其他所有必要菜單狀態的功能,比如可以直接查看角色的信息狀態,給角色更換裝備等,讓玩家只需要靠一個菜單場景就可以接觸到他們需要的功能,這也是我製作一個集成性揹包界面的初衷。

最終要實現的UI演示圖

    然而,雖然揹包系統在上週就已經完成,但是這個揹包之外的集成系統卻是一塊非常難啃的骨頭,系統設計上的邏輯套環過於複雜,導致AI已經很難通過一次性代碼就能完成全部任務了,必須通過多次且少量的代碼逐步試錯才能緩慢推進項目進度,甚至因爲目前需要閱讀的插件信息實在太多,導致AI也會因爲過長的前置對話內容而耗費太多的Token,所以必須採取和之前編寫小型功能插件不一樣的方法才能實現目標了。

2.嘗試減少對話需要獲取的代碼信息

  由於先前光是編寫揹包代碼就已經差不都有了4000行左右的代碼,這還只是揹包插件的核心部分,因此如果直接交給AI,讓AI一次性讀完這些插件,瞭解插件的調用方法,就已經會消耗過多的對話token了。

                                  

恐怖的代碼量

  因此需要採取說明文檔的手段,儘量減少不必要的代碼信息,在這裏我主要用了ChatGPT來整理插件內容,將它們裏面功能的主要調用方式以及功能都列舉出來,這樣只要不涉及到和揹包核心代碼直接相干的地方,都可以讓AI直接引用對應的部分,比如揹包的場景名,以及揹包的功能API,都可以在說明文檔裏快速獲取,這樣就可以讓一個4000行的大型代碼文件被縮短精簡成一個只有四五十行的插件說明文檔,可以大大提高AI對話的利用率,這在編寫和原插件相關而不涉及核心代碼的其他功能插件來說,是一個比較實用的方法。

AI總結代碼

3.拆分插件功能,一步一步實現

    上面的這個插件編寫方式,並沒有那麼全面,因爲很多時候插件文檔的說明並不完善,特別是在編寫和主要插件核心息息相關的功能插件時,這麼去編寫是很容易發生錯誤的,因此最需要做的就是分段編寫插件,將一個功能龐大的插件分成幾個部分,讓AI一步一步編寫,確保每次只會調用最核心的插件即可,這樣也可以省去很多不必要被讀取的代碼部分。

如果實在不會分模塊,可以讓AI負責

    這個最需要注意的就是在編寫主插件時就一定要讓AI把API什麼的都開放好,確保主插件的可拓展性,這樣後續的插件就可以很輕鬆地對主插件進行增強和修改,如果AI在編寫主插件的時候犯蠢給你套了硬編碼進去或者某個關鍵部分沒有被開放,那後續修改起來簡直就是難上加難(我因爲這個問題,重寫了好幾遍主插件,真的一定要注意這個問題

  當然分模塊也分爲好幾種形式:

   一種是編寫一個拓展性好、功能差不多完整的核心功能插件,然後讓AI每次只需要根據核心功能插件編寫附屬插件即可,這是一種比較簡單的方案,唯一需要注意的就是這個方案要求附屬插件管理的內容不能過於複雜,不然很容易出現一直犯錯然後附屬插件寫不完的情況。如果任務比較輕的話用這種方式是可以的。

  第二種是將整個大型插件分爲好幾個模塊,通過主入口進行集成調用(如上面ChatGPT寫的一樣),這種一般針對於各個模塊都比較複雜,且層層交錯的插件,這些插件由於內容龐大,因此爲了防止AI每一次修改都要重寫大量代碼,確保其穩定性,就把其分爲好幾個小塊,這樣AI在實現功能時只需要重寫某個模塊即可,對不是很想親自改代碼的人很有幫助,我就是靠這個勉強實現了角色卡片的初始效果。

   第二種在使用時也需要時刻注意給自己的源代碼進行備份,因爲如果出現大型問題需要推倒重回來的話要把每個模塊都還原是很困難的,所以一定要備份,這樣如果要重來,直接把備份的代碼拿出來用就好。

4.充分利用對話

  實際上我這一週使用Claude時總是會出現AI還沒說幾句話就提示我到上限了要等三個小時才能繼續的情況,氣了我好幾次,後來我專門跑到外網reddit上去看有沒有和我相同的情況,同時還看到了一些如何充分利用Claude的方法。

  1.在對話出現持續性問題時,從開頭修改對話。也就是說,如果你發現AI沒有很好地理解你的指示,寫了一大堆很奇怪的代碼時,不要嘗試和AI進行任何理論,這是因爲Claude對話計算token的方式很不一樣,每一次AI和你說話時,都需要掃描一遍你們先前的對話記錄,這些信息每被輸入進一次,就被算作一次token,所以如果你和AI之間越說越多,那麼每一次說話時消耗的token也就越多,這樣很快就會消耗完你的對話次數,因此如果AI出錯了,如果沒有必要,就不要嘗試和它進行理論,只需要返回上面的對話,修改你的對話,在對話裏讓AI注意這些問題就可以了,也可以防止AI對話堆砌過多。

  2.每次對話AI都只專注於解決一個問題。上面也說了,Claude的計數方式非常容易消耗token,特別是又大又長的代碼,所以不要讓AI每次都試圖解決太多問題,每一次對話只讓AI解決一個問題,AI不擅長編寫邏輯複雜的代碼,但很擅長寫完善的小型功能。

  說實話,我在第二點這裏栽了不少跟頭,很多時候都是因爲實在是太心急了,導致AI寫出來的代碼完全不能用,又要重寫。

  以上差不多就是我目前編寫程序的心得體會,也算是受到了不少的教訓,真的是喫一塹長一智,也算是成長了。

  至於本週實現的功能真的不多,詳情可以直接看視頻演示,實現揹包集成菜單估計還得再花上不少時間。

第四周視頻演示:

目前的美術進度:

  差不多完成了四位主要角色的立繪,以及一些隊友的立繪(並不算全部完成),我不是很明白怎麼改圖片大小,發出來的圖片都又大又糊,你們別介意,還有大部分角色我都沒給下半身,是因爲遊戲裏下半身基本看不到(其實是我太懶了不想畫下半身而已)。

   舞女(分爲禮服和常服)

舞女(禮服)

舞女(常服)

偵探(有點黃不拉幾的)

偵探

騎士

騎士

教徒(僱傭兵)

若干隊友立繪:

口袋貓變成的手槍

艾爾莎

木桶人

        這個木桶人我還沒完成哈,就是發出來玩一玩的

劍歪的有點離譜

銀色騎士也是一個未完成的角色,我知道你們肯定覺得這個劍太歪了,主要是明天要考試了,沒時間畫了,等之後有時間就會繼續完成

這周的進度彙總就這樣,我們下週再見,之後估計更新的內容就比較少了,畢竟每週能做的不多。

更多遊戲資訊請關註:電玩幫遊戲資訊專區

電玩幫圖文攻略 www.vgover.com