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)'))