From 52dc2810ba46080ce434bad57dcced49515308c6 Mon Sep 17 00:00:00 2001 From: Voyager Date: Tue, 18 Aug 2026 10:22:27 -0400 Subject: [PATCH] Keep music in PortMaster builds --- docs/PORTMASTER.md | 12 ++++++------ main/main.gd | 6 ++---- scripts/build_portmaster.sh | 9 ++++----- tests/controller_ui_navigation_validation.gd | 2 +- tests/light_performance_profile_validation.gd | 4 ++-- 5 files changed, 15 insertions(+), 18 deletions(-) diff --git a/docs/PORTMASTER.md b/docs/PORTMASTER.md index 7746fcc..e7e3e09 100644 --- a/docs/PORTMASTER.md +++ b/docs/PORTMASTER.md @@ -219,8 +219,7 @@ profile also: - keeps the title water and full-window menu patterns static; - replaces the animated cooler water and decorative bubbles with flat water; - disables decorative title-screen fish and bubbles; -- omits title music, dusk music, rain ambience, and shoreline ambience from the - package while retaining gameplay sound effects, speech, and character calls; +- retains title and dusk music while omitting rain and shoreline ambience; - reduces rain to 48 particles simulated at 8 FPS; and - replaces procedural sky clouds and 81 moving local cloud patches with one flat cloud ceiling. @@ -233,10 +232,11 @@ pixels. All remaining raster textures use ETC2 VRAM compression. Short sound effects, speech, and calls are imported as 22.05 kHz mono QOA samples. The authoritative artwork and the desktop, Android, and macOS imports are not modified. Source artwork, design documents, tests, platform-specific icons, -music, and ambience are omitted from the temporary export project. This -build-time profile is always present in the PortMaster package; selecting the -normal runtime profile restores visual effects, but does not restore omitted -audio or replace the micro textures with desktop-resolution assets. +and ambience are omitted from the temporary export project. The original +compressed title and dusk music remain available in both runtime profiles. +This build-time profile is always present in the PortMaster package; selecting +the normal runtime profile restores visual effects, but does not restore +omitted ambience or replace the micro textures with desktop-resolution assets. The normal profile otherwise retains the full visual presentation. diff --git a/main/main.gd b/main/main.gd index 934a2fa..b7d4cea 100644 --- a/main/main.gd +++ b/main/main.gd @@ -351,14 +351,12 @@ func _configure_presentation_performance_profile(light_profile: bool) -> void: func _configure_audio_performance_profile(light_profile: bool) -> void: + _title_music.stream = _load_optional_audio_stream(TITLE_MUSIC_PATH) + _dusk_music.stream = _load_optional_audio_stream(DUSK_MUSIC_PATH) if light_profile: - _title_music.stream = null - _dusk_music.stream = null _shoreline_ambience.set_audio_enabled(false) _rain_ambience.set_audio_enabled(false) return - _title_music.stream = _load_optional_audio_stream(TITLE_MUSIC_PATH) - _dusk_music.stream = _load_optional_audio_stream(DUSK_MUSIC_PATH) _shoreline_ambience.set_audio_enabled(true) _rain_ambience.set_audio_enabled(true) diff --git a/scripts/build_portmaster.sh b/scripts/build_portmaster.sh index 66fd4e0..b5ad5ae 100755 --- a/scripts/build_portmaster.sh +++ b/scripts/build_portmaster.sh @@ -112,7 +112,6 @@ if [[ ${PACKAGE_ONLY} -eq 0 ]]; then --exclude '/art/exported/system_icons/netfishing_1024.png' \ --exclude '/art/exported/system_icons/netfishing_1024.png.import' \ --exclude '/audio/ambience/' \ - --exclude '/audio/music/' \ --exclude '/builds/' \ --exclude '/docs/design/' \ --exclude '/tests/' \ @@ -183,7 +182,7 @@ Architecture: AArch64 Minimum linked GLIBC symbol version: GLIBC_2.28 Rendering method: gl_compatibility Texture profile: 128 px maximum; 64 px gameplay catalogs; ETC2 compressed -Audio profile: 22.05 kHz mono QOA effects; music and ambience omitted +Audio profile: original music retained; ambience omitted; effects use 22.05 kHz mono QOA The executable and PCK were exported from the release commit listed above. Repository working-tree changes were not included in game content. @@ -218,9 +217,9 @@ selected data root. Device-local configuration remains under \`netfishing/conf/\`. PortMaster launches use the light performance profile by default. Put the word \`normal\` in \`netfishing/conf/performance_profile\` to opt a capable device -into the normal rendering profile. PortMaster packages omit music and ambience -in both profiles. See \`netfishing/licenses/\` for bundled credits and license -information. +into the normal rendering profile. PortMaster packages retain title and world +music while omitting rain and shoreline ambience in both profiles. See +\`netfishing/licenses/\` for bundled credits and license information. ## Controls diff --git a/tests/controller_ui_navigation_validation.gd b/tests/controller_ui_navigation_validation.gd index d8e6a94..786a520 100644 --- a/tests/controller_ui_navigation_validation.gd +++ b/tests/controller_ui_navigation_validation.gd @@ -202,7 +202,7 @@ func _validate_low_end_profile_contract() -> void: assert(asset_profile.contains("fish/species")) assert(asset_profile.contains("art/exported/characters")) assert(builder.contains("--exclude '/audio/ambience/'")) - assert(builder.contains("--exclude '/audio/music/'")) + assert(not builder.contains("--exclude '/audio/music/'")) func _make_button( diff --git a/tests/light_performance_profile_validation.gd b/tests/light_performance_profile_validation.gd index 88179b3..2501b44 100644 --- a/tests/light_performance_profile_validation.gd +++ b/tests/light_performance_profile_validation.gd @@ -125,8 +125,8 @@ func _validate_main_profile(main: Node) -> void: var player_menu := game_ui.get("_player_menu") as PlayerMenu assert(player_menu != null) assert(not player_menu.is_cooler_water_effect_enabled()) - assert((main.get_node("%TitleMusic") as AudioStreamPlayer).stream == null) - assert((main.get_node("%DuskMusic") as AudioStreamPlayer).stream == null) + assert((main.get_node("%TitleMusic") as AudioStreamPlayer).stream != null) + assert((main.get_node("%DuskMusic") as AudioStreamPlayer).stream != null) assert( (main.get_node("%WavesAudio") as AudioStreamPlayer).stream == null )