Godot - исполняемый файл игры не находит ресурсов - PullRequest
1 голос
/ 08 июля 2020

там. При использовании стабильной версии Godot 3.2.2 (все шаблоны обновлены) для экспорта для OSX (из High Sierra) и Windows (VMWare с Windows 10) интерпретатор не может найти многие ресурсы. При тестировании в IDE все работает отлично. Я уже изменил имена файлов (избегая пробелов и не буквенно-цифровых символов c и '_'), удалил все из папки '.import' и повторно импортировал все файлы и даже изменил свой код, чтобы не загружать вещи 'на лету ', чтобы все ресурсы были правильно указаны в результирующем коде. Файлы находятся в своих исходных папках, их файлы «.import» тоже там и сопоставлены с существующими файлами в папке «.import». Я также смог проверить файл .pck и файлы .wav, .ogg и .png. Игра будет выдавать такие сообщения, как:

ERROR: _load: No loader found for resource: res://sounds//Starting_Lights.ogg.
       At: core/io/resource_loader.cpp:285.
ERROR: _load: No loader found for resource: res://sounds//Testing.wav.
       At: core/io/resource_loader.cpp:285.
ERROR: _load: No loader found for resource: res://sprites//Backlash_Pic.png.
   At: core/io/resource_loader.cpp:285.
ERROR: _load: No loader found for resource: res://sprites//Backlash_Grand_Prix.png.
   At: core/io/resource_loader.cpp:285.

Один из файлов «not found» ресурса .import имеет

[remap]

importer="texture"
type="StreamTexture"
path="res://.import/Backlash_Grand_Prix.png-ad663db21f8bfbe75b0464e994ebbe2f.stex"
metadata={
"vram_texture": false
}

[deps]

source_file="res://sprites/Backlash_Grand_Prix.png"
dest_files=[ "res://.import/Backlash_Grand_Prix.png-ad663db21f8bfbe75b0464e994ebbe2f.stex" ]

и все указанные файлы присутствуют

AnJo888i7:sprites AnJo888$ pwd
/Users/AnJo888/Desktop/Godot/project_mr/sprites
AnJo888i7:sprites AnJo888$ ls -l Back*
-rw-r--r--@ 1 AnJo888  staff   55120  9 Jun 21:31 Backlash_Grand_Prix.png
-rw-r--r--@ 1 AnJo888  staff     693  7 Jul 18:36 Backlash_Grand_Prix.png.import
-rw-r--r--@ 1 AnJo888  staff  255514 29 Jun 16:40 Backlash_Pic.png
-rw-r--r--  1 AnJo888  staff     672  7 Jul 18:36 Backlash_Pic.png.import
AnJo888i7:sprites AnJo888$ ls -l ../.import/Back*
-rw-r--r--  1 AnJo888  staff       91  7 Jul 18:35 ../.import/Backlash.obj-1faf80b2c76bbdff34635db74f883c59.md5
-rw-r--r--  1 AnJo888  staff   879958  7 Jul 18:35 ../.import/Backlash.obj-1faf80b2c76bbdff34635db74f883c59.mesh
-rw-r--r--  1 AnJo888  staff       91  7 Jul 18:35 ../.import/BacklashFF.obj-1f7907e7c14594be339288bdbcc49d13.md5
-rw-r--r--  1 AnJo888  staff  1134886  7 Jul 18:35 ../.import/BacklashFF.obj-1f7907e7c14594be339288bdbcc49d13.mesh
-rw-r--r--  1 AnJo888  staff       91  7 Jul 18:36 ../.import/Backlash_Grand_Prix.png-ad663db21f8bfbe75b0464e994ebbe2f.md5
-rw-r--r--  1 AnJo888  staff    55358  7 Jul 18:36 ../.import/Backlash_Grand_Prix.png-ad663db21f8bfbe75b0464e994ebbe2f.stex
-rw-r--r--  1 AnJo888  staff       91  7 Jul 18:36 ../.import/Backlash_Pic.png-802dae49352de96e7456539e639a1c34.md5
-rw-r--r--  1 AnJo888  staff   268132  7 Jul 18:36 ../.import/Backlash_Pic.png-802dae49352de96e7456539e639a1c34.stex
AnJo888i7:sprites AnJo888$ 

Итак ... хотя вроде бы все на месте, игра не воспроизводит музыку / звуки (воспроизводятся некоторые звуки, и я изменил код загрузки для других, чтобы все было как можно более равным, безуспешно - все звуки загружаются парой синглтонов ОС) и не отображают некоторые текстуры (в основном вещи, загружаемые во время выполнения игры).

