Video thumbnail for A Week of Progress after a Long Break

海豚遊戲開發日誌:長期休息後的一週進度 - 環境互動與生物生成!

Summary

Language:

Quick Abstract

準備好潛入《海豚》的開發日誌了嗎?這款以GDAU引擎打造的2D RPG,講述海洋生物學家的冒險故事。在休息了兩個半月後,開發者重返這個充滿熱情的項目。這次更新聚焦於如何讓遊戲世界更具動態,以及玩家的行動如何影響環境。

  • 快速回顧:

    • 開發者分享了從Steam發布遊戲後的倦怠感,以及如何透過休息和閱讀尋找靈感。

    • 導入依賴堆疊視覺化工具,以核心體驗為中心設計遊戲。

    • 新增垃圾清理系統,玩家可透過清理垃圾提升保護技能,並獲得新資源。

    • 修改了生物生成器,讓生物數量根據島嶼的污染程度動態變化。清理垃圾後,生物數量將會增加,使遊戲世界更加生動。

    • 加入遊戲內時間系統,讓垃圾生成與生物生成能依照遊戲時間變化。

    • 創建垃圾父類,鋁、紙和塑料垃圾都繼承自這個父類,幫助更容易創造新的垃圾種類。

開發者強調,《海豚》是他熱愛的項目,希望透過持續開發,最終將它帶給玩家。

回歸開發

嘿,大家好,感謝大家再次收看 Dolphin 的開發日誌。Dolphin 是我使用 GDAU 引擎打造的一款 2D RPG 遊戲,講述一位海洋生物學家的故事。距離我上次在頻道上發佈內容已經過了大約兩個半月,這段時間的休息真的很棒。

上次我們說到,我剛完成一個叫 Range 的應用程式後,回來繼續 Dolphin 的開發。Range 是一個有趣的小生產力計時器,我原本打算在幾個月內完成,結果它成了我在 Steam 上的首次發佈。如果大家想知道我是如何打造和發佈它的,可以去看看那個大型開發日誌。當然,如果有興趣,也可以去 Steam 上看看。

在 Range 發佈後的幾週,我非常興奮能回到 Dolphin 的開發,馬上就投入到下一個開發日誌的工作中。儘管首次在 Steam 上發佈 Range 有點焦慮和壓力,但我真的想藉此動力,保持前進的步伐,直接回到我的熱愛專案。

然而,問題是在匆忙完成 Range 後,我已經處於燃燒殆盡的邊緣,尤其是它比我預期的多花了一個半月。在我試圖克服困難並回到 Dolphin 的開發時,我直接撞上了那堵牆。

意識到需要休息,我放緩了腳步。我想我在很多天裡都做出了值得稱讚的努力,做了一些與 Dolphin 相關的事情,即使只是腦力激盪 5 分鐘,但大多數時候我都給自己放鬆的空間,去做其他事情。

我玩了《上古捲軸 IV:湮滅 重製版》,玩了很多經典版《魔獸爭霸》,讀了幾本書,包括 Tynan Sylvester 的《Designing Games》,這本書非常棒,我想我會在未來的開發日誌中多次提到。我還重新開始跑步,感覺很棒。

這次休息我沒有設定太多時間表,只是跳進去,打算在我感到興奮時回到這個我已經打造了五年多的 Dolphin 世界。現在回來的感覺真的很好。

關於遊戲完成時間

當然,這讓我想到幾乎每個開發日誌都會收到的非常合理的問題:Dolphin 什麼時候會完成?正如大家所看到的,考慮到我遵循的流程,這對我來說很難回答。但我能說的是,對我來說,我覺得我必須優先考慮這個過程。

遊戲開發對我來說是一種愛好,我從不想厭惡它,不想覺得它是一項苦差事,或者覺得它在我的生活中變得完全陳舊。所以,我必須給自己這樣的空間,像今天一樣興奮地回到我的專案中。

