Optimize PortMaster low-memory profile

This commit is contained in:
Alexander Sellite 2026-08-18 01:02:13 -04:00
parent b27883d115
commit 021de5aca4
16 changed files with 327 additions and 31 deletions

View file

@ -187,6 +187,22 @@ func _validate_low_end_profile_contract() -> void:
assert(launcher.contains("NETFISHING_LOW_END=1"))
assert(launcher.contains("--max-fps 30"))
assert(launcher.contains("--audio-output-latency 40"))
var builder: String = FileAccess.get_file_as_string(
"res://scripts/build_portmaster.sh"
)
assert(builder.contains("prepare_portmaster_assets.sh"))
assert(builder.contains("netfishing-portmaster-export"))
var asset_profile: String = FileAccess.get_file_as_string(
"res://scripts/prepare_portmaster_assets.sh"
)
assert(asset_profile.contains("GENERAL_TEXTURE_LIMIT=128"))
assert(asset_profile.contains("GAMEPLAY_TEXTURE_LIMIT=64"))
assert(asset_profile.contains("AUDIO_SAMPLE_RATE=22050"))
assert(asset_profile.contains("compress/mode=2"))
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/'"))
func _make_button(

View file

@ -63,14 +63,14 @@ func _validate_profile_resolution() -> void:
assert(not normal.is_light())
assert(is_equal_approx(normal.get_world_render_scale(), 1.0))
assert(light.is_light())
assert(is_equal_approx(light.get_world_render_scale(), 0.5))
assert(is_equal_approx(light.get_world_render_scale(), 0.375))
assert(legacy.is_light())
func _validate_main_profile(main: Node) -> void:
var profile: RuntimePerformanceProfile = main.get("_performance_profile")
assert(profile != null and profile.is_light())
assert(is_equal_approx(root.scaling_3d_scale, 0.5))
assert(is_equal_approx(root.scaling_3d_scale, 0.375))
var pixelation: Node = main.get_node("%WorldPixelationPostprocess")
assert(bool(pixelation.call("is_light_performance_profile")))
pixelation.call("set_gameplay_active", true)
@ -118,6 +118,21 @@ func _validate_main_profile(main: Node) -> void:
"scroll_velocity_pixels"
) == Vector2.ZERO
)
var game_ui := main.get_node("%GameUI") as GameUI
var title_screen := game_ui.get_title_screen()
assert(title_screen != null)
assert(not title_screen.is_decorative_presentation_active())
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("%WavesAudio") as AudioStreamPlayer).stream == null
)
assert(
(main.get_node("RainAmbience") as AudioStreamPlayer).stream == null
)
func _validate_normal_profile(main: Node) -> void:
@ -141,6 +156,10 @@ func _validate_normal_profile(main: Node) -> void:
assert(_count_foliage_wind_overrides(
island.get_node("Terrain/Visual")
) > 0)
var game_ui := main.get_node("%GameUI") as GameUI
var player_menu := game_ui.get("_player_menu") as PlayerMenu
assert(player_menu != null)
assert(player_menu.is_cooler_water_effect_enabled())
var title_background := main.get_node("%TitleBackground") as ColorRect
var title_material := title_background.material as ShaderMaterial
@ -167,6 +186,14 @@ func _validate_normal_profile(main: Node) -> void:
var rain := visuals.get_node("LocalRain") as GPUParticles3D
assert(rain.amount == WorldTimeVisualController.RAIN_PARTICLE_AMOUNT)
assert(rain.fixed_fps == 30)
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
)
assert(
(main.get_node("RainAmbience") as AudioStreamPlayer).stream != null
)
func _validate_ocean_fishing_coverage(
@ -222,8 +249,8 @@ func _validate_minimal_weather(main: Node) -> void:
var rain := visuals.get_node("LocalRain") as GPUParticles3D
assert(rain.amount == WorldTimeVisualController.LIGHT_RAIN_PARTICLE_AMOUNT)
assert(rain.fixed_fps == WorldTimeVisualController.LIGHT_RAIN_FIXED_FPS)
assert(rain.amount == 128)
assert(rain.fixed_fps == 12)
assert(rain.amount == 48)
assert(rain.fixed_fps == 8)
var clouds := visuals.get_node("LocalStormClouds") as LocalStormCloudLayer
assert(clouds.get_patch_count() == 1)
var ceiling := clouds.get_node("CloudCeiling") as MeshInstance3D

View file

@ -35,6 +35,8 @@ func _run() -> void:
root.add_child(controller)
await process_frame
assert(runtime_audio.bus == &"Environment")
assert(runtime_audio.stream == null)
controller.set_audio_enabled(true)
assert(controller.near_distance < controller.far_distance)
assert(controller.near_volume_db > controller.far_volume_db)
var runtime_waves := runtime_audio.stream as AudioStreamWAV