Эти звуки загружаются и воспроизводятся:

    extends AudioStreamPlayer
    
    var audioTeamsFiles = ["res://sounds/Team_Braillewalk.ogg",
                            "res://sounds/Team_Candy_Cane.ogg",
...
                            "res://sounds/Team_Cash_is_King.ogg",
                            "res://sounds/Team_Watermelon.ogg"
                            ]
    
    var audioTeamName
    var names = Array()
    var volSpeech
    
    
    func _ready() -> void:
        volSpeech = get_node("/root/Globals").volSpeech
        for i in range(audioTeamsFiles.size()):
            audioTeamName = AudioStreamPlayer2D.new()
            audioTeamName.stream = load(audioTeamsFiles[i])
            audioTeamName.volume_db = volSpeech
            names.append(audioTeamName)
            add_child(names[i])
    
    
    func say_team_name(team):
        names[team].play()
    
    
    func shut_team_name(team):
        names[team].stop()
    
    
    func set_volume():
        volSpeech = get_node("/root/Globals").volSpeech
        for i in range(audioTeamsFiles.size()):
            names[i].volume_db =  volSpeech

Эти не загружается:

    extends AudioStreamPlayer
    
    var audioSoundFiles = ["res://sounds/Live_the_Life.ogg",
                            "res://sounds//Love_the_Sound.ogg",
                            "res://sounds//Love_this_Song.ogg",
...
                            "res://sounds//Vuvuzelas.ogg"
                            ]
    
    var audioSound
    var sounds = Array()
    var volEffects
    var volMusic
    var volSpeech
    
    onready var globals
    
    func _ready() -> void:
        globals = get_node("/root/Globals")
        for i in range(audioSoundFiles.size()):
            audioSound = AudioStreamPlayer2D.new()
            audioSound.stream = load(audioSoundFiles[i])
            sounds.append(audioSound)
            add_child(sounds[i])
        set_volume()
        play_sound(0)
    
    
    func play_sound(sound):
        sounds[sound].play()
    
    
    func quiet_sound(sound):
        sounds[sound].stop()
    
    
    func set_volume():
        volEffects = globals.volEffects
        volMusic = globals.volMusic
        volSpeech = globals.volSpeech
        for i in range(audioSoundFiles.size()):
            if i == 0:
                sounds[i].volume_db = volMusic
            elif i < 6:
                sounds[i].volume_db = volSpeech
            else:
                sounds[i].volume_db = volEffects

Я даже включил все виды расширений, доступных в функции экспорта, и указал папки со спрайтами и звуками, которые должны быть включены (я использовал тройной sla sh, который я видел в еще одна ссылка на «проблемы» экспорта Godot).

[preset.0]

name="Mac OSX"
platform="Mac OSX"
runnable=true
custom_features=""
export_filter="all_resources"
include_filter="res:///sounds/*, res:///sprites/*"
exclude_filter=""
export_path="./AGC.dmg"
patch_list=PoolStringArray(  )
script_export_mode=1
script_encryption_key=""

[preset.0.options]

custom_template/debug=""
custom_template/release=""
application/name="Absolutely Goode Championship"
application/info="Made with Godot Engine"
application/icon="res://AGC_Icon_256.png"
application/identifier="com.AGC.game"
application/signature=""
application/short_version="1.0"
application/version="1.0"
application/copyright=""
display/high_res=false
privacy/camera_usage_description=""
privacy/microphone_usage_description=""
codesign/enable=false
codesign/identity=""
codesign/timestamp=true
codesign/hardened_runtime=true
codesign/entitlements=""
codesign/custom_options=PoolStringArray(  )
texture_format/s3tc=true
texture_format/etc=true
texture_format/etc2=true

Было бы здорово, если бы кто-нибудь помог мне выяснить, чего мне здесь не хватает ...

Кстати, если я скопируйте папки со спрайтами и звуками с '.exe' в Windows все работает нормально, и я был готов использовать то же исправление для версии OSX (независимо от дублированных файлов), но даже не копирование этих папок в пакет приложения сработало.

Заранее спасибо за все ответы.

1 Ответ

0 голосов
/ 09 июля 2020

Итак ... после осознания того, что некоторые из моих путей были неправильными, я пересмотрел их все, и после исправления «неправильных» экспортированная игра работает нормально. Проблема в том, что IDE Godot довольно снисходительна, когда дело доходит до поиска файлов и тому подобного, даже если мы делаем ошибки, например, используем двойную косую черту (в других местах, кроме res: //) при указании на ресурсы. Не пытаясь уменьшить ответственность программиста за то, чтобы все было сделано правильно, но было бы лучше, ИМХО, если бы IDE ударила меня раньше по лицу, сказав: "Ваши файлы F-ing недоступны, в F- в папках, которые ты, F-ing, сказал, что они были. "... или что-то в этом роде. В любом случае ... как заявил Le go Mov ie ... Все круто ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...