我必須說,把 Dolphin 帶到這個世界上對我來說非常重要。我真的很想這樣做,這也是我花時間開發 Range 的一個重要原因,這樣我就可以獲得一些發佈的經驗。我不想讓 Dolphin 只是我永遠製作視頻而不發佈的東西。

好消息是,在讀了我之前提到的那本書之後,我確實有一些想法,在短期內如何努力實現一些終於可以測試的東西,我可以得到一些反饋並進行迭代,這將真正讓我們朝着正確的方向前進,讓大家第一次接觸到 Dolphin。所以,我們會談得更多,但我只是想讓大家知道這對我很重要。

重新投入程式碼

說了這麼多,現在終於是時候跳回到程式碼中了。我們會在我做的過程中談得更多,但我想先向大家展示我創建的這個叫做依賴堆棧的視覺化。這是我從那本《Designing Games》書中借鑑的一個想法。

這裡的想法是,依賴堆棧可以幫助你視覺化你試圖設計的體驗的核心是什麼。對於 Dolphin 來說,那就是玩家與不同環境和生物群落互動,將它們從腐敗中拯救出來,並使它們恢復健康的想法。

我已經在這個系統上取得了很大的進展,創建了可以支持不同類型生物的島嶼和我的基本腐敗系統。作為這個基礎的一部分,我關鍵缺失的是生物與環境互動的能力。也就是說,當玩家清理環境時,生物會如何反應?這對我最終想用 Dolphin 提供的東西來說是完全基礎的。所以,這就是我們本周要考慮的問題。

週一的進展

好了,我在這裡的周日晚上 5 點剛過就結束了這次錄製。我期待着明天一早見到大家。

早上好,夥計們。星期一快樂。我今天早上剛結束了一個富有成效的開發會議,我想給大家一個簡短的更新。我會盡量簡短,因為我還在適應這裡的節奏。

長話短說,我認為 Dolphin 中環境變化的一個重要方式是玩家在探索時會從島嶼上收集廢物或垃圾。這將為玩家做幾件事。它將提高他們的保護技能,為他們提供製作材料,最重要的是,它將邀請新的或不同的生物來到島嶼上安家,因為玩家繼續探索,島嶼變得更加乾淨,沒有垃圾和廢物。

現在,很久以前,我實際上已經開發了幾個示例場景,代表玩家可以在島嶼上找到的不同類型的塑料、紙和鋁廢物。但今天早上看那段程式碼時,我發現它迫切需要更現代的重構。所以,這是我開始一天的好地方。

我最終創建的是一種父垃圾類,它包含了代表玩家可以在島嶼上找到的一塊廢物所需的一切。當然,像碰撞形狀和精靈這樣的簡單東西,但最重要的是,我的覓食節點的一個實例,它允許這個與覓食系統互動,玩家可以在那裡看到一些提示,幫助他們識別和收集他們可以在世界上拿起的東西。

從這個基類,我能夠創建幾個不同的這種垃圾的實現,我們可以在這裡搜索它時看到。所以,我們現在有鋁、紙和塑料垃圾,我將從這個父垃圾場景繼承。這將幫助我輕鬆地創建新類型的廢物,我可以在以後放入遊戲中。

我的下一步將是更新我如何在遊戲世界中生成這種垃圾。我有這個非常好的實體生成器類,我最近寫的,它允許我隨機生成不同重量的不同物品到世界上的一個固定空間,這正是我這裡需要的。但問題是我必須手動調用生成物品來做到這一點。

在垃圾的情況下,我想做的可能是每個遊戲日在世界上生成幾件。所以,這是一種你可能期望新廢物出現在世界上的現實節奏。現在,我可以在固定的現實世界時間間隔內做到這一點,但我沒有任何方法可以在遊戲時間內做到這一點。

值得慶幸的是,我已經有一個時間管理器類。這作為一個自動加載單例存在,負責幫助我處理我的晝夜循環和我的天氣系統。所以,我真正需要做的是構建一個自定義計時器節點,它根據我的時間管理器中的時間而不是實際時間工作。所以,這就是我接下來要做的。

