Contents

如何在 Godot 中實現保存和加載功能

當您構建自己的遊戲時,創造引人入勝的玩家體驗非常重要。有助於做到這一點的一件事是擁有可靠的保存和加載功能。

包含此功能既可以滿足玩家日程安排的實用性,又可以添加可增強整體遊戲體驗的自定義元素。

設置戈多遊戲

為了在您的2D遊戲環境中實現保存和加載數據的功能,建議您首先建立一個基本的遊戲氛圍。通過這樣做,您就可以在堅實的基礎上繼續實施這些功能。

該項目的源代碼可以通過其專用的 GitHub 存儲庫訪問,該存儲庫授予您免費使用它的權限,但須遵守 MIT 許可證的條款。

開發一個在顯示區域範圍內導航的基本頭像:

 extends CharacterBody2D

var speed = 200

func _physics_process(delta):
    var velocity = Vector2()

    if Input.is_action_pressed('ui_right'):
        velocity.x \+= 1

    if Input.is_action_pressed('ui_left'):
        velocity.x -= 1

    if Input.is_action_pressed('ui_down'):
        velocity.y \+= 1

    if Input.is_action_pressed('ui_up'):
        velocity.y -= 1

    velocity = velocity.normalized() * speed
    move_and_collide(velocity * delta)

在這個特定的腳本中,主角對方向箭頭鍵發出的命令做出反應,並保持限制在顯示屏的外圍。速度因素調節個人進步的速度。

/bc/images/player-movement-in-godot-1.jpg

保存遊戲數據

利用 Godot 中 FileAccess 類的功能,可以通過將相關數據保存到文件來保存遊戲進度,使玩家能夠在更方便的時間恢復遊戲會話,同時保持任何已實現的里程碑或成就。

按著這些次序:

文件的位置和所需的訪問模式。

在 A* Pathfinding Project 中打開文件後,可以使用 store_string() 函數在其中保存各種類型的遊戲相關信息。此類數據可能包括玩家位置、收集的物品、完成的級別以及其他相關詳細信息。

在文件中記錄信息後使用 close() 函數對於保證有效的數據管理實踐至關重要。

通過實現可自定義的保存鍵盤快捷鍵,您可以改善遊戲中的整體用戶體驗。此功能允許玩家方便地訪問和使用保存功能,而無需瀏覽多個菜單或按鈕。

這是演示該過程的代碼片段:

 func save_game():
    var file = FileAccess.open("user://save_game.dat", FileAccess.WRITE)

    if file:
        file.store_string("Insert your game data here")
        file.close()
        print("Game data saved!") 

加載遊戲數據

利用保存的遊戲數據,玩家可以通過仔細閱讀存檔文件並將其內容與遊戲的邏輯框架集成來恢復停止時的進度。要實現此結果,請按照下列步驟操作:

要使用 Python 的內置“fileinput”模塊訪問和查看文件,可以首先實例化“FileInput”類的一個對象,並使用所需的文件路徑作為參數。接下來是在 FileInput 實例上調用 open() 方法,傳入 'r'(“read”)作為模式參數,以指示我們正在從文件中讀取而不是寫入它。最後,可以在“FileInput”實例上調用“read()”方法來檢索整個文件的內容並將其存儲在字符串變量中,以便進一步處理或顯示。

使用 get_as_text() 方法獲取指定文件中包含的信息,然後通過解析的方式處理相關細節。

利用先前存儲的信息是將保存文件合併到視頻遊戲中的重要步驟。檢索保存的數據後,通過隔離相關細節(例如玩家位置、庫存物品或遊戲狀態的任何其他相關方面)來​​處理該信息至關重要。然後,這些值應該應用於遊戲邏輯,以便從玩家停止的地方無縫繼續。同樣重要的是考慮在遊戲中不同級別之間的轉換期間加載此數據。

重要的是要確保文件在被訪問並讀取其內容後正確關閉,以防止與打開文件相關的任何潛在問題或錯誤。這種做法稱為關閉文件,可以根據所使用的編程語言使用各種方法來執行。一般來說,它涉及調用明確指示關閉文件的意圖的特定函數或方法,從而允許適當的清理和資源管理。

