Files
claude c4beeae38f Initial commit: Transcience MVP
Top-down twin-stick bullet-hell, Godot 4.7, server-authoritative dedicated
server with client-side prediction. Clients send input only; the server
resolves every hit for both players and enemies (no PvP).

- SimWorld: whole simulation as plain RefCounted objects (no nodes, no
  physics server), ~0.24ms/tick at peak load -- runs headless for free and
  drives 78 tests in under a second
- BulletPool: struct-of-arrays bullet storage, replicated as spawn/despawn
  events rather than per-tick state
- Emitter framework (Ring/AimedSpread/WallGap/ArcSweep) shared by trash
  enemies and bosses -- a new boss is data in src/content/content.gd, no
  simulation changes
- The Warden of the Fold: stationary 4-phase boss built entirely on that
  format
- Lobby hub with a portal into on-demand dungeon instances; one process
  hosts the hub plus every concurrent dungeon
- Emergency escape: 3s server-owned channel, cancelled by damage
- tools/check.sh, test.sh (GUT), smoke.sh (real server + bot clients over
  ENet), bench.gd; git hooks wired to the same scripts
- docs/ARCHITECTURE.md, NETCODE.md, WORKFLOW.md, ROADMAP.md
2026-09-03 16:03:57 +02:00

69 lines
2.9 KiB
Plaintext

[gd_scene format=3 uid="uid://dqbkylpsatcqm"]
[ext_resource type="Script" uid="uid://g7qu8ihdt3pd" path="res://addons/gut/gui/about.gd" id="1_bg86c"]
[ext_resource type="PackedScene" uid="uid://c5om15m2e70qp" path="res://addons/gut/gui/check_for_update.tscn" id="2_kpic4"]
[ext_resource type="PackedScene" uid="uid://bjkn8mhx2fmt1" path="res://addons/gut/gui/GutLogo.tscn" id="3_kpic4"]
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_q8rky"]
bg_color = Color(0, 0, 0, 0.49803922)
[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_kpic4"]
[node name="About" type="AcceptDialog" unique_id=1150745302]
oversampling_override = 1.0
title = "About GUT"
position = Vector2i(0, 36)
size = Vector2i(1500, 800)
visible = true
min_size = Vector2i(800, 800)
script = ExtResource("1_bg86c")
[node name="HBox" type="HBoxContainer" parent="." unique_id=1875890740]
offset_left = 8.0
offset_top = 8.0
offset_right = 1492.0
offset_bottom = 751.0
alignment = 1
[node name="MakeRoomForLogo" type="CenterContainer" parent="HBox" unique_id=1274652102]
custom_minimum_size = Vector2(200, 0)
layout_mode = 2
[node name="VBoxContainer" type="VBoxContainer" parent="HBox" unique_id=1594624944]
layout_mode = 2
size_flags_horizontal = 3
theme_override_constants/separation = 0
[node name="CheckForUpdate" parent="HBox/VBoxContainer" unique_id=381385621 instance=ExtResource("2_kpic4")]
custom_minimum_size = Vector2(0, 76)
layout_mode = 2
[node name="Scroll" type="ScrollContainer" parent="HBox/VBoxContainer" unique_id=1684204946]
layout_mode = 2
size_flags_horizontal = 3
size_flags_vertical = 3
[node name="RichTextLabel" type="RichTextLabel" parent="HBox/VBoxContainer/Scroll" unique_id=1217183710]
layout_mode = 2
size_flags_horizontal = 3
size_flags_vertical = 3
theme_override_styles/normal = SubResource("StyleBoxFlat_q8rky")
theme_override_styles/focus = SubResource("StyleBoxEmpty_kpic4")
bbcode_enabled = true
fit_content = true
[node name="Logo" parent="." unique_id=2097718136 instance=ExtResource("3_kpic4")]
modulate = Color(0.74509805, 0.74509805, 0.74509805, 1)
position = Vector2(151, 265)
scale = Vector2(0.8, 0.8)
active = true
disabled = true
[connection signal="mouse_entered" from="." to="." method="_on_mouse_entered"]
[connection signal="mouse_exited" from="." to="." method="_on_mouse_exited"]
[connection signal="verbose_enabled" from="HBox/VBoxContainer/CheckForUpdate" to="." method="_on_check_for_update_verbose_enabled"]
[connection signal="meta_clicked" from="HBox/VBoxContainer/Scroll/RichTextLabel" to="." method="_on_rich_text_label_meta_clicked"]
[connection signal="meta_hover_ended" from="HBox/VBoxContainer/Scroll/RichTextLabel" to="." method="_on_rich_text_label_meta_hover_ended"]
[connection signal="meta_hover_started" from="HBox/VBoxContainer/Scroll/RichTextLabel" to="." method="_on_rich_text_label_meta_hover_started"]
[connection signal="pressed" from="Logo" to="." method="_on_logo_pressed"]