週三的進展

歡迎回到週三早上。這裡剛剛快到 9 點,所以我必須保持簡短,因為我需要登錄工作。但我想給你一個關於我如何在遊戲中生成廢物的快速更新,正如我們在上次更新中談到的。

首先,我想向大家展示我在時間管理器類中所做的更改。同樣,背後的想法是,我希望能夠在某些遊戲時間間隔而不是現實世界時間間隔內做事。這個類已經跟踪了遊戲時間,但我在這裡添加的是四個信號,分別是黎明、中午、黃昏和午夜,我可以將其掛鉤到某些系統中,在這些系統中,我實際上關心我們何時通過這些斷點。

例如,如果我想在遊戲中總是在午夜做某事,我可以掛鉤到這個信號,我現在有能力做到這一點。你可以看到我在這裡的新垃圾生成器場景中就是這樣做的,這是我們之前看到的實體生成器的擴展。這裡只有幾個非常簡單的自定義。

你可以在我的 ready 函數中看到,我們正在連接到時間管理器中的午夜信號。一旦午夜過去,我們就會調用生成垃圾,這會調用這個預先存在的生成函數,即實體生成器。這是我們之前手動調用的,但現在這將在午夜調用。

除此之外,你可以看到我在這裡跟踪一個最大垃圾變量作為導出。這裡的想法是確保給定的島嶼不會被這些垃圾對象超飽和。我跟踪這一點的方法只是查詢我的樹中的組中的節點。現在,我所有的垃圾節點都在垃圾組中。所以,這很容易跟踪。我只是想確保如果我們達到這個最大數量,我們就不再生成了。

這些更新到目前為止還比較簡單,但我認為下一個更新會更棘手。那將是更新我的生物生成器類,它負責創建所有生物,比如你在我的島嶼上看到的沙蟹。並更新這個以考慮島嶼本身的垃圾飽和度值,這樣如果我們的垃圾飽和度較低,我們可以選擇生成更多的生物。

現在去工作了。我們很快就會見面。

週五的進展

嘿,夥計們。我在這裡的週五下午下班後再次加入你們。我本希望在這個可能是週末前最後一次開發日誌更新之前完成更多工作。但不幸的是,我剛剛結束了從昨天下班後開始的 21 小時停電。

好消息是,在昨天風暴來襲之前,我確實取得了一些很好的進展。所以,讓我們來看看。

我設法做出的大多數更改都在我們之前看到的生物生成器類中。其中一些更改非常小,但對 Dolphin 的工作方式非常有影響,我們馬上就會看到。

我想看看的第一個更改是在我的生成生物函數中。這當然負責實際將生物放置到遊戲世界中。我想做的是,如果我們在島嶼上有更高的污染飽和度,即我們之前看到的存在於島嶼上的那些垃圾或垃圾物品,則實現較少數量的生成生物。

當然,我可以用很多方法做到這一點,但我選擇專注於我的毒盤採樣算法的一個特定參數,該算法隨機選擇島嶼上的點來放置生物。這個特定參數是我所說的生成距離,這是該算法選擇的那些單個點之間的理想距離。

因此,距離越大,我們生成的物品之間的距離就越大,因此生成的物品密度就越低。所以我在這裡所做的是選擇根據污染飽和度修改該密度,寫了這個小助手函數。所有的魔法都發生在第 138 行這裡。

我們有我們的默認距離,我認為是通過這個文件頂部的導出變量提供的。然後我們採取我們的污染飽和度。如果這是 100% 的污染飽和度,這將是一個值為 1。所以這將有效地保持不變。

然而,如果玩家從島嶼上收集了大量垃圾或垃圾,這個值可能低至 0.1 或甚至更低,這將減少生成物品之間的最小距離,並有效地增加出現的生物密度。

