From 24d6a547d6b92ea81cb0294bd18e923d130fd943 Mon Sep 17 00:00:00 2001 From: Josh Creek <8179928+jcreek@users.noreply.github.com> Date: Fri, 21 Aug 2026 20:16:01 +0100 Subject: [PATCH] fix(ci): isolate imported client test image --- .github/workflows/enet-integration.yml | 2 +- Dockerfile | 13 ++-- Game/.gitignore | 1 - Game/addons/godot_rl_agents/icon.png.import | 40 ++++++++++++ Game/assets/blender_models/ball.blend.import | 63 +++++++++++++++++++ .../nebula_decoration.blend.import | 63 +++++++++++++++++++ Game/assets/blender_models/ship.blend.import | 63 +++++++++++++++++++ Game/assets/models/ball.glb.import | 45 +++++++++++++ Game/assets/models/nebula_debris.glb.import | 45 +++++++++++++ Game/assets/models/nebula_planet.glb.import | 45 +++++++++++++ .../nebula_planet_planet_surface.png.import | 44 +++++++++++++ Game/assets/models/nebula_station.glb.import | 45 +++++++++++++ Game/assets/models/ship_canopy.glb.import | 45 +++++++++++++ Game/assets/models/ship_engine_l.glb.import | 45 +++++++++++++ Game/assets/models/ship_engine_r.glb.import | 45 +++++++++++++ Game/assets/models/ship_hull.glb.import | 45 +++++++++++++ Game/assets/models/ship_nose.glb.import | 45 +++++++++++++ Game/assets/models/ship_tailfin.glb.import | 45 +++++++++++++ Game/assets/textures/particle_glow.png.import | 41 ++++++++++++ Game/assets/textures/sky_nebula.png.import | 41 ++++++++++++ Game/icon.svg.import | 43 +++++++++++++ Game/tests/networked_match_test_hooks.gd | 8 ++- 22 files changed, 864 insertions(+), 8 deletions(-) create mode 100644 Game/addons/godot_rl_agents/icon.png.import create mode 100644 Game/assets/blender_models/ball.blend.import create mode 100644 Game/assets/blender_models/nebula_decoration.blend.import create mode 100644 Game/assets/blender_models/ship.blend.import create mode 100644 Game/assets/models/ball.glb.import create mode 100644 Game/assets/models/nebula_debris.glb.import create mode 100644 Game/assets/models/nebula_planet.glb.import create mode 100644 Game/assets/models/nebula_planet_planet_surface.png.import create mode 100644 Game/assets/models/nebula_station.glb.import create mode 100644 Game/assets/models/ship_canopy.glb.import create mode 100644 Game/assets/models/ship_engine_l.glb.import create mode 100644 Game/assets/models/ship_engine_r.glb.import create mode 100644 Game/assets/models/ship_hull.glb.import create mode 100644 Game/assets/models/ship_nose.glb.import create mode 100644 Game/assets/models/ship_tailfin.glb.import create mode 100644 Game/assets/textures/particle_glow.png.import create mode 100644 Game/assets/textures/sky_nebula.png.import create mode 100644 Game/icon.svg.import diff --git a/.github/workflows/enet-integration.yml b/.github/workflows/enet-integration.yml index 54b2b6c6..911470e3 100644 --- a/.github/workflows/enet-integration.yml +++ b/.github/workflows/enet-integration.yml @@ -11,6 +11,6 @@ jobs: steps: - uses: actions/checkout@v7 - name: Build the pinned Godot test image - run: docker build --target exporter -t cosmic-clash-enet-tests . + run: docker build --target enet-test -t cosmic-clash-enet-tests . - name: Run multi-process ENet smoke tests run: docker run --rm cosmic-clash-enet-tests bash scripts/verify_enet_integration.sh diff --git a/Dockerfile b/Dockerfile index 0540906b..d3a8564c 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,19 +1,24 @@ # Local-only dedicated-server build and verification image. Pin the Godot # release family used by project.godot; no image is pushed by this repository. -FROM --platform=linux/amd64 barichello/godot-ci:4.7.1 AS exporter +FROM --platform=linux/amd64 barichello/godot-ci:4.7.1 AS project-imported WORKDIR /workspace RUN apt-get update \ && apt-get install -y --no-install-recommends libfontconfig1 \ && rm -rf /var/lib/apt/lists/* COPY Game /workspace/Game -# The ENet integration workflow runs its multi-process harness inside this -# pinned Godot image so source and CI use the same engine version. +RUN godot --headless --editor --path Game --import --quit + +# Test the source client from an untouched, fully imported project. The +# dedicated-server export below rewrites the main scene and must not be used +# to run client integration tests. +FROM project-imported AS enet-test COPY scripts/verify_enet_integration.sh /workspace/scripts/verify_enet_integration.sh + # Godot dedicated exports disallow command-line scene overrides. Bake the # server scene into this export (the interactive project's source stays # unchanged), then generate the global-script/autoload metadata it needs. +FROM project-imported AS exporter RUN sed -i 's|^run/main_scene=.*$|run/main_scene="res://scenes/server_boot.tscn"|' Game/project.godot \ - && godot --headless --editor --path Game --import --quit \ && mkdir -p /opt/cosmic-clash \ && godot --headless --path Game --export-release "Linux Dedicated Server" /opt/cosmic-clash/CosmicClashServer.x86_64 diff --git a/Game/.gitignore b/Game/.gitignore index 1d8fe513..47091836 100644 --- a/Game/.gitignore +++ b/Game/.gitignore @@ -1,3 +1,2 @@ # Godot 4+ specific ignores .godot/ -*.import diff --git a/Game/addons/godot_rl_agents/icon.png.import b/Game/addons/godot_rl_agents/icon.png.import new file mode 100644 index 00000000..8e71073f --- /dev/null +++ b/Game/addons/godot_rl_agents/icon.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bxy3je5atsh68" +path="res://.godot/imported/icon.png-45a871b53434e556222f5901d598ab34.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://addons/godot_rl_agents/icon.png" +dest_files=["res://.godot/imported/icon.png-45a871b53434e556222f5901d598ab34.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/Game/assets/blender_models/ball.blend.import b/Game/assets/blender_models/ball.blend.import new file mode 100644 index 00000000..814db1cc --- /dev/null +++ b/Game/assets/blender_models/ball.blend.import @@ -0,0 +1,63 @@ +[remap] + +importer="scene" +importer_version=1 +type="PackedScene" +uid="uid://ckohaa5ebxym2" +path="res://.godot/imported/ball.blend-22aebbee9e0a3f479241b5a042aee325.scn" + +[deps] + +source_file="res://assets/blender_models/ball.blend" +dest_files=["res://.godot/imported/ball.blend-22aebbee9e0a3f479241b5a042aee325.scn"] + +[params] + +nodes/root_type="" +nodes/root_name="" +nodes/root_script=null +mesh_library/use_node_names_as_mesh_names=false +array_mesh/deduplicate_surfaces=true +nodes/apply_root_scale=true +nodes/root_scale=1.0 +nodes/import_as_skeleton_bones=false +nodes/use_name_suffixes=true +nodes/use_node_type_suffixes=true +meshes/ensure_tangents=true +meshes/generate_lods=true +meshes/create_shadow_meshes=true +meshes/light_baking=1 +meshes/lightmap_texel_size=0.2 +meshes/force_disable_compression=false +skins/use_named_skins=true +animation/import=true +animation/fps=30 +animation/trimming=false +animation/remove_immutable_tracks=true +animation/import_rest_as_RESET=false +import_script/path="" +materials/extract=0 +materials/extract_format=0 +materials/extract_path="" +_subresources={} +blender/nodes/visible=0 +blender/nodes/active_collection_only=false +blender/nodes/punctual_lights=true +blender/nodes/cameras=true +blender/nodes/custom_properties=true +blender/nodes/modifiers=1 +blender/meshes/vertex_colors=1 +blender/meshes/uvs=true +blender/meshes/normals=true +blender/meshes/export_geometry_nodes_instances=false +blender/meshes/gpu_instances=false +blender/meshes/tangents=true +blender/meshes/skins=2 +blender/meshes/export_bones_deforming_mesh_only=false +blender/materials/unpack_enabled=true +blender/materials/export_materials=1 +blender/animation/limit_playback=true +blender/animation/always_sample=true +blender/animation/group_tracks=true +gltf/naming_version=2 +gltf/texture_map_mode=1 diff --git a/Game/assets/blender_models/nebula_decoration.blend.import b/Game/assets/blender_models/nebula_decoration.blend.import new file mode 100644 index 00000000..cdf4d88c --- /dev/null +++ b/Game/assets/blender_models/nebula_decoration.blend.import @@ -0,0 +1,63 @@ +[remap] + +importer="scene" +importer_version=1 +type="PackedScene" +uid="uid://d2mrvrt1h305x" +path="res://.godot/imported/nebula_decoration.blend-2f6fe244eedad258eac5faa9b1684142.scn" + +[deps] + +source_file="res://assets/blender_models/nebula_decoration.blend" +dest_files=["res://.godot/imported/nebula_decoration.blend-2f6fe244eedad258eac5faa9b1684142.scn"] + +[params] + +nodes/root_type="" +nodes/root_name="" +nodes/root_script=null +mesh_library/use_node_names_as_mesh_names=false +array_mesh/deduplicate_surfaces=true +nodes/apply_root_scale=true +nodes/root_scale=1.0 +nodes/import_as_skeleton_bones=false +nodes/use_name_suffixes=true +nodes/use_node_type_suffixes=true +meshes/ensure_tangents=true +meshes/generate_lods=true +meshes/create_shadow_meshes=true +meshes/light_baking=1 +meshes/lightmap_texel_size=0.2 +meshes/force_disable_compression=false +skins/use_named_skins=true +animation/import=true +animation/fps=30 +animation/trimming=false +animation/remove_immutable_tracks=true +animation/import_rest_as_RESET=false +import_script/path="" +materials/extract=0 +materials/extract_format=0 +materials/extract_path="" +_subresources={} +blender/nodes/visible=0 +blender/nodes/active_collection_only=false +blender/nodes/punctual_lights=true +blender/nodes/cameras=true +blender/nodes/custom_properties=true +blender/nodes/modifiers=1 +blender/meshes/vertex_colors=1 +blender/meshes/uvs=true +blender/meshes/normals=true +blender/meshes/export_geometry_nodes_instances=false +blender/meshes/gpu_instances=false +blender/meshes/tangents=true +blender/meshes/skins=2 +blender/meshes/export_bones_deforming_mesh_only=false +blender/materials/unpack_enabled=true +blender/materials/export_materials=1 +blender/animation/limit_playback=true +blender/animation/always_sample=true +blender/animation/group_tracks=true +gltf/naming_version=2 +gltf/texture_map_mode=1 diff --git a/Game/assets/blender_models/ship.blend.import b/Game/assets/blender_models/ship.blend.import new file mode 100644 index 00000000..829ba46e --- /dev/null +++ b/Game/assets/blender_models/ship.blend.import @@ -0,0 +1,63 @@ +[remap] + +importer="scene" +importer_version=1 +type="PackedScene" +uid="uid://bp2eqsu8o3082" +path="res://.godot/imported/ship.blend-1bdca1ba6b72cf6be2f2eb32002cf7c8.scn" + +[deps] + +source_file="res://assets/blender_models/ship.blend" +dest_files=["res://.godot/imported/ship.blend-1bdca1ba6b72cf6be2f2eb32002cf7c8.scn"] + +[params] + +nodes/root_type="" +nodes/root_name="" +nodes/root_script=null +mesh_library/use_node_names_as_mesh_names=false +array_mesh/deduplicate_surfaces=true +nodes/apply_root_scale=true +nodes/root_scale=1.0 +nodes/import_as_skeleton_bones=false +nodes/use_name_suffixes=true +nodes/use_node_type_suffixes=true +meshes/ensure_tangents=true +meshes/generate_lods=true +meshes/create_shadow_meshes=true +meshes/light_baking=1 +meshes/lightmap_texel_size=0.2 +meshes/force_disable_compression=false +skins/use_named_skins=true +animation/import=true +animation/fps=30 +animation/trimming=false +animation/remove_immutable_tracks=true +animation/import_rest_as_RESET=false +import_script/path="" +materials/extract=0 +materials/extract_format=0 +materials/extract_path="" +_subresources={} +blender/nodes/visible=0 +blender/nodes/active_collection_only=false +blender/nodes/punctual_lights=true +blender/nodes/cameras=true +blender/nodes/custom_properties=true +blender/nodes/modifiers=1 +blender/meshes/vertex_colors=1 +blender/meshes/uvs=true +blender/meshes/normals=true +blender/meshes/export_geometry_nodes_instances=false +blender/meshes/gpu_instances=false +blender/meshes/tangents=true +blender/meshes/skins=2 +blender/meshes/export_bones_deforming_mesh_only=false +blender/materials/unpack_enabled=true +blender/materials/export_materials=1 +blender/animation/limit_playback=true +blender/animation/always_sample=true +blender/animation/group_tracks=true +gltf/naming_version=2 +gltf/texture_map_mode=1 diff --git a/Game/assets/models/ball.glb.import b/Game/assets/models/ball.glb.import new file mode 100644 index 00000000..adce8c1b --- /dev/null +++ b/Game/assets/models/ball.glb.import @@ -0,0 +1,45 @@ +[remap] + +importer="scene" +importer_version=1 +type="PackedScene" +uid="uid://dj4x6k2phqsas" +path="res://.godot/imported/ball.glb-54e57a8d163cfef28e5e007118be03c5.scn" + +[deps] + +source_file="res://assets/models/ball.glb" +dest_files=["res://.godot/imported/ball.glb-54e57a8d163cfef28e5e007118be03c5.scn"] + +[params] + +nodes/root_type="" +nodes/root_name="" +nodes/root_script=null +mesh_library/use_node_names_as_mesh_names=false +array_mesh/deduplicate_surfaces=true +nodes/apply_root_scale=true +nodes/root_scale=1.0 +nodes/import_as_skeleton_bones=false +nodes/use_name_suffixes=true +nodes/use_node_type_suffixes=true +meshes/ensure_tangents=true +meshes/generate_lods=true +meshes/create_shadow_meshes=true +meshes/light_baking=1 +meshes/lightmap_texel_size=0.2 +meshes/force_disable_compression=false +skins/use_named_skins=true +animation/import=true +animation/fps=30 +animation/trimming=false +animation/remove_immutable_tracks=true +animation/import_rest_as_RESET=false +import_script/path="" +materials/extract=0 +materials/extract_format=0 +materials/extract_path="" +_subresources={} +gltf/naming_version=2 +gltf/embedded_image_handling=1 +gltf/texture_map_mode=1 diff --git a/Game/assets/models/nebula_debris.glb.import b/Game/assets/models/nebula_debris.glb.import new file mode 100644 index 00000000..50d858ab --- /dev/null +++ b/Game/assets/models/nebula_debris.glb.import @@ -0,0 +1,45 @@ +[remap] + +importer="scene" +importer_version=1 +type="PackedScene" +uid="uid://fc85v6374c1" +path="res://.godot/imported/nebula_debris.glb-39af77a17c0998b5b73172577d906cb9.scn" + +[deps] + +source_file="res://assets/models/nebula_debris.glb" +dest_files=["res://.godot/imported/nebula_debris.glb-39af77a17c0998b5b73172577d906cb9.scn"] + +[params] + +nodes/root_type="" +nodes/root_name="" +nodes/root_script=null +mesh_library/use_node_names_as_mesh_names=false +array_mesh/deduplicate_surfaces=true +nodes/apply_root_scale=true +nodes/root_scale=1.0 +nodes/import_as_skeleton_bones=false +nodes/use_name_suffixes=true +nodes/use_node_type_suffixes=true +meshes/ensure_tangents=true +meshes/generate_lods=true +meshes/create_shadow_meshes=true +meshes/light_baking=1 +meshes/lightmap_texel_size=0.2 +meshes/force_disable_compression=false +skins/use_named_skins=true +animation/import=true +animation/fps=30 +animation/trimming=false +animation/remove_immutable_tracks=true +animation/import_rest_as_RESET=false +import_script/path="" +materials/extract=0 +materials/extract_format=0 +materials/extract_path="" +_subresources={} +gltf/naming_version=2 +gltf/embedded_image_handling=1 +gltf/texture_map_mode=1 diff --git a/Game/assets/models/nebula_planet.glb.import b/Game/assets/models/nebula_planet.glb.import new file mode 100644 index 00000000..e39b246e --- /dev/null +++ b/Game/assets/models/nebula_planet.glb.import @@ -0,0 +1,45 @@ +[remap] + +importer="scene" +importer_version=1 +type="PackedScene" +uid="uid://bpfwv7fse77wk" +path="res://.godot/imported/nebula_planet.glb-2431590907ff85cf1057e7d6ad614ed7.scn" + +[deps] + +source_file="res://assets/models/nebula_planet.glb" +dest_files=["res://.godot/imported/nebula_planet.glb-2431590907ff85cf1057e7d6ad614ed7.scn"] + +[params] + +nodes/root_type="" +nodes/root_name="" +nodes/root_script=null +mesh_library/use_node_names_as_mesh_names=false +array_mesh/deduplicate_surfaces=true +nodes/apply_root_scale=true +nodes/root_scale=1.0 +nodes/import_as_skeleton_bones=false +nodes/use_name_suffixes=true +nodes/use_node_type_suffixes=true +meshes/ensure_tangents=true +meshes/generate_lods=true +meshes/create_shadow_meshes=true +meshes/light_baking=1 +meshes/lightmap_texel_size=0.2 +meshes/force_disable_compression=false +skins/use_named_skins=true +animation/import=true +animation/fps=30 +animation/trimming=false +animation/remove_immutable_tracks=true +animation/import_rest_as_RESET=false +import_script/path="" +materials/extract=0 +materials/extract_format=0 +materials/extract_path="" +_subresources={} +gltf/naming_version=2 +gltf/embedded_image_handling=1 +gltf/texture_map_mode=1 diff --git a/Game/assets/models/nebula_planet_planet_surface.png.import b/Game/assets/models/nebula_planet_planet_surface.png.import new file mode 100644 index 00000000..eb5644d6 --- /dev/null +++ b/Game/assets/models/nebula_planet_planet_surface.png.import @@ -0,0 +1,44 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cr3feyv7yldjc" +path.s3tc="res://.godot/imported/nebula_planet_planet_surface.png-4b68cca75d2d22d25510c7eb277c0b85.s3tc.ctex" +metadata={ +"imported_formats": ["s3tc_bptc"], +"vram_texture": true +} +generator_parameters={ +"md5": "44a2e26010b529339e264deecde957e0" +} + +[deps] + +source_file="res://assets/models/nebula_planet_planet_surface.png" +dest_files=["res://.godot/imported/nebula_planet_planet_surface.png-4b68cca75d2d22d25510c7eb277c0b85.s3tc.ctex"] + +[params] + +compress/mode=2 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=true +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=0 diff --git a/Game/assets/models/nebula_station.glb.import b/Game/assets/models/nebula_station.glb.import new file mode 100644 index 00000000..23f57346 --- /dev/null +++ b/Game/assets/models/nebula_station.glb.import @@ -0,0 +1,45 @@ +[remap] + +importer="scene" +importer_version=1 +type="PackedScene" +uid="uid://dn8tj3iw0io7e" +path="res://.godot/imported/nebula_station.glb-fa9a6dd87ae3789d04205b52215e2e76.scn" + +[deps] + +source_file="res://assets/models/nebula_station.glb" +dest_files=["res://.godot/imported/nebula_station.glb-fa9a6dd87ae3789d04205b52215e2e76.scn"] + +[params] + +nodes/root_type="" +nodes/root_name="" +nodes/root_script=null +mesh_library/use_node_names_as_mesh_names=false +array_mesh/deduplicate_surfaces=true +nodes/apply_root_scale=true +nodes/root_scale=1.0 +nodes/import_as_skeleton_bones=false +nodes/use_name_suffixes=true +nodes/use_node_type_suffixes=true +meshes/ensure_tangents=true +meshes/generate_lods=true +meshes/create_shadow_meshes=true +meshes/light_baking=1 +meshes/lightmap_texel_size=0.2 +meshes/force_disable_compression=false +skins/use_named_skins=true +animation/import=true +animation/fps=30 +animation/trimming=false +animation/remove_immutable_tracks=true +animation/import_rest_as_RESET=false +import_script/path="" +materials/extract=0 +materials/extract_format=0 +materials/extract_path="" +_subresources={} +gltf/naming_version=2 +gltf/embedded_image_handling=1 +gltf/texture_map_mode=1 diff --git a/Game/assets/models/ship_canopy.glb.import b/Game/assets/models/ship_canopy.glb.import new file mode 100644 index 00000000..1d8c567a --- /dev/null +++ b/Game/assets/models/ship_canopy.glb.import @@ -0,0 +1,45 @@ +[remap] + +importer="scene" +importer_version=1 +type="PackedScene" +uid="uid://dqsruccgu70n6" +path="res://.godot/imported/ship_canopy.glb-eb012be4d2aaadd3ad4ce782ee3cac26.scn" + +[deps] + +source_file="res://assets/models/ship_canopy.glb" +dest_files=["res://.godot/imported/ship_canopy.glb-eb012be4d2aaadd3ad4ce782ee3cac26.scn"] + +[params] + +nodes/root_type="" +nodes/root_name="" +nodes/root_script=null +mesh_library/use_node_names_as_mesh_names=false +array_mesh/deduplicate_surfaces=true +nodes/apply_root_scale=true +nodes/root_scale=1.0 +nodes/import_as_skeleton_bones=false +nodes/use_name_suffixes=true +nodes/use_node_type_suffixes=true +meshes/ensure_tangents=true +meshes/generate_lods=true +meshes/create_shadow_meshes=true +meshes/light_baking=1 +meshes/lightmap_texel_size=0.2 +meshes/force_disable_compression=false +skins/use_named_skins=true +animation/import=true +animation/fps=30 +animation/trimming=false +animation/remove_immutable_tracks=true +animation/import_rest_as_RESET=false +import_script/path="" +materials/extract=0 +materials/extract_format=0 +materials/extract_path="" +_subresources={} +gltf/naming_version=2 +gltf/embedded_image_handling=1 +gltf/texture_map_mode=1 diff --git a/Game/assets/models/ship_engine_l.glb.import b/Game/assets/models/ship_engine_l.glb.import new file mode 100644 index 00000000..411d3b06 --- /dev/null +++ b/Game/assets/models/ship_engine_l.glb.import @@ -0,0 +1,45 @@ +[remap] + +importer="scene" +importer_version=1 +type="PackedScene" +uid="uid://3kf7d62qivgv" +path="res://.godot/imported/ship_engine_l.glb-36865e4bdf2ded2bf550380b5e5a31da.scn" + +[deps] + +source_file="res://assets/models/ship_engine_l.glb" +dest_files=["res://.godot/imported/ship_engine_l.glb-36865e4bdf2ded2bf550380b5e5a31da.scn"] + +[params] + +nodes/root_type="" +nodes/root_name="" +nodes/root_script=null +mesh_library/use_node_names_as_mesh_names=false +array_mesh/deduplicate_surfaces=true +nodes/apply_root_scale=true +nodes/root_scale=1.0 +nodes/import_as_skeleton_bones=false +nodes/use_name_suffixes=true +nodes/use_node_type_suffixes=true +meshes/ensure_tangents=true +meshes/generate_lods=true +meshes/create_shadow_meshes=true +meshes/light_baking=1 +meshes/lightmap_texel_size=0.2 +meshes/force_disable_compression=false +skins/use_named_skins=true +animation/import=true +animation/fps=30 +animation/trimming=false +animation/remove_immutable_tracks=true +animation/import_rest_as_RESET=false +import_script/path="" +materials/extract=0 +materials/extract_format=0 +materials/extract_path="" +_subresources={} +gltf/naming_version=2 +gltf/embedded_image_handling=1 +gltf/texture_map_mode=1 diff --git a/Game/assets/models/ship_engine_r.glb.import b/Game/assets/models/ship_engine_r.glb.import new file mode 100644 index 00000000..7a651f17 --- /dev/null +++ b/Game/assets/models/ship_engine_r.glb.import @@ -0,0 +1,45 @@ +[remap] + +importer="scene" +importer_version=1 +type="PackedScene" +uid="uid://w3ps73chyt2t" +path="res://.godot/imported/ship_engine_r.glb-214ece30da53490ddc1cb491c37e947a.scn" + +[deps] + +source_file="res://assets/models/ship_engine_r.glb" +dest_files=["res://.godot/imported/ship_engine_r.glb-214ece30da53490ddc1cb491c37e947a.scn"] + +[params] + +nodes/root_type="" +nodes/root_name="" +nodes/root_script=null +mesh_library/use_node_names_as_mesh_names=false +array_mesh/deduplicate_surfaces=true +nodes/apply_root_scale=true +nodes/root_scale=1.0 +nodes/import_as_skeleton_bones=false +nodes/use_name_suffixes=true +nodes/use_node_type_suffixes=true +meshes/ensure_tangents=true +meshes/generate_lods=true +meshes/create_shadow_meshes=true +meshes/light_baking=1 +meshes/lightmap_texel_size=0.2 +meshes/force_disable_compression=false +skins/use_named_skins=true +animation/import=true +animation/fps=30 +animation/trimming=false +animation/remove_immutable_tracks=true +animation/import_rest_as_RESET=false +import_script/path="" +materials/extract=0 +materials/extract_format=0 +materials/extract_path="" +_subresources={} +gltf/naming_version=2 +gltf/embedded_image_handling=1 +gltf/texture_map_mode=1 diff --git a/Game/assets/models/ship_hull.glb.import b/Game/assets/models/ship_hull.glb.import new file mode 100644 index 00000000..4011af02 --- /dev/null +++ b/Game/assets/models/ship_hull.glb.import @@ -0,0 +1,45 @@ +[remap] + +importer="scene" +importer_version=1 +type="PackedScene" +uid="uid://31h3nccel10k" +path="res://.godot/imported/ship_hull.glb-e35cc22e21d218aa71b911f28b0dd14f.scn" + +[deps] + +source_file="res://assets/models/ship_hull.glb" +dest_files=["res://.godot/imported/ship_hull.glb-e35cc22e21d218aa71b911f28b0dd14f.scn"] + +[params] + +nodes/root_type="" +nodes/root_name="" +nodes/root_script=null +mesh_library/use_node_names_as_mesh_names=false +array_mesh/deduplicate_surfaces=true +nodes/apply_root_scale=true +nodes/root_scale=1.0 +nodes/import_as_skeleton_bones=false +nodes/use_name_suffixes=true +nodes/use_node_type_suffixes=true +meshes/ensure_tangents=true +meshes/generate_lods=true +meshes/create_shadow_meshes=true +meshes/light_baking=1 +meshes/lightmap_texel_size=0.2 +meshes/force_disable_compression=false +skins/use_named_skins=true +animation/import=true +animation/fps=30 +animation/trimming=false +animation/remove_immutable_tracks=true +animation/import_rest_as_RESET=false +import_script/path="" +materials/extract=0 +materials/extract_format=0 +materials/extract_path="" +_subresources={} +gltf/naming_version=2 +gltf/embedded_image_handling=1 +gltf/texture_map_mode=1 diff --git a/Game/assets/models/ship_nose.glb.import b/Game/assets/models/ship_nose.glb.import new file mode 100644 index 00000000..2103bb44 --- /dev/null +++ b/Game/assets/models/ship_nose.glb.import @@ -0,0 +1,45 @@ +[remap] + +importer="scene" +importer_version=1 +type="PackedScene" +uid="uid://yio14umwtku1" +path="res://.godot/imported/ship_nose.glb-84e1b2cefdde564b2174201282e01d4e.scn" + +[deps] + +source_file="res://assets/models/ship_nose.glb" +dest_files=["res://.godot/imported/ship_nose.glb-84e1b2cefdde564b2174201282e01d4e.scn"] + +[params] + +nodes/root_type="" +nodes/root_name="" +nodes/root_script=null +mesh_library/use_node_names_as_mesh_names=false +array_mesh/deduplicate_surfaces=true +nodes/apply_root_scale=true +nodes/root_scale=1.0 +nodes/import_as_skeleton_bones=false +nodes/use_name_suffixes=true +nodes/use_node_type_suffixes=true +meshes/ensure_tangents=true +meshes/generate_lods=true +meshes/create_shadow_meshes=true +meshes/light_baking=1 +meshes/lightmap_texel_size=0.2 +meshes/force_disable_compression=false +skins/use_named_skins=true +animation/import=true +animation/fps=30 +animation/trimming=false +animation/remove_immutable_tracks=true +animation/import_rest_as_RESET=false +import_script/path="" +materials/extract=0 +materials/extract_format=0 +materials/extract_path="" +_subresources={} +gltf/naming_version=2 +gltf/embedded_image_handling=1 +gltf/texture_map_mode=1 diff --git a/Game/assets/models/ship_tailfin.glb.import b/Game/assets/models/ship_tailfin.glb.import new file mode 100644 index 00000000..46755733 --- /dev/null +++ b/Game/assets/models/ship_tailfin.glb.import @@ -0,0 +1,45 @@ +[remap] + +importer="scene" +importer_version=1 +type="PackedScene" +uid="uid://c1i2lsx58u146" +path="res://.godot/imported/ship_tailfin.glb-d9d8f37674e2cf04cd3606e5c7a5c641.scn" + +[deps] + +source_file="res://assets/models/ship_tailfin.glb" +dest_files=["res://.godot/imported/ship_tailfin.glb-d9d8f37674e2cf04cd3606e5c7a5c641.scn"] + +[params] + +nodes/root_type="" +nodes/root_name="" +nodes/root_script=null +mesh_library/use_node_names_as_mesh_names=false +array_mesh/deduplicate_surfaces=true +nodes/apply_root_scale=true +nodes/root_scale=1.0 +nodes/import_as_skeleton_bones=false +nodes/use_name_suffixes=true +nodes/use_node_type_suffixes=true +meshes/ensure_tangents=true +meshes/generate_lods=true +meshes/create_shadow_meshes=true +meshes/light_baking=1 +meshes/lightmap_texel_size=0.2 +meshes/force_disable_compression=false +skins/use_named_skins=true +animation/import=true +animation/fps=30 +animation/trimming=false +animation/remove_immutable_tracks=true +animation/import_rest_as_RESET=false +import_script/path="" +materials/extract=0 +materials/extract_format=0 +materials/extract_path="" +_subresources={} +gltf/naming_version=2 +gltf/embedded_image_handling=1 +gltf/texture_map_mode=1 diff --git a/Game/assets/textures/particle_glow.png.import b/Game/assets/textures/particle_glow.png.import new file mode 100644 index 00000000..dd132de6 --- /dev/null +++ b/Game/assets/textures/particle_glow.png.import @@ -0,0 +1,41 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://damajpvo00prm" +path.s3tc="res://.godot/imported/particle_glow.png-e6c07ae4c700896e29ebe96adf51fa5c.s3tc.ctex" +metadata={ +"imported_formats": ["s3tc_bptc"], +"vram_texture": true +} + +[deps] + +source_file="res://assets/textures/particle_glow.png" +dest_files=["res://.godot/imported/particle_glow.png-e6c07ae4c700896e29ebe96adf51fa5c.s3tc.ctex"] + +[params] + +compress/mode=2 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=true +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=0 diff --git a/Game/assets/textures/sky_nebula.png.import b/Game/assets/textures/sky_nebula.png.import new file mode 100644 index 00000000..813b58fb --- /dev/null +++ b/Game/assets/textures/sky_nebula.png.import @@ -0,0 +1,41 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dc445qysyxwwv" +path.bptc="res://.godot/imported/sky_nebula.png-70f974ab520aaa5206eef67a936b662e.bptc.ctex" +metadata={ +"imported_formats": ["s3tc_bptc"], +"vram_texture": true +} + +[deps] + +source_file="res://assets/textures/sky_nebula.png" +dest_files=["res://.godot/imported/sky_nebula.png-70f974ab520aaa5206eef67a936b662e.bptc.ctex"] + +[params] + +compress/mode=2 +compress/high_quality=true +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=true +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=0 diff --git a/Game/icon.svg.import b/Game/icon.svg.import new file mode 100644 index 00000000..d7e46a19 --- /dev/null +++ b/Game/icon.svg.import @@ -0,0 +1,43 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://diocadc6g4c47" +path="res://.godot/imported/icon.svg-218a8f2b3041327d8a5756f3a245f83b.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://icon.svg" +dest_files=["res://.godot/imported/icon.svg-218a8f2b3041327d8a5756f3a245f83b.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 +svg/scale=1.0 +editor/scale_with_editor_scale=false +editor/convert_colors_with_editor_theme=false diff --git a/Game/tests/networked_match_test_hooks.gd b/Game/tests/networked_match_test_hooks.gd index 48e88d22..020a2926 100644 --- a/Game/tests/networked_match_test_hooks.gd +++ b/Game/tests/networked_match_test_hooks.gd @@ -1256,8 +1256,12 @@ func run_ci_host_check(run_seconds: float) -> void: # margin AND assert connectivity directly at sample time, rather than # inferring it from timing, so a future regression in either direction # (margin too tight again, or client run_seconds changing) fails loudly - # here instead of silently passing on residual grace. - var movement_check_delay := maxf(1.0, run_seconds - 2.0) + # here instead of silently passing on residual grace. Sample near the end + # of the active run: a server begins timing as soon as both peers join, + # whereas each bot needs to load the match and settle before its input can + # accumulate meaningful motion. The bots remain connected for an extra + # three seconds after their active run, leaving a generous live margin. + var movement_check_delay := maxf(1.0, run_seconds - 0.5) await _await_recording_score(match_scene, movement_check_delay, score_history) var connected_peers := multiplayer.get_peers() var input_reached_server := true