From a1d9b966a989bdcdf2a709fb0fcbe43545c1cf04 Mon Sep 17 00:00:00 2001 From: Claude Code Date: Sat, 28 Mar 2026 14:55:37 -0700 Subject: [PATCH] =?UTF-8?q?feat(godot-mobile):=20=E2=9C=A8=20Introduce=20m?= =?UTF-8?q?obile-specific=20optimizations=20and=20controls=20for=20touch?= =?UTF-8?q?=20interactions?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Lilith Autocommit --- godot-mobile/addons | 1 + godot-mobile/export/android.preset | 0 godot-mobile/export/ios.preset | 0 godot-mobile/gdformatrc | 1 + godot-mobile/gdlintrc | 1 + godot-mobile/platform/mobile_companion.gd | 12 ++++++ godot-mobile/project.godot | 47 +++++++++++++++++++++++ godot-mobile/scenes/companion.tscn | 33 ++++++++++++++++ godot-mobile/src | 1 + 9 files changed, 96 insertions(+) create mode 120000 godot-mobile/addons create mode 100644 godot-mobile/export/android.preset create mode 100644 godot-mobile/export/ios.preset create mode 120000 godot-mobile/gdformatrc create mode 120000 godot-mobile/gdlintrc create mode 100644 godot-mobile/platform/mobile_companion.gd create mode 100644 godot-mobile/project.godot create mode 100644 godot-mobile/scenes/companion.tscn create mode 120000 godot-mobile/src diff --git a/godot-mobile/addons b/godot-mobile/addons new file mode 120000 index 0000000..932abce --- /dev/null +++ b/godot-mobile/addons @@ -0,0 +1 @@ +../godot-desktop/addons \ No newline at end of file diff --git a/godot-mobile/export/android.preset b/godot-mobile/export/android.preset new file mode 100644 index 0000000..e69de29 diff --git a/godot-mobile/export/ios.preset b/godot-mobile/export/ios.preset new file mode 100644 index 0000000..e69de29 diff --git a/godot-mobile/gdformatrc b/godot-mobile/gdformatrc new file mode 120000 index 0000000..85054ea --- /dev/null +++ b/godot-mobile/gdformatrc @@ -0,0 +1 @@ +../godot-desktop/gdformatrc \ No newline at end of file diff --git a/godot-mobile/gdlintrc b/godot-mobile/gdlintrc new file mode 120000 index 0000000..228d503 --- /dev/null +++ b/godot-mobile/gdlintrc @@ -0,0 +1 @@ +../godot-desktop/gdlintrc \ No newline at end of file diff --git a/godot-mobile/platform/mobile_companion.gd b/godot-mobile/platform/mobile_companion.gd new file mode 100644 index 0000000..09b80e8 --- /dev/null +++ b/godot-mobile/platform/mobile_companion.gd @@ -0,0 +1,12 @@ +extends "res://src/companion.gd" +## Mobile companion — standard app window with touch interaction. +## No transparent overlay, no system tray, no window management. +## Face tracking uses on-device camera (no sidecar). + + +func _ready() -> void: + setup_avatar() + setup_sound() + setup_interaction() + setup_conversation() + play_startup_sound() diff --git a/godot-mobile/project.godot b/godot-mobile/project.godot new file mode 100644 index 0000000..4e46295 --- /dev/null +++ b/godot-mobile/project.godot @@ -0,0 +1,47 @@ +; Engine configuration file. +; It's best edited using the editor UI and not directly, +; since the parameters that go here are not all obvious. +; +; Format: +; [section] ; section goes between [] +; param=value ; assign values to parameters + +config_version=5 + +[animation] + +compatibility/default_parent_skeleton_in_mesh_instance_3d=true + +[application] + +config/name="Chobit Mobile" +config/description="Interactive AI companion with 3D avatar and voice interaction" +run/main_scene="res://scenes/companion.tscn" +config/features=PackedStringArray("4.6", "Mobile") + +[audio] + +driver/enable_input=true + +[autoload] + +EventBus="*res://src/autoloads/event_bus.gd" +FlightRecorder="*res://src/autoloads/flight_recorder.gd" +AppState="*res://src/autoloads/app_state.gd" +CompanionConfig="*res://src/autoloads/companion_config.gd" + +[display] + +window/subwindows/embed_subwindows=false +window/size/viewport_width=720 +window/size/viewport_height=1440 +window/stretch/mode="viewport" +window/handheld/orientation=1 + +[editor_plugins] + +enabled=PackedStringArray("res://addons/Godot-MToon-Shader/plugin.cfg", "res://addons/vrm/plugin.cfg") + +[rendering] + +renderer/rendering_method="mobile" diff --git a/godot-mobile/scenes/companion.tscn b/godot-mobile/scenes/companion.tscn new file mode 100644 index 0000000..a3d2542 --- /dev/null +++ b/godot-mobile/scenes/companion.tscn @@ -0,0 +1,33 @@ +[gd_scene load_steps=3 format=3] + +[ext_resource type="Script" path="res://platform/mobile_companion.gd" id="1_companion"] + +[sub_resource type="Environment" id="Environment_1"] +ambient_light_source = 2 +ambient_light_color = Color(0.6, 0.6, 0.7, 1) +ambient_light_energy = 0.5 + +[node name="CompanionRoot" type="Node3D"] +script = ExtResource("1_companion") + +[node name="Camera3D" type="Camera3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.2, 1.5) +fov = 50.0 + +[node name="WorldEnvironment" type="WorldEnvironment" parent="."] +environment = SubResource("Environment_1") + +[node name="DirectionalLight3D" type="DirectionalLight3D" parent="."] +transform = Transform3D(0.866, 0.25, -0.433, 0, 0.866, 0.5, 0.5, -0.433, 0.75, 2, 3, 2) +light_energy = 0.8 +shadow_enabled = true + +[node name="FillLight" type="DirectionalLight3D" parent="."] +transform = Transform3D(0.866, 0.25, 0.433, 0, 0.866, -0.5, -0.5, 0.433, 0.75, -2, 2, 1) +light_energy = 0.3 + +[node name="AvatarRoot" type="Node3D" parent="."] + +[node name="AudioStreamPlayer" type="AudioStreamPlayer" parent="."] + +[node name="UI" type="CanvasLayer" parent="."] diff --git a/godot-mobile/src b/godot-mobile/src new file mode 120000 index 0000000..9ab2386 --- /dev/null +++ b/godot-mobile/src @@ -0,0 +1 @@ +../shared/godot \ No newline at end of file