作為一個快速演示,我們可以看看當這個島嶼的污染飽和度發生變化時會發生什麼。現在,我們在這裡看不到太多發生的事情。你必須相信我,我們在這個島嶼上大約有 75 件垃圾。如果我縮放得非常遠,我知道這看起來不太好。

我們可以看到,是的,有幾隻這些螃蟹在走動,但就玩家可以去互動的生命形式而言,這不是一個特別密集的島嶼。如果我們看看這裡剛剛運行的那個場景的調試控制台,你可以看到我一直在這裡打印的一些幫助器。

那個島嶼的污染飽和度是 0.73。原因是,正如我所提到的,我們有大約 75 件垃圾生成,這個島嶼的最大閾值是 100。所以,這有點符合。我們的生物生成器認為這裡有 18 個生物是合適的。

如果我現在進入我的珊瑚島場景這裡的場景樹,只是在我的實體父級中向下滾動,直到我們開始找到垃圾對象。我只是要嘗試找到這些開始的地方,並刪除幾乎所有這些,這樣我們在這裡的場景中幾乎沒有垃圾。

回到島嶼這裡,我們可以再次縮放,看到我們有更高濃度的這些螃蟹已經在島嶼上到處生成,因為我們現在有更少的污染。我們可以在控制台這裡再次檢查,我們可以看到我確實成功地從那個場景中刪除了每個垃圾項目。

因此,我們從 18 個生物躍升到 63 個生物。

我必須做出的支持這個系統的最後一個簡單但重要的更改是修改我的生物實際上在什麼時候生成到世界上。如果你回顧之前的開發日誌,我們徹底改革了我島嶼上的植物和動物生成器,你可能記得我是通過點擊這裡的生成按鈕手動完成的,因為這些是工具腳本。

不幸的是,這是相當靜態的。這意味着我在這裡的開發時間將所有這些生物添加到世界中,而不是在運行時。因為玩家在運行時與世界互動,所以我也想修改生物在運行時生成的方式。

為了做到這一點,我在我的生物生成器類中添加了一個簡單的枚舉,稱為生成模式。如果我想手動生成生物,比如我的植物,我可以選擇手動;如果我想在運行時這樣做,比如我的動物或我的沙蟹、水母和鷸,我可以選擇自動。

正如你在這裡看到的,這在代碼中的表現方式非常簡單。它只是在我的生物生成器的 ready 函數中。如果我們將生成模式設置為自動,我們希望在每次將此場景加載到樹中時在 ready 上生成。

就像我說的,這裡的變化很小,但結果是一個突然對玩家的行動做出反應的世界。當玩家去清理這些島嶼上的垃圾時,更多的生物將開始生成。

在我看來,這只是一個開始。現在,我們只是有更多數量的生物生成,但我希望看到更多種類的生物進來。這些生物在被腐敗時會帶來自己的戰鬥挑戰,它們會掉落不同的製作材料,希望你能看到我對遊戲循環的想法。

這是非常愉快和相當輕鬆的一周,重新回到拍攝和開發的節奏中。我真的希望你們喜歡這個開發日誌。

一如既往,我真的要感謝在 Patreon 上支持這個頻道和 Dolphin 開發的人們。我這個月的測試支持者是 Mike Conway,我的格萊美支持者是 Ben Van Dyken、David L、Kyle Van Riper 和 Delu。

我將努力繼續製作這些更短、更簡單的開發日誌,不一定專注於巨大的功能。我認為它們對我來說更容易製作。而且向大家展示 Dolphin 開發過程中發生的一切也很有趣,而不僅僅是有趣、華麗的東西。

但無論如何,說了這麼多,我希望你們都喜歡。感謝大家加入我的這次開發日誌。我們下次再見。

Was this summary helpful?

Quick Actions

Watch on YouTube

Related Summaries

No related summaries found.

Summarize a New YouTube Video

Enter a YouTube video URL below to get a quick summary and key takeaways.