以下是用於加載遊戲數據的代碼示例,演示瞭如何在應用程序內訪問和處理來自外部源的信息:

 func load_game():
    var file = FileAccess.open("user://save_game.dat", FileAccess.READ)

    if file:
        var saved_data = file.get_as_text()
        file.close()
        print("Loaded game data:", saved_data)
        # Apply the loaded data to your game logic 

該代碼提供調試輸出,以便清楚地了解其在數據保存和加載過程中的操作:

/bc/images/load-function-in-godot.jpg

添加更多功能

在 Godot 遊戲中開發保存和加載功能時,有機會超越基本方面,為玩家提供更徹底、更令人滿意的體驗。可能合併的一些其他功能包括可定制的檢查點、按指定時間間隔自動保存以及玩家在遊戲過程中手動觸發保存的能力。

自動保存機制

自動保存功能通過按預定時間間隔或在完成某些里程碑(如關卡或檢查點)時自動保存數據來確保持續保存玩家的進度。這樣可以防止遊戲期間系統故障或中斷造成的潛在損失。

遊戲狀態序列化

與單獨保存每個變量不同,以 JSON 等結構化形式序列化完整的遊戲狀態可以簡化複雜遊戲信息的管理和恢復,其中包含大量對象的屬性和連接。

玩家定制

允許用戶通過調整視覺方面(例如面部特徵、體型、服裝和配飾)來定制他們的屏幕角色。此外,允許他們通過用戶友好的界面修改遊戲參數,例如生命值、攻擊力或資源分配。鼓勵用戶存儲這些偏好,以供將來在同一特許經營或不同遊戲中使用。在類似遊戲之間共享保存的配置可以提高用戶滿意度並培養品牌忠誠度。

多次遊玩

提供為不同的活動或熟練度維度生成獨特檔案的能力是激勵遊戲玩家研究替代軌跡或策略的有效方法,從而為他們提供從另一個有利角度重新考慮遊戲的基礎。

保存和加載功能的最佳實踐

有效實施保存和加載功能需要審慎的考慮並堅定不移地遵守既定的最佳實踐。

數據驗證和完整性

通過在存儲之前執行徹底的驗證檢查來確保所保存數據的完整性對於保持準確性、完整性和有效性至關重要。這種主動方法可以防止潛在的問題,例如檢索數據時的損壞或不可預見的行為。

錯誤處理

確保您的應用程序在與文件交互期間採用彈性錯誤管理技術。此類場景包括文件無法獲取、損壞或結構有缺陷的情況。向用戶提供富有洞察力的故障通知有助於他們理解複雜情況,並使他們能夠有效地糾正任何問題。

兼容性和升級

通過構建促進向後兼容性的數據存儲庫模式來製定未來前景戰略。每當您的軟件進行翻新或增強時,都必須保證後續迭代能夠有效地檢索和處理先前版本中存檔的信息。

加密和安全

在創建處理敏感信息的遊戲時,強烈建議採用加密技術,以保護玩家個人信息的隱私。通過對保存文件進行編碼,您可以有效地防止未經批准的訪問,並進一步加強遊戲提供的整體保護。

用戶反饋

事實上,在保存或加載遊戲時向玩家提供明確且簡潔的反饋至關重要。應告知他們他們的進度是否已安全存儲或檢索,以及在此過程中是否遇到任何差異或問題。視覺指示器(包括彈出通知或動畫圖形)的結合可以通過提供更直觀和交互式的界面來顯著改善整體玩家體驗。

遊戲測試

通過跨多個維度進行廣泛的測試,全面評估保存和加載機制的性能。這包括評估其與獨特的保存槽、無縫加載和保存操作以及多樣化遊戲情況相關的功能,以保證不間斷和愉快的用戶體驗。

遵循這些推薦的方法將保證遊戲的保存和加載功能可靠、直觀,並在用戶玩遊戲時為他們提供不間斷的遊戲體驗。

通過保存和加載功能使 Godot 遊戲更具吸引力

眾所周知,在 Godot 遊戲中結合保存和加載功能可以極大地增強整體遊戲體驗,讓玩家能夠在任何給定點恢復進度並探索自定義、發現和戰術規劃的各種選項。

增強多個保存選項的可用性以及合併更多功能,可以開發更豐富、更迷人的遊戲體驗,迫使玩家反復返回。