diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 8afb2721b..c0bb70450 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -26,12 +26,12 @@ jobs: - name: Setup .NET uses: actions/setup-dotnet@v4 with: - dotnet-version: '8.0.x' + dotnet-version: '10.0.x' # Lint Godot C# code - name: Lint Godot C# working-directory: ./engines/stage-tamagotchi-godot - run: dotnet format stage-tamagotchi-godot.sln --verify-no-changes + run: dotnet format stage-tamagotchi-godot.slnx --verify-no-changes - run: docker run -v `pwd`:`pwd` -w `pwd` ghcr.io/realm/swiftlint:latest working-directory: ./apps/stage-pocket @@ -86,13 +86,13 @@ jobs: if: matrix.app_name == 'stage-tamagotchi-godot' uses: actions/setup-dotnet@v4 with: - dotnet-version: '8.0.x' + dotnet-version: '10.0.x' - name: Setup Godot if: matrix.app_name == 'stage-tamagotchi-godot' uses: chickensoft-games/setup-godot@v2 with: - version: 4.6.2 + version: 4.7.1 use-dotnet: true include-templates: true @@ -106,8 +106,8 @@ jobs: if: matrix.app_name == 'stage-tamagotchi-godot' working-directory: ./engines/stage-tamagotchi-godot run: | - mkdir -p build/linux - godot --headless --export-release "Linux x64" build/linux/godot-stage + mkdir -p out/linux + godot --headless --export-release "Linux x64" out/linux/godot-stage unit-test: name: Unit Test @@ -135,13 +135,13 @@ jobs: # if: matrix.app_name == 'stage-tamagotchi-godot' # uses: actions/setup-dotnet@v4 # with: - # dotnet-version: '8.0.x' + # dotnet-version: '10.0.x' # - name: Setup Godot # if: matrix.app_name == 'stage-tamagotchi-godot' # uses: chickensoft-games/setup-godot@v2 # with: - # version: 4.6.2 + # version: 4.7.1 # use-dotnet: true # include-templates: true diff --git a/.github/workflows/release-tamagotchi.yml b/.github/workflows/release-tamagotchi.yml index b15521d4f..4f537956e 100644 --- a/.github/workflows/release-tamagotchi.yml +++ b/.github/workflows/release-tamagotchi.yml @@ -143,12 +143,12 @@ jobs: - name: Setup .NET uses: actions/setup-dotnet@v4 with: - dotnet-version: '8.0.x' + dotnet-version: '10.0.x' - name: Setup Godot uses: chickensoft-games/setup-godot@v2 with: - version: '4.6.2' + version: '4.7.1' use-dotnet: true include-templates: true @@ -157,24 +157,24 @@ jobs: working-directory: ./engines/stage-tamagotchi-godot shell: bash run: | - mkdir -p build/win - godot --headless --export-release "Windows Desktop" build/win/godot-stage.exe + mkdir -p out/win + godot --headless --export-release "Windows Desktop" out/win/godot-stage.exe - name: Export Godot Stage (macOS) if: matrix.os == 'macos-15-intel' || matrix.os == 'macos-26' working-directory: ./engines/stage-tamagotchi-godot shell: bash run: | - mkdir -p build/mac - godot --headless --export-release "macOS" build/mac/godot-stage.app + mkdir -p out/mac + godot --headless --export-release "macOS" out/mac/godot-stage.app - name: Export Godot Stage (Linux) if: matrix.os == 'ubuntu-latest' || matrix.os == 'ubuntu-24.04-arm' working-directory: ./engines/stage-tamagotchi-godot shell: bash run: | - mkdir -p build/linux - godot --headless --export-release "Linux ${{ matrix.arch }}" build/linux/godot-stage + mkdir -p out/linux + godot --headless --export-release "Linux ${{ matrix.arch }}" out/linux/godot-stage - name: Build (Windows Only) # Windows if: matrix.os == 'windows-latest' diff --git a/apps/stage-tamagotchi/electron-builder.config.ts b/apps/stage-tamagotchi/electron-builder.config.ts index f083d87d3..f8d55dd94 100644 --- a/apps/stage-tamagotchi/electron-builder.config.ts +++ b/apps/stage-tamagotchi/electron-builder.config.ts @@ -99,7 +99,7 @@ export default { ], extraResources: [ { - from: '../../engines/stage-tamagotchi-godot/build/${os}', + from: '../../engines/stage-tamagotchi-godot/out/${os}', to: 'godot-stage', filter: ['**/*'], }, diff --git a/engines/stage-tamagotchi-godot/Directory.Build.props b/engines/stage-tamagotchi-godot/Directory.Build.props new file mode 100644 index 000000000..dd513562a --- /dev/null +++ b/engines/stage-tamagotchi-godot/Directory.Build.props @@ -0,0 +1,9 @@ + + + + net10.0 + + + 14.0 + + diff --git a/engines/stage-tamagotchi-godot/README.md b/engines/stage-tamagotchi-godot/README.md index f12ad424e..9efa96b27 100644 --- a/engines/stage-tamagotchi-godot/README.md +++ b/engines/stage-tamagotchi-godot/README.md @@ -54,8 +54,11 @@ Godot-native desktop stage runtime project for `stage-tamagotchi`. - `pnpm -F @proj-airi/stage-tamagotchi-godot build` - `pnpm -F @proj-airi/stage-tamagotchi-godot typecheck` +- `pnpm -F @proj-airi/stage-tamagotchi-godot test` -Both commands currently run `dotnet build` against the Godot-generated C# project file. +The engine uses the .NET 10 SDK, a shared `Directory.Build.props` contract, and the +`stage-tamagotchi-godot.slnx` solution. The build and typecheck commands compile both the +Godot runtime and the engine-local verification host; `test` executes that verification host. ## Development Runtime @@ -279,16 +282,16 @@ that Tamagotchi materialized and sent over the sidecar WebSocket. Export presets produce the sidecar runtime that Electron packages for release: ```bash -godot --headless --export-release "Windows Desktop" build/win/godot-stage.exe -godot --headless --export-release "Linux" build/linux/godot-stage -godot --headless --export-release "macOS" build/mac/godot-stage.app +godot --headless --export-release "Windows Desktop" out/win/godot-stage.exe +godot --headless --export-release "Linux" out/linux/godot-stage +godot --headless --export-release "macOS" out/mac/godot-stage.app ``` The output directories intentionally match electron-builder's `${os}` names: -- Windows: `build/win` -- Linux: `build/linux` -- macOS: `build/mac` +- Windows: `out/win` +- Linux: `out/linux` +- macOS: `out/mac` `apps/stage-tamagotchi/electron-builder.config.ts` copies the matching directory into `resources/godot-stage` via `extraResources`. To inspect an unpacked @@ -307,7 +310,7 @@ Recommended to use [GodotEnv](https://github.com/chickensoft-games/GodotEnv) to You can use the command below to set current Godot version for this project: ```bash -godotenv godot use 4.6.2 +godotenv godot use 4.7.1 ``` Then run the Godot editor with the current project: diff --git a/engines/stage-tamagotchi-godot/docs/verification-scenes.md b/engines/stage-tamagotchi-godot/docs/verification-scenes.md index 51a538a2a..b1967081d 100644 --- a/engines/stage-tamagotchi-godot/docs/verification-scenes.md +++ b/engines/stage-tamagotchi-godot/docs/verification-scenes.md @@ -90,7 +90,7 @@ light, or other final-frame judgments. Launch the scene with the Godot mono binary: ```powershell -C:\Godot_v4.6.2-stable_mono_win64\Godot_v4.6.2-stable_mono_win64.exe ` +C:\Godot_v4.7.1-stable_mono_win64\Godot_v4.7.1-stable_mono_win64.exe ` --path "D:\TAworkspace\AIRIworkspace\airi\engines\stage-tamagotchi-godot" ` --scene "res://tests//.tscn" ``` diff --git a/engines/stage-tamagotchi-godot/export_presets.cfg b/engines/stage-tamagotchi-godot/export_presets.cfg index 9350d2384..6b6b901f3 100644 --- a/engines/stage-tamagotchi-godot/export_presets.cfg +++ b/engines/stage-tamagotchi-godot/export_presets.cfg @@ -1,18 +1,31 @@ +[runnable_presets] + +"Windows Desktop"="Windows Desktop" +macOS="macOS" +Linux="Linux arm64" + [preset.0] name="Windows Desktop" platform="Windows Desktop" -runnable=true dedicated_server=false custom_features="" export_filter="all_resources" include_filter="" exclude_filter="" -export_path="build/win/godot-stage.exe" +export_path="out/win/godot-stage.exe" +patches=PackedStringArray() +patch_delta_encoding=false +patch_delta_compression_level_zstd=19 +patch_delta_min_reduction=0.1 +patch_delta_include_filters="*" +patch_delta_exclude_filters="" encryption_include_filters="" encryption_exclude_filters="" +seed=0 encrypt_pck=false encrypt_directory=false +script_export_mode=2 [preset.0.options] @@ -22,7 +35,14 @@ debug/export_console_wrapper=0 binary_format/embed_pck=true texture_format/s3tc_bptc=true texture_format/etc2_astc=false +shader_baker/enabled=false +binary_format/architecture="x86_64" codesign/enable=false +codesign/timestamp=true +codesign/timestamp_server_url="" +codesign/digest_algorithm=1 +codesign/description="" +codesign/custom_options=PackedStringArray() application/modify_resources=true application/icon="" application/console_wrapper_icon="" @@ -35,50 +55,316 @@ application/file_description="AIRI Godot Stage Sidecar" application/copyright="" application/trademarks="" application/export_angle=0 +application/export_d3d12=0 +application/d3d12_agility_sdk_multiarch=true ssh_remote_deploy/enabled=false +ssh_remote_deploy/host="user@host_ip" +ssh_remote_deploy/port="22" +ssh_remote_deploy/extra_args_ssh="" +ssh_remote_deploy/extra_args_scp="" +ssh_remote_deploy/run_script="Expand-Archive -LiteralPath '{temp_dir}\\{archive_name}' -DestinationPath '{temp_dir}' +$action = New-ScheduledTaskAction -Execute '{temp_dir}\\{exe_name}' -Argument '{cmd_args}' +$trigger = New-ScheduledTaskTrigger -Once -At 00:00 +$settings = New-ScheduledTaskSettingsSet -AllowStartIfOnBatteries -DontStopIfGoingOnBatteries +$task = New-ScheduledTask -Action $action -Trigger $trigger -Settings $settings +Register-ScheduledTask godot_remote_debug -InputObject $task -Force:$true +Start-ScheduledTask -TaskName godot_remote_debug +while (Get-ScheduledTask -TaskName godot_remote_debug | ? State -eq running) { Start-Sleep -Milliseconds 100 } +Unregister-ScheduledTask -TaskName godot_remote_debug -Confirm:$false -ErrorAction:SilentlyContinue" +ssh_remote_deploy/cleanup_script="Stop-ScheduledTask -TaskName godot_remote_debug -ErrorAction:SilentlyContinue +Unregister-ScheduledTask -TaskName godot_remote_debug -Confirm:$false -ErrorAction:SilentlyContinue +Remove-Item -Recurse -Force '{temp_dir}'" +dotnet/include_scripts_content=false +dotnet/include_debug_symbols=false +dotnet/embed_build_outputs=false [preset.1] -name="Linux x64" -platform="Linux/X11" -runnable=true +name="macOS" +platform="macOS" dedicated_server=false custom_features="" export_filter="all_resources" include_filter="" exclude_filter="" -export_path="build/linux/godot-stage" +export_path="out/mac/godot-stage.app" +patches=PackedStringArray() +patch_delta_encoding=false +patch_delta_compression_level_zstd=19 +patch_delta_min_reduction=0.1 +patch_delta_include_filters="*" +patch_delta_exclude_filters="" encryption_include_filters="" encryption_exclude_filters="" +seed=0 encrypt_pck=false encrypt_directory=false +script_export_mode=2 [preset.1.options] -binary_format/architecture="x86_64" +export/distribution_type=1 +binary_format/architecture="universal" custom_template/debug="" custom_template/release="" debug/export_console_wrapper=0 +application/liquid_glass_icon="" +application/icon="" +application/icon_interpolation=4 +application/bundle_identifier="ai.moeru.airi.godot-stage" +application/signature="" +application/app_category="Games" +application/short_version="1.0" +application/version="1.0" +application/copyright="" +application/copyright_localized={} +application/min_macos_version_x86_64="11.00" +application/min_macos_version_arm64="13.00" +application/export_angle=0 +display/high_res=true +shader_baker/enabled=false +application/additional_plist_content="" +xcode/platform_build="14C18" +xcode/sdk_version="13.1" +xcode/sdk_build="22C55" +xcode/sdk_name="macosx13.1" +xcode/xcode_version="1420" +xcode/xcode_build="14C18" +codesign/codesign=0 +codesign/installer_identity="" +codesign/apple_team_id="" +codesign/identity="" +codesign/entitlements/custom_file="" +codesign/entitlements/allow_jit_code_execution=false +codesign/entitlements/allow_unsigned_executable_memory=false +codesign/entitlements/allow_dyld_environment_variables=false +codesign/entitlements/disable_library_validation=false +codesign/entitlements/audio_input=false +codesign/entitlements/camera=false +codesign/entitlements/location=false +codesign/entitlements/address_book=false +codesign/entitlements/calendars=false +codesign/entitlements/photos_library=false +codesign/entitlements/apple_events=false +codesign/entitlements/debugging=false +codesign/entitlements/app_sandbox/enabled=false +codesign/entitlements/app_sandbox/network_server=false +codesign/entitlements/app_sandbox/network_client=false +codesign/entitlements/app_sandbox/device_usb=false +codesign/entitlements/app_sandbox/device_bluetooth=false +codesign/entitlements/app_sandbox/files_downloads=0 +codesign/entitlements/app_sandbox/files_pictures=0 +codesign/entitlements/app_sandbox/files_music=0 +codesign/entitlements/app_sandbox/files_movies=0 +codesign/entitlements/app_sandbox/files_user_selected=0 +codesign/entitlements/app_sandbox/helper_executables=[] +codesign/entitlements/additional="" +codesign/custom_options=PackedStringArray() +notarization/notarization=0 +privacy/microphone_usage_description="" +privacy/microphone_usage_description_localized={} +privacy/camera_usage_description="" +privacy/camera_usage_description_localized={} +privacy/location_usage_description="" +privacy/location_usage_description_localized={} +privacy/address_book_usage_description="" +privacy/address_book_usage_description_localized={} +privacy/calendar_usage_description="" +privacy/calendar_usage_description_localized={} +privacy/photos_library_usage_description="" +privacy/photos_library_usage_description_localized={} +privacy/desktop_folder_usage_description="" +privacy/desktop_folder_usage_description_localized={} +privacy/documents_folder_usage_description="" +privacy/documents_folder_usage_description_localized={} +privacy/downloads_folder_usage_description="" +privacy/downloads_folder_usage_description_localized={} +privacy/network_volumes_usage_description="" +privacy/network_volumes_usage_description_localized={} +privacy/removable_volumes_usage_description="" +privacy/removable_volumes_usage_description_localized={} +privacy/tracking_enabled=false +privacy/tracking_domains=PackedStringArray() +privacy/collected_data/name/collected=false +privacy/collected_data/name/linked_to_user=false +privacy/collected_data/name/used_for_tracking=false +privacy/collected_data/name/collection_purposes=0 +privacy/collected_data/email_address/collected=false +privacy/collected_data/email_address/linked_to_user=false +privacy/collected_data/email_address/used_for_tracking=false +privacy/collected_data/email_address/collection_purposes=0 +privacy/collected_data/phone_number/collected=false +privacy/collected_data/phone_number/linked_to_user=false +privacy/collected_data/phone_number/used_for_tracking=false +privacy/collected_data/phone_number/collection_purposes=0 +privacy/collected_data/physical_address/collected=false +privacy/collected_data/physical_address/linked_to_user=false +privacy/collected_data/physical_address/used_for_tracking=false +privacy/collected_data/physical_address/collection_purposes=0 +privacy/collected_data/other_contact_info/collected=false +privacy/collected_data/other_contact_info/linked_to_user=false +privacy/collected_data/other_contact_info/used_for_tracking=false +privacy/collected_data/other_contact_info/collection_purposes=0 +privacy/collected_data/health/collected=false +privacy/collected_data/health/linked_to_user=false +privacy/collected_data/health/used_for_tracking=false +privacy/collected_data/health/collection_purposes=0 +privacy/collected_data/fitness/collected=false +privacy/collected_data/fitness/linked_to_user=false +privacy/collected_data/fitness/used_for_tracking=false +privacy/collected_data/fitness/collection_purposes=0 +privacy/collected_data/payment_info/collected=false +privacy/collected_data/payment_info/linked_to_user=false +privacy/collected_data/payment_info/used_for_tracking=false +privacy/collected_data/payment_info/collection_purposes=0 +privacy/collected_data/credit_info/collected=false +privacy/collected_data/credit_info/linked_to_user=false +privacy/collected_data/credit_info/used_for_tracking=false +privacy/collected_data/credit_info/collection_purposes=0 +privacy/collected_data/other_financial_info/collected=false +privacy/collected_data/other_financial_info/linked_to_user=false +privacy/collected_data/other_financial_info/used_for_tracking=false +privacy/collected_data/other_financial_info/collection_purposes=0 +privacy/collected_data/precise_location/collected=false +privacy/collected_data/precise_location/linked_to_user=false +privacy/collected_data/precise_location/used_for_tracking=false +privacy/collected_data/precise_location/collection_purposes=0 +privacy/collected_data/coarse_location/collected=false +privacy/collected_data/coarse_location/linked_to_user=false +privacy/collected_data/coarse_location/used_for_tracking=false +privacy/collected_data/coarse_location/collection_purposes=0 +privacy/collected_data/sensitive_info/collected=false +privacy/collected_data/sensitive_info/linked_to_user=false +privacy/collected_data/sensitive_info/used_for_tracking=false +privacy/collected_data/sensitive_info/collection_purposes=0 +privacy/collected_data/contacts/collected=false +privacy/collected_data/contacts/linked_to_user=false +privacy/collected_data/contacts/used_for_tracking=false +privacy/collected_data/contacts/collection_purposes=0 +privacy/collected_data/emails_or_text_messages/collected=false +privacy/collected_data/emails_or_text_messages/linked_to_user=false +privacy/collected_data/emails_or_text_messages/used_for_tracking=false +privacy/collected_data/emails_or_text_messages/collection_purposes=0 +privacy/collected_data/photos_or_videos/collected=false +privacy/collected_data/photos_or_videos/linked_to_user=false +privacy/collected_data/photos_or_videos/used_for_tracking=false +privacy/collected_data/photos_or_videos/collection_purposes=0 +privacy/collected_data/audio_data/collected=false +privacy/collected_data/audio_data/linked_to_user=false +privacy/collected_data/audio_data/used_for_tracking=false +privacy/collected_data/audio_data/collection_purposes=0 +privacy/collected_data/gameplay_content/collected=false +privacy/collected_data/gameplay_content/linked_to_user=false +privacy/collected_data/gameplay_content/used_for_tracking=false +privacy/collected_data/gameplay_content/collection_purposes=0 +privacy/collected_data/customer_support/collected=false +privacy/collected_data/customer_support/linked_to_user=false +privacy/collected_data/customer_support/used_for_tracking=false +privacy/collected_data/customer_support/collection_purposes=0 +privacy/collected_data/other_user_content/collected=false +privacy/collected_data/other_user_content/linked_to_user=false +privacy/collected_data/other_user_content/used_for_tracking=false +privacy/collected_data/other_user_content/collection_purposes=0 +privacy/collected_data/browsing_history/collected=false +privacy/collected_data/browsing_history/linked_to_user=false +privacy/collected_data/browsing_history/used_for_tracking=false +privacy/collected_data/browsing_history/collection_purposes=0 +privacy/collected_data/search_history/collected=false +privacy/collected_data/search_history/linked_to_user=false +privacy/collected_data/search_history/used_for_tracking=false +privacy/collected_data/search_history/collection_purposes=0 +privacy/collected_data/user_id/collected=false +privacy/collected_data/user_id/linked_to_user=false +privacy/collected_data/user_id/used_for_tracking=false +privacy/collected_data/user_id/collection_purposes=0 +privacy/collected_data/device_id/collected=false +privacy/collected_data/device_id/linked_to_user=false +privacy/collected_data/device_id/used_for_tracking=false +privacy/collected_data/device_id/collection_purposes=0 +privacy/collected_data/purchase_history/collected=false +privacy/collected_data/purchase_history/linked_to_user=false +privacy/collected_data/purchase_history/used_for_tracking=false +privacy/collected_data/purchase_history/collection_purposes=0 +privacy/collected_data/product_interaction/collected=false +privacy/collected_data/product_interaction/linked_to_user=false +privacy/collected_data/product_interaction/used_for_tracking=false +privacy/collected_data/product_interaction/collection_purposes=0 +privacy/collected_data/advertising_data/collected=false +privacy/collected_data/advertising_data/linked_to_user=false +privacy/collected_data/advertising_data/used_for_tracking=false +privacy/collected_data/advertising_data/collection_purposes=0 +privacy/collected_data/other_usage_data/collected=false +privacy/collected_data/other_usage_data/linked_to_user=false +privacy/collected_data/other_usage_data/used_for_tracking=false +privacy/collected_data/other_usage_data/collection_purposes=0 +privacy/collected_data/crash_data/collected=false +privacy/collected_data/crash_data/linked_to_user=false +privacy/collected_data/crash_data/used_for_tracking=false +privacy/collected_data/crash_data/collection_purposes=0 +privacy/collected_data/performance_data/collected=false +privacy/collected_data/performance_data/linked_to_user=false +privacy/collected_data/performance_data/used_for_tracking=false +privacy/collected_data/performance_data/collection_purposes=0 +privacy/collected_data/other_diagnostic_data/collected=false +privacy/collected_data/other_diagnostic_data/linked_to_user=false +privacy/collected_data/other_diagnostic_data/used_for_tracking=false +privacy/collected_data/other_diagnostic_data/collection_purposes=0 +privacy/collected_data/environment_scanning/collected=false +privacy/collected_data/environment_scanning/linked_to_user=false +privacy/collected_data/environment_scanning/used_for_tracking=false +privacy/collected_data/environment_scanning/collection_purposes=0 +privacy/collected_data/hands/collected=false +privacy/collected_data/hands/linked_to_user=false +privacy/collected_data/hands/used_for_tracking=false +privacy/collected_data/hands/collection_purposes=0 +privacy/collected_data/head/collected=false +privacy/collected_data/head/linked_to_user=false +privacy/collected_data/head/used_for_tracking=false +privacy/collected_data/head/collection_purposes=0 +privacy/collected_data/other_data_types/collected=false +privacy/collected_data/other_data_types/linked_to_user=false +privacy/collected_data/other_data_types/used_for_tracking=false +privacy/collected_data/other_data_types/collection_purposes=0 +ssh_remote_deploy/enabled=false +ssh_remote_deploy/host="user@host_ip" +ssh_remote_deploy/port="22" +ssh_remote_deploy/extra_args_ssh="" +ssh_remote_deploy/extra_args_scp="" +ssh_remote_deploy/run_script="#!/usr/bin/env bash +unzip -o -q \"{temp_dir}/{archive_name}\" -d \"{temp_dir}\" +open \"{temp_dir}/{exe_name}.app\" --args {cmd_args}" +ssh_remote_deploy/cleanup_script="#!/usr/bin/env bash +pkill -x -f \"{temp_dir}/{exe_name}.app/Contents/MacOS/{exe_name} {cmd_args}\" +rm -rf \"{temp_dir}\"" +dotnet/include_scripts_content=false +dotnet/include_debug_symbols=false +dotnet/embed_build_outputs=false binary_format/embed_pck=true texture_format/s3tc_bptc=true texture_format/etc2_astc=false -ssh_remote_deploy/enabled=false [preset.2] -name="macOS" -platform="macOS" -runnable=true +name="Linux x64" +platform="Linux" dedicated_server=false custom_features="" export_filter="all_resources" include_filter="" exclude_filter="" -export_path="build/mac/godot-stage.app" +export_path="out/linux/godot-stage" +patches=PackedStringArray() +patch_delta_encoding=false +patch_delta_compression_level_zstd=19 +patch_delta_min_reduction=0.1 +patch_delta_include_filters="*" +patch_delta_exclude_filters="" encryption_include_filters="" encryption_exclude_filters="" +seed=0 encrypt_pck=false encrypt_directory=false +script_export_mode=2 [preset.2.options] @@ -88,38 +374,69 @@ debug/export_console_wrapper=0 binary_format/embed_pck=true texture_format/s3tc_bptc=true texture_format/etc2_astc=false -codesign/codesign=0 -codesign/entitlements/app_sandbox/enabled=false -notarization/notarization=0 -application/bundle_identifier="ai.moeru.airi.godot-stage" -application/short_version="1.0" -application/version="1.0" -application/icon="" +shader_baker/enabled=false +binary_format/architecture="x86_64" ssh_remote_deploy/enabled=false +ssh_remote_deploy/host="user@host_ip" +ssh_remote_deploy/port="22" +ssh_remote_deploy/extra_args_ssh="" +ssh_remote_deploy/extra_args_scp="" +ssh_remote_deploy/run_script="#!/usr/bin/env bash +export DISPLAY=:0 +unzip -o -q \"{temp_dir}/{archive_name}\" -d \"{temp_dir}\" +\"{temp_dir}/{exe_name}\" {cmd_args}" +ssh_remote_deploy/cleanup_script="#!/usr/bin/env bash +pkill -x -f \"{temp_dir}/{exe_name} {cmd_args}\" +rm -rf \"{temp_dir}\"" +dotnet/include_scripts_content=false +dotnet/include_debug_symbols=false +dotnet/embed_build_outputs=false [preset.3] name="Linux arm64" -platform="Linux/X11" -runnable=true +platform="Linux" dedicated_server=false custom_features="" export_filter="all_resources" include_filter="" exclude_filter="" -export_path="build/linux/godot-stage" +export_path="out/linux/godot-stage" +patches=PackedStringArray() +patch_delta_encoding=false +patch_delta_compression_level_zstd=19 +patch_delta_min_reduction=0.1 +patch_delta_include_filters="*" +patch_delta_exclude_filters="" encryption_include_filters="" encryption_exclude_filters="" +seed=0 encrypt_pck=false encrypt_directory=false +script_export_mode=2 [preset.3.options] -binary_format/architecture="arm64" custom_template/debug="" custom_template/release="" debug/export_console_wrapper=0 binary_format/embed_pck=true texture_format/s3tc_bptc=true texture_format/etc2_astc=false -ssh_remote_deploy/enabled=false \ No newline at end of file +shader_baker/enabled=false +binary_format/architecture="arm64" +ssh_remote_deploy/enabled=false +ssh_remote_deploy/host="user@host_ip" +ssh_remote_deploy/port="22" +ssh_remote_deploy/extra_args_ssh="" +ssh_remote_deploy/extra_args_scp="" +ssh_remote_deploy/run_script="#!/usr/bin/env bash +export DISPLAY=:0 +unzip -o -q \"{temp_dir}/{archive_name}\" -d \"{temp_dir}\" +\"{temp_dir}/{exe_name}\" {cmd_args}" +ssh_remote_deploy/cleanup_script="#!/usr/bin/env bash +pkill -x -f \"{temp_dir}/{exe_name} {cmd_args}\" +rm -rf \"{temp_dir}\"" +dotnet/include_scripts_content=false +dotnet/include_debug_symbols=false +dotnet/embed_build_outputs=false diff --git a/engines/stage-tamagotchi-godot/global.json b/engines/stage-tamagotchi-godot/global.json new file mode 100644 index 000000000..d46d21e50 --- /dev/null +++ b/engines/stage-tamagotchi-godot/global.json @@ -0,0 +1,7 @@ +{ + "sdk": { + "version": "10.0.100", + "rollForward": "latestFeature", + "allowPrerelease": false + } +} diff --git a/engines/stage-tamagotchi-godot/package.json b/engines/stage-tamagotchi-godot/package.json index 41263a9e1..5c87a1094 100644 --- a/engines/stage-tamagotchi-godot/package.json +++ b/engines/stage-tamagotchi-godot/package.json @@ -16,8 +16,9 @@ "directory": "engines/stage-tamagotchi-godot" }, "scripts": { - "build": "dotnet build ./stage-tamagotchi-godot.csproj", - "typecheck": "dotnet build ./stage-tamagotchi-godot.csproj", + "build": "dotnet build ./stage-tamagotchi-godot.slnx", + "typecheck": "dotnet build ./stage-tamagotchi-godot.slnx", + "test": "dotnet run --project ./tests/stage-tamagotchi-godot.tests/stage-tamagotchi-godot.tests.csproj", "dump:render-stages": "node ./tools/dumpRenderStages.mjs --dump-render-stages ./artifacts/render-stages", "dump:render-stages:upper-body": "node ./tools/dumpRenderStages.mjs --dump-render-stages ./artifacts/render-stages-upper-body --view-preset upper-body" } diff --git a/engines/stage-tamagotchi-godot/project.godot b/engines/stage-tamagotchi-godot/project.godot index be915bcb6..82833db03 100644 --- a/engines/stage-tamagotchi-godot/project.godot +++ b/engines/stage-tamagotchi-godot/project.godot @@ -12,7 +12,7 @@ config_version=5 config/name="stage-tamagotchi-godot" run/main_scene="res://scenes/stage-root.tscn" -config/features=PackedStringArray("4.6", "C#", "Forward Plus") +config/features=PackedStringArray("4.7", "C#", "Forward Plus") config/icon="res://icon.svg" [dotnet] @@ -29,7 +29,7 @@ enabled=PackedStringArray("res://addons/Godot-MToon-Shader/plugin.cfg", "res://a [rendering] -anti_aliasing/quality/msaa_3d=2 -scaling_3d/scale=2.0 rendering_device/driver.windows="d3d12" textures/vram_compression/import_etc2_astc=true +anti_aliasing/quality/msaa_3d=2 +scaling_3d/scale=2.0 diff --git a/engines/stage-tamagotchi-godot/scripts/dev/StageDevObservationAdapter.cs.uid b/engines/stage-tamagotchi-godot/scripts/dev/StageDevObservationAdapter.cs.uid new file mode 100644 index 000000000..bd9471600 --- /dev/null +++ b/engines/stage-tamagotchi-godot/scripts/dev/StageDevObservationAdapter.cs.uid @@ -0,0 +1 @@ +uid://dp4po24xghxhw diff --git a/engines/stage-tamagotchi-godot/scripts/transport/StageViewJson.cs.uid b/engines/stage-tamagotchi-godot/scripts/transport/StageViewJson.cs.uid new file mode 100644 index 000000000..000bced0c --- /dev/null +++ b/engines/stage-tamagotchi-godot/scripts/transport/StageViewJson.cs.uid @@ -0,0 +1 @@ +uid://dfmp82vxdmjxq diff --git a/engines/stage-tamagotchi-godot/scripts/transport/StageViewPayloads.cs.uid b/engines/stage-tamagotchi-godot/scripts/transport/StageViewPayloads.cs.uid new file mode 100644 index 000000000..4125ceb53 --- /dev/null +++ b/engines/stage-tamagotchi-godot/scripts/transport/StageViewPayloads.cs.uid @@ -0,0 +1 @@ +uid://ulobbffet5mk diff --git a/engines/stage-tamagotchi-godot/scripts/view/StageCameraInputController.cs.uid b/engines/stage-tamagotchi-godot/scripts/view/StageCameraInputController.cs.uid new file mode 100644 index 000000000..53c7b9d6d --- /dev/null +++ b/engines/stage-tamagotchi-godot/scripts/view/StageCameraInputController.cs.uid @@ -0,0 +1 @@ +uid://d10mj6whfn22f diff --git a/engines/stage-tamagotchi-godot/scripts/view/StageCameraPoseController.cs.uid b/engines/stage-tamagotchi-godot/scripts/view/StageCameraPoseController.cs.uid new file mode 100644 index 000000000..8ba13d9cc --- /dev/null +++ b/engines/stage-tamagotchi-godot/scripts/view/StageCameraPoseController.cs.uid @@ -0,0 +1 @@ +uid://jw67e75q5len diff --git a/engines/stage-tamagotchi-godot/scripts/view/StageViewController.cs.uid b/engines/stage-tamagotchi-godot/scripts/view/StageViewController.cs.uid new file mode 100644 index 000000000..9da9415c2 --- /dev/null +++ b/engines/stage-tamagotchi-godot/scripts/view/StageViewController.cs.uid @@ -0,0 +1 @@ +uid://bdisyd6lb4b4l diff --git a/engines/stage-tamagotchi-godot/scripts/view/StageViewRuntime.cs.uid b/engines/stage-tamagotchi-godot/scripts/view/StageViewRuntime.cs.uid new file mode 100644 index 000000000..ee85181ae --- /dev/null +++ b/engines/stage-tamagotchi-godot/scripts/view/StageViewRuntime.cs.uid @@ -0,0 +1 @@ +uid://bc71y46wb0eju diff --git a/engines/stage-tamagotchi-godot/scripts/view/StageViewStateRules.cs.uid b/engines/stage-tamagotchi-godot/scripts/view/StageViewStateRules.cs.uid new file mode 100644 index 000000000..dd09de3a8 --- /dev/null +++ b/engines/stage-tamagotchi-godot/scripts/view/StageViewStateRules.cs.uid @@ -0,0 +1 @@ +uid://ck6ytnddww2bw diff --git a/engines/stage-tamagotchi-godot/scripts/view/StageViewStateStore.cs.uid b/engines/stage-tamagotchi-godot/scripts/view/StageViewStateStore.cs.uid new file mode 100644 index 000000000..f46708944 --- /dev/null +++ b/engines/stage-tamagotchi-godot/scripts/view/StageViewStateStore.cs.uid @@ -0,0 +1 @@ +uid://dstg774x40jce diff --git a/engines/stage-tamagotchi-godot/scripts/visuals/StageCompositorOwner.cs.uid b/engines/stage-tamagotchi-godot/scripts/visuals/StageCompositorOwner.cs.uid new file mode 100644 index 000000000..ec0a94513 --- /dev/null +++ b/engines/stage-tamagotchi-godot/scripts/visuals/StageCompositorOwner.cs.uid @@ -0,0 +1 @@ +uid://b3ty56200pkxu diff --git a/engines/stage-tamagotchi-godot/scripts/visuals/StageEnvironmentAssetResolver.cs.uid b/engines/stage-tamagotchi-godot/scripts/visuals/StageEnvironmentAssetResolver.cs.uid new file mode 100644 index 000000000..aaba139ed --- /dev/null +++ b/engines/stage-tamagotchi-godot/scripts/visuals/StageEnvironmentAssetResolver.cs.uid @@ -0,0 +1 @@ +uid://cgqe8if4gbmyj diff --git a/engines/stage-tamagotchi-godot/scripts/visuals/StageMaterialOverlayOwner.cs.uid b/engines/stage-tamagotchi-godot/scripts/visuals/StageMaterialOverlayOwner.cs.uid new file mode 100644 index 000000000..7ace58042 --- /dev/null +++ b/engines/stage-tamagotchi-godot/scripts/visuals/StageMaterialOverlayOwner.cs.uid @@ -0,0 +1 @@ +uid://harlw7sjdv2d diff --git a/engines/stage-tamagotchi-godot/scripts/visuals/StagePostProcessCompositorEffect.Pipeline.cs.uid b/engines/stage-tamagotchi-godot/scripts/visuals/StagePostProcessCompositorEffect.Pipeline.cs.uid new file mode 100644 index 000000000..ee5464b2d --- /dev/null +++ b/engines/stage-tamagotchi-godot/scripts/visuals/StagePostProcessCompositorEffect.Pipeline.cs.uid @@ -0,0 +1 @@ +uid://cjb8mho3n10p2 diff --git a/engines/stage-tamagotchi-godot/scripts/visuals/StagePostProcessCompositorEffect.Resources.cs.uid b/engines/stage-tamagotchi-godot/scripts/visuals/StagePostProcessCompositorEffect.Resources.cs.uid new file mode 100644 index 000000000..2b68a1a65 --- /dev/null +++ b/engines/stage-tamagotchi-godot/scripts/visuals/StagePostProcessCompositorEffect.Resources.cs.uid @@ -0,0 +1 @@ +uid://do487gvqami6s diff --git a/engines/stage-tamagotchi-godot/scripts/visuals/StagePostProcessCompositorEffect.Shaders.cs.uid b/engines/stage-tamagotchi-godot/scripts/visuals/StagePostProcessCompositorEffect.Shaders.cs.uid new file mode 100644 index 000000000..3646bd831 --- /dev/null +++ b/engines/stage-tamagotchi-godot/scripts/visuals/StagePostProcessCompositorEffect.Shaders.cs.uid @@ -0,0 +1 @@ +uid://bhg2l8dq131fp diff --git a/engines/stage-tamagotchi-godot/scripts/visuals/StagePostProcessCompositorEffect.cs.uid b/engines/stage-tamagotchi-godot/scripts/visuals/StagePostProcessCompositorEffect.cs.uid new file mode 100644 index 000000000..774a46803 --- /dev/null +++ b/engines/stage-tamagotchi-godot/scripts/visuals/StagePostProcessCompositorEffect.cs.uid @@ -0,0 +1 @@ +uid://dn483ac2jeku8 diff --git a/engines/stage-tamagotchi-godot/scripts/visuals/StageRenderEffectsRuntime.cs.uid b/engines/stage-tamagotchi-godot/scripts/visuals/StageRenderEffectsRuntime.cs.uid new file mode 100644 index 000000000..9246aa74c --- /dev/null +++ b/engines/stage-tamagotchi-godot/scripts/visuals/StageRenderEffectsRuntime.cs.uid @@ -0,0 +1 @@ +uid://bd2uvqv2v3aey diff --git a/engines/stage-tamagotchi-godot/scripts/visuals/StageVisualPreset.cs.uid b/engines/stage-tamagotchi-godot/scripts/visuals/StageVisualPreset.cs.uid new file mode 100644 index 000000000..1b1e58dc1 --- /dev/null +++ b/engines/stage-tamagotchi-godot/scripts/visuals/StageVisualPreset.cs.uid @@ -0,0 +1 @@ +uid://cyjfs316pmyyx diff --git a/engines/stage-tamagotchi-godot/stage-tamagotchi-godot.csproj b/engines/stage-tamagotchi-godot/stage-tamagotchi-godot.csproj index dcc172270..c6debda43 100644 --- a/engines/stage-tamagotchi-godot/stage-tamagotchi-godot.csproj +++ b/engines/stage-tamagotchi-godot/stage-tamagotchi-godot.csproj @@ -1,9 +1,8 @@ - + - net8.0 - net9.0 true StageTamagotchiGodot + net10.0 diff --git a/engines/stage-tamagotchi-godot/stage-tamagotchi-godot.sln b/engines/stage-tamagotchi-godot/stage-tamagotchi-godot.sln deleted file mode 100644 index 02ad094fc..000000000 --- a/engines/stage-tamagotchi-godot/stage-tamagotchi-godot.sln +++ /dev/null @@ -1,19 +0,0 @@ -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio 2012 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "stage-tamagotchi-godot", "stage-tamagotchi-godot.csproj", "{95468D0F-8DA0-4018-8339-3723064F84F3}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - ExportDebug|Any CPU = ExportDebug|Any CPU - ExportRelease|Any CPU = ExportRelease|Any CPU - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {95468D0F-8DA0-4018-8339-3723064F84F3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {95468D0F-8DA0-4018-8339-3723064F84F3}.Debug|Any CPU.Build.0 = Debug|Any CPU - {95468D0F-8DA0-4018-8339-3723064F84F3}.ExportDebug|Any CPU.ActiveCfg = ExportDebug|Any CPU - {95468D0F-8DA0-4018-8339-3723064F84F3}.ExportDebug|Any CPU.Build.0 = ExportDebug|Any CPU - {95468D0F-8DA0-4018-8339-3723064F84F3}.ExportRelease|Any CPU.ActiveCfg = ExportRelease|Any CPU - {95468D0F-8DA0-4018-8339-3723064F84F3}.ExportRelease|Any CPU.Build.0 = ExportRelease|Any CPU - EndGlobalSection -EndGlobal diff --git a/engines/stage-tamagotchi-godot/stage-tamagotchi-godot.slnx b/engines/stage-tamagotchi-godot/stage-tamagotchi-godot.slnx new file mode 100644 index 000000000..ea9fe28fc --- /dev/null +++ b/engines/stage-tamagotchi-godot/stage-tamagotchi-godot.slnx @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/engines/stage-tamagotchi-godot/tests/StageTamagotchiGodot.Tests/Directory.Build.props b/engines/stage-tamagotchi-godot/tests/stage-tamagotchi-godot.tests/Directory.Build.props similarity index 82% rename from engines/stage-tamagotchi-godot/tests/StageTamagotchiGodot.Tests/Directory.Build.props rename to engines/stage-tamagotchi-godot/tests/stage-tamagotchi-godot.tests/Directory.Build.props index f7c55b3e5..bd270e5e9 100644 --- a/engines/stage-tamagotchi-godot/tests/StageTamagotchiGodot.Tests/Directory.Build.props +++ b/engines/stage-tamagotchi-godot/tests/stage-tamagotchi-godot.tests/Directory.Build.props @@ -1,4 +1,6 @@ + + $(MSBuildThisFileDirectory)..\..\.godot\mono\temp\tests\ $([System.IO.Path]::GetFullPath('$(ArtifactsRoot)')) diff --git a/engines/stage-tamagotchi-godot/tests/StageTamagotchiGodot.Tests/Program.cs b/engines/stage-tamagotchi-godot/tests/stage-tamagotchi-godot.tests/Program.cs similarity index 97% rename from engines/stage-tamagotchi-godot/tests/StageTamagotchiGodot.Tests/Program.cs rename to engines/stage-tamagotchi-godot/tests/stage-tamagotchi-godot.tests/Program.cs index e36730c56..423258a3f 100644 --- a/engines/stage-tamagotchi-godot/tests/StageTamagotchiGodot.Tests/Program.cs +++ b/engines/stage-tamagotchi-godot/tests/stage-tamagotchi-godot.tests/Program.cs @@ -6,7 +6,7 @@ using System.IO; /// /// Call stack: /// -/// dotnet run --project tests/StageTamagotchiGodot.Tests +/// dotnet run --project tests/stage-tamagotchi-godot.tests /// -> /// -> /// -> @@ -28,7 +28,7 @@ internal static class Program CameraGroundConstraint.NormalizePreservesCameraYAboveStageGround(); StageEnvironmentAssets.ResolvesThreeStageSkyHdriFromGodotProjectDirectory(); StageEnvironmentAssets.ReturnsEmptyPathWhenThreeStageSkyHdriIsUnavailable(); - Console.WriteLine("StageTamagotchiGodot.Tests passed."); + Console.WriteLine("stage-tamagotchi-godot.tests passed."); return 0; } catch (Exception error) diff --git a/engines/stage-tamagotchi-godot/tests/StageTamagotchiGodot.Tests/StageTamagotchiGodot.Tests.csproj b/engines/stage-tamagotchi-godot/tests/stage-tamagotchi-godot.tests/stage-tamagotchi-godot.tests.csproj similarity index 95% rename from engines/stage-tamagotchi-godot/tests/StageTamagotchiGodot.Tests/StageTamagotchiGodot.Tests.csproj rename to engines/stage-tamagotchi-godot/tests/stage-tamagotchi-godot.tests/stage-tamagotchi-godot.tests.csproj index 202c15e42..b6159d1d0 100644 --- a/engines/stage-tamagotchi-godot/tests/StageTamagotchiGodot.Tests/StageTamagotchiGodot.Tests.csproj +++ b/engines/stage-tamagotchi-godot/tests/stage-tamagotchi-godot.tests/stage-tamagotchi-godot.tests.csproj @@ -1,7 +1,6 @@ Exe - net8.0 $(MSBuildThisFileDirectory)..\.. $([System.IO.Path]::GetFullPath('$(ProjectDirInput)')) $([MSBuild]::EnsureTrailingSlash('$(GodotProjectDir)'))