From 19a26e69f883b934f13e2428aec18f73c5e3d6a9 Mon Sep 17 00:00:00 2001 From: Lisandro Crespo Date: Fri, 15 May 2026 09:40:54 -0500 Subject: [PATCH 01/12] Add missing features to demo --- demo/Blackholio/client-godot/Circle2D.cs | 73 +++- .../client-godot/CircleController.cs | 21 +- .../client-godot/EntityController.cs | 38 ++ .../Blackholio/client-godot/FoodController.cs | 7 +- demo/Blackholio/client-godot/GameManager.cs | 77 ++-- demo/Blackholio/client-godot/HudController.cs | 334 ++++++++++++++++++ .../client-godot/HudController.cs.uid | 1 + demo/Blackholio/client-godot/Instantiator.cs | 25 ++ .../client-godot/PlayerController.cs | 26 +- .../client-godot/StarfieldBackground.cs | 79 +++++ .../client-godot/StarfieldBackground.cs.uid | 1 + .../module_bindings/Reducers/PlayerSplit.g.cs | 53 +++ .../Reducers/PlayerSplit.g.cs.uid | 1 + .../module_bindings/Reducers/Respawn.g.cs | 53 +++ .../module_bindings/Reducers/Respawn.g.cs.uid | 1 + .../module_bindings/Reducers/Suicide.g.cs | 53 +++ .../module_bindings/Reducers/Suicide.g.cs.uid | 1 + .../module_bindings/SpacetimeDBClient.g.cs | 6 + .../Tables/ConsumeEntityEvent.g.cs | 47 +++ .../Tables/ConsumeEntityEvent.g.cs.uid | 1 + .../Types/CircleDecayTimer.g.cs | 35 ++ .../Types/CircleDecayTimer.g.cs.uid | 1 + .../Types/CircleRecombineTimer.g.cs | 39 ++ .../Types/CircleRecombineTimer.g.cs.uid | 1 + .../Types/ConsumeEntityEvent.g.cs | 34 ++ .../Types/ConsumeEntityEvent.g.cs.uid | 1 + .../Types/ConsumeEntityTimer.g.cs | 43 +++ .../Types/ConsumeEntityTimer.g.cs.uid | 1 + 28 files changed, 1022 insertions(+), 31 deletions(-) create mode 100644 demo/Blackholio/client-godot/HudController.cs create mode 100644 demo/Blackholio/client-godot/HudController.cs.uid create mode 100644 demo/Blackholio/client-godot/StarfieldBackground.cs create mode 100644 demo/Blackholio/client-godot/StarfieldBackground.cs.uid create mode 100644 demo/Blackholio/client-godot/module_bindings/Reducers/PlayerSplit.g.cs create mode 100644 demo/Blackholio/client-godot/module_bindings/Reducers/PlayerSplit.g.cs.uid create mode 100644 demo/Blackholio/client-godot/module_bindings/Reducers/Respawn.g.cs create mode 100644 demo/Blackholio/client-godot/module_bindings/Reducers/Respawn.g.cs.uid create mode 100644 demo/Blackholio/client-godot/module_bindings/Reducers/Suicide.g.cs create mode 100644 demo/Blackholio/client-godot/module_bindings/Reducers/Suicide.g.cs.uid create mode 100644 demo/Blackholio/client-godot/module_bindings/Tables/ConsumeEntityEvent.g.cs create mode 100644 demo/Blackholio/client-godot/module_bindings/Tables/ConsumeEntityEvent.g.cs.uid create mode 100644 demo/Blackholio/client-godot/module_bindings/Types/CircleDecayTimer.g.cs create mode 100644 demo/Blackholio/client-godot/module_bindings/Types/CircleDecayTimer.g.cs.uid create mode 100644 demo/Blackholio/client-godot/module_bindings/Types/CircleRecombineTimer.g.cs create mode 100644 demo/Blackholio/client-godot/module_bindings/Types/CircleRecombineTimer.g.cs.uid create mode 100644 demo/Blackholio/client-godot/module_bindings/Types/ConsumeEntityEvent.g.cs create mode 100644 demo/Blackholio/client-godot/module_bindings/Types/ConsumeEntityEvent.g.cs.uid create mode 100644 demo/Blackholio/client-godot/module_bindings/Types/ConsumeEntityTimer.g.cs create mode 100644 demo/Blackholio/client-godot/module_bindings/Types/ConsumeEntityTimer.g.cs.uid diff --git a/demo/Blackholio/client-godot/Circle2D.cs b/demo/Blackholio/client-godot/Circle2D.cs index c414b7b6843..e113065e521 100644 --- a/demo/Blackholio/client-godot/Circle2D.cs +++ b/demo/Blackholio/client-godot/Circle2D.cs @@ -1,6 +1,13 @@ +using System; using Godot; -public partial class Circle2D : Node2D +public enum CircleVisualStyle +{ + Player, + Food +} + +public abstract partial class Circle2D : Node2D { private float _radius = 10.0f; [Export] @@ -29,6 +36,68 @@ public Color Color QueueRedraw(); } } + + [Export] + public CircleVisualStyle VisualStyle { get; set; } = CircleVisualStyle.Player; + + [Export] + public float AnimationSeed { get; set; } - public override void _Draw() => DrawCircle(Vector2.Zero, Radius, Color); + public override void _Draw() + { + if (Radius <= 0.01f) return; + + switch (VisualStyle) + { + case CircleVisualStyle.Player: + DrawPlayerCircle(); + break; + case CircleVisualStyle.Food: + DrawFood(); + break; + default: + throw new ArgumentOutOfRangeException(); + } + } + + protected void RedrawAnimatedVisuals() => QueueRedraw(); + + private void DrawPlayerCircle() + { + var time = Time.GetTicksMsec() / 1000.0f; + var pulse = 0.5f + 0.5f * Mathf.Sin(time * 2.2f + AnimationSeed); + DrawCircle(Vector2.Zero, Radius * (1.16f + pulse * 0.04f), WithAlpha(Color, 0.14f)); + DrawCircle(Vector2.Zero, Radius, Shade(Color, 0.58f)); + DrawCircle(Vector2.Zero, Radius * 0.82f, Color); + DrawCircle(new Vector2(-Radius * 0.22f, -Radius * 0.24f), Radius * 0.34f, WithAlpha(Shade(Color, 1.42f), 0.72f)); + + var outline = new Vector2[73]; + for (var i = 0; i < outline.Length; i++) + { + var angle = Mathf.Tau * i / (outline.Length - 1); + var wave = Mathf.Sin(angle * 7.0f + time * 3.0f + AnimationSeed) * 0.035f; + outline[i] = Vector2.FromAngle(angle) * Radius * (1.015f + wave); + } + + DrawPolyline(outline, WithAlpha(Shade(Color, 1.55f), 0.88f), Mathf.Clamp(Radius * 0.085f, 1.5f, 5.0f), true); + } + + private void DrawFood() + { + var time = Time.GetTicksMsec() / 1000.0f; + var pulse = 0.5f + 0.5f * Mathf.Sin(time * 5.0f + AnimationSeed); + DrawCircle(Vector2.Zero, Radius * (1.32f + pulse * 0.09f), WithAlpha(Color, 0.1f)); + DrawCircle(Vector2.Zero, Radius, Shade(Color, 0.72f)); + DrawCircle(Vector2.Zero, Radius * 0.64f, Color); + DrawCircle(Vector2.Zero, Radius * 0.24f, WithAlpha(Shade(Color, 1.55f), 0.86f)); + } + + private static Color Shade(Color color, float multiplier) => new Color( + Mathf.Clamp(color.R * multiplier, 0.0f, 1.0f), + Mathf.Clamp(color.G * multiplier, 0.0f, 1.0f), + Mathf.Clamp(color.B * multiplier, 0.0f, 1.0f), + color.A + ); + + private static Color WithAlpha(Color color, float alpha) => new(color.R, color.G, color.B, alpha); } diff --git a/demo/Blackholio/client-godot/CircleController.cs b/demo/Blackholio/client-godot/CircleController.cs index 73504709042..4f0baf22ff2 100644 --- a/demo/Blackholio/client-godot/CircleController.cs +++ b/demo/Blackholio/client-godot/CircleController.cs @@ -69,8 +69,14 @@ private Label Label { Name = $"{Name}_Label", TopLevel = false, - MouseFilter = Control.MouseFilterEnum.Ignore + MouseFilter = Control.MouseFilterEnum.Ignore, + HorizontalAlignment = HorizontalAlignment.Center }; + _label.AddThemeFontSizeOverride("font_size", 13); + _label.AddThemeColorOverride("font_color", Colors.White); + _label.AddThemeColorOverride("font_shadow_color", new Color(0, 0, 0, 0.75f)); + _label.AddThemeConstantOverride("shadow_offset_x", 1); + _label.AddThemeConstantOverride("shadow_offset_y", 1); LabelRoot.AddChild(_label); } return _label; @@ -90,6 +96,7 @@ public CircleController(Circle circle, PlayerController ownerPlayer) : base(circ public override void _Process(double delta) { base._Process(delta); + Label.Text = OwnerPlayer?.Username ?? ""; UpdateScreenLabelPosition(); } @@ -105,8 +112,20 @@ public override void OnDelete() OwnerPlayer?.OnCircleDeleted(this); } + public override void OnConsumed() + { + if (IsInstanceValid(Label)) + { + Label.QueueFree(); + } + + OwnerPlayer?.OnCircleDeleted(this); + } + private void UpdateScreenLabelPosition() { + if (!IsInstanceValid(Label)) return; + Label.Size = Label.GetCombinedMinimumSize(); var screenPosition = GetGlobalTransformWithCanvas().Origin; var offset = new Vector2(0.0f, Radius + 8.0f); diff --git a/demo/Blackholio/client-godot/EntityController.cs b/demo/Blackholio/client-godot/EntityController.cs index 207354f0489..a94ba3667d6 100644 --- a/demo/Blackholio/client-godot/EntityController.cs +++ b/demo/Blackholio/client-godot/EntityController.cs @@ -4,6 +4,7 @@ public abstract partial class EntityController : Circle2D { private const float LerpDurationSec = 0.1f; + private const float DespawnDurationSec = 0.2f; public int EntityId { get; private set; } @@ -11,11 +12,17 @@ public abstract partial class EntityController : Circle2D private Vector2 LerpStartPosition { get; set; } private Vector2 TargetPosition { get; set; } private float TargetRadius { get; set; } + private bool IsDespawning { get; set; } + private float DespawnTime { get; set; } + private Vector2 DespawnStartPosition { get; set; } + private float DespawnStartRadius { get; set; } + private Node2D DespawnTarget { get; set; } protected EntityController(int entityId, Color color) { EntityId = entityId; Color = color; + AnimationSeed = entityId * 0.73f; var entity = GameManager.Conn.Db.Entity.EntityId.Find(entityId); var position = (Vector2)entity.Position; @@ -28,6 +35,8 @@ protected EntityController(int entityId, Color color) public void OnEntityUpdated(Entity newRow) { + if (IsDespawning) return; + LerpTime = 0.0f; LerpStartPosition = GlobalPosition; TargetPosition = (Vector2)newRow.Position; @@ -35,13 +44,42 @@ public void OnEntityUpdated(Entity newRow) } public virtual void OnDelete() => QueueFree(); + public virtual void OnConsumed() { } + + public void StartDespawn(Node2D target) + { + IsDespawning = true; + DespawnTime = 0.0f; + DespawnStartPosition = GlobalPosition; + DespawnStartRadius = Radius; + DespawnTarget = target; + ZIndex += 10; + } public override void _Process(double delta) { var frameDelta = (float)delta; + if (IsDespawning) + { + DespawnTime = Mathf.Min(DespawnTime + frameDelta, DespawnDurationSec); + var t = DespawnTime / DespawnDurationSec; + var targetPosition = IsInstanceValid(DespawnTarget) ? DespawnTarget.GlobalPosition : TargetPosition; + GlobalPosition = DespawnStartPosition.Lerp(targetPosition, t); + Radius = Mathf.Lerp(DespawnStartRadius, 0.0f, t); + RedrawAnimatedVisuals(); + + if (DespawnTime >= DespawnDurationSec) + { + QueueFree(); + } + + return; + } + LerpTime = Mathf.Min(LerpTime + frameDelta, LerpDurationSec); GlobalPosition = LerpStartPosition.Lerp(TargetPosition, LerpTime / LerpDurationSec); Radius = Mathf.Lerp(Radius, TargetRadius, frameDelta * 8.0f); + RedrawAnimatedVisuals(); } private static float MassToRadius(int mass) => Mathf.Sqrt(mass); diff --git a/demo/Blackholio/client-godot/FoodController.cs b/demo/Blackholio/client-godot/FoodController.cs index fc46ba0dbca..c5b115bb81a 100644 --- a/demo/Blackholio/client-godot/FoodController.cs +++ b/demo/Blackholio/client-godot/FoodController.cs @@ -13,5 +13,8 @@ public partial class FoodController : EntityController new(35 / 255.0f, 245 / 255.0f, 165 / 255.0f), ]; - public FoodController(Food food) : base(food.EntityId, ColorPalette[food.EntityId % ColorPalette.Length]) { } -} \ No newline at end of file + public FoodController(Food food) : base(food.EntityId, ColorPalette[food.EntityId % ColorPalette.Length]) + { + VisualStyle = CircleVisualStyle.Food; + } +} diff --git a/demo/Blackholio/client-godot/GameManager.cs b/demo/Blackholio/client-godot/GameManager.cs index b22f8546b4f..47f849453f8 100644 --- a/demo/Blackholio/client-godot/GameManager.cs +++ b/demo/Blackholio/client-godot/GameManager.cs @@ -1,5 +1,6 @@ using System; using System.Collections.Generic; +using System.Linq; using SpacetimeDB; using SpacetimeDB.Types; using Godot; @@ -16,7 +17,7 @@ public partial class GameManager : Node private string DatabaseName { get; set; } = "blackholio"; [Export] - private Color BackgroundColor { get; set; } = Colors.MidnightBlue; + private Color BackgroundColor { get; set; } = new(0.006f, 0.009f, 0.024f); [Export] private float BorderThickness { get; set; } = 5.0f; @@ -31,6 +32,8 @@ public partial class GameManager : Node public static Identity LocalIdentity { get; private set; } public static DbConnection Conn { get; private set; } + private HudController Hud { get; set; } + public GameManager() { var builder = DbConnection.Builder() @@ -46,12 +49,15 @@ public GameManager() } Conn = builder.Build(); + Conn.OnUnhandledReducerError += HandleUnhandledReducerError; STDBUpdateManager.Add(Conn); } public override void _EnterTree() { Instance = this; + Hud = new HudController(DefaultPlayerName); + AddChild(Hud); } public override void _ExitTree() @@ -68,6 +74,12 @@ public override void _ExitTree() private void Disconnect() { + if (Conn != null) + { + Conn.OnUnhandledReducerError -= HandleUnhandledReducerError; + Conn.Db.Player.OnUpdate -= HideUsernameChooserAfterNameUpdate; + } + STDBUpdateManager.Remove(Conn, true); Conn = null; } @@ -112,37 +124,56 @@ private void HandleSubscriptionApplied(SubscriptionEventContext ctx) // Get the world size from the config table and set up the arena var worldSize = Conn.Db.Config.Id.Find(0).WorldSize; SetupArena(worldSize); - - ctx.Reducers.EnterGame(DefaultPlayerName); + + var player = ctx.Db.Player.Identity.Find(LocalIdentity); + if (player == null || string.IsNullOrEmpty(player.Name)) + { + HudController.Instance?.ShowUsernameChooser(true); + Conn.Db.Player.OnUpdate += HideUsernameChooserAfterNameUpdate; + return; + } + + HudController.Instance?.ShowUsernameChooser(false); + if (!ctx.Db.Circle.PlayerId.Filter(player.PlayerId).Any()) + { + ctx.Reducers.EnterGame(player.Name); + } + } + + private static void HideUsernameChooserAfterNameUpdate(EventContext context, Player oldPlayer, Player newPlayer) + { + if (newPlayer.Identity != LocalIdentity || string.IsNullOrEmpty(newPlayer.Name)) return; + + HudController.Instance?.ShowUsernameChooser(false); + Conn.Db.Player.OnUpdate -= HideUsernameChooserAfterNameUpdate; + } + + private static void HandleUnhandledReducerError(ReducerEventContext context, Exception ex) + { + GD.PrintErr($"Reducer error: {ex.Message}"); } private void SetupArena(float worldSize) { - var polygon = new[] - { - new Vector2(0, 0), - new Vector2(worldSize, 0), - new Vector2(worldSize, worldSize), - new Vector2(0, worldSize), - }; - var background = new Polygon2D - { - Name = "Background", - Color = BackgroundColor, - Position = Vector2.Zero, - Polygon = polygon, - ZIndex = -1000 - }; - background.AddChild(new Polygon2D + AddChild(new StarfieldBackground(worldSize, BackgroundColor), @internal: InternalMode.Back); + + var border = new Polygon2D { - Name = "Border", + Name = "Arena Border", Color = BorderColor, Position = Vector2.Zero, InvertEnabled = true, InvertBorder = BorderThickness, - Polygon = polygon - }); - AddChild(background); + Polygon = new[] + { + new Vector2(0, 0), + new Vector2(worldSize, 0), + new Vector2(worldSize, worldSize), + new Vector2(0, worldSize), + }, + ZIndex = -500 + }; + AddChild(border); AddChild(new CameraController(worldSize)); } diff --git a/demo/Blackholio/client-godot/HudController.cs b/demo/Blackholio/client-godot/HudController.cs new file mode 100644 index 00000000000..aaad1e41914 --- /dev/null +++ b/demo/Blackholio/client-godot/HudController.cs @@ -0,0 +1,334 @@ +using System.Collections.Generic; +using System.Linq; +using Godot; + +public partial class HudController : CanvasLayer +{ + private const int MaxLeaderboardRows = 11; + + private readonly string _defaultUsername; + private readonly List _leaderboardRows = new(); + + private Label _massLabel; + private Label _circlesLabel; + private Control _usernameOverlay; + private LineEdit _usernameInput; + private Control _deathOverlay; + + public static HudController Instance { get; private set; } + + public HudController(string defaultUsername) + { + _defaultUsername = defaultUsername; + Layer = 32; + Name = "HUD"; + } + + public override void _EnterTree() + { + Instance = this; + } + + public override void _ExitTree() + { + if (Instance == this) + { + Instance = null; + } + } + + public override void _Ready() + { + var root = new Control + { + Name = "HUDRoot", + MouseFilter = Control.MouseFilterEnum.Ignore + }; + root.SetAnchorsPreset(Control.LayoutPreset.FullRect); + AddChild(root); + + BuildStatusPanel(root); + BuildLeaderboard(root); + BuildUsernameChooser(root); + BuildDeathOverlay(root); + } + + public override void _Process(double delta) + { + UpdateStatus(); + UpdateLeaderboard(); + } + + public void ShowUsernameChooser(bool visible) + { + if (_usernameOverlay == null) return; + + _usernameOverlay.Visible = visible; + if (visible) + { + _usernameInput.Text = _defaultUsername; + _usernameInput.SelectAll(); + _usernameInput.GrabFocus(); + } + } + + public void ShowDeathScreen(bool visible) + { + if (_deathOverlay == null) return; + + _deathOverlay.Visible = visible; + } + + private void BuildStatusPanel(Control root) + { + var panel = CreatePanel("StatusPanel", new Color(0.025f, 0.035f, 0.07f, 0.78f)); + panel.SetAnchorsPreset(Control.LayoutPreset.TopLeft); + panel.OffsetLeft = 16; + panel.OffsetTop = 16; + panel.OffsetRight = 230; + panel.OffsetBottom = 92; + root.AddChild(panel); + + var box = new VBoxContainer(); + box.AddThemeConstantOverride("separation", 4); + panel.AddChild(box); + + _massLabel = CreateLabel("Mass: 0", 18, Colors.White); + _circlesLabel = CreateLabel("Circles: 0", 14, new Color(0.78f, 0.84f, 0.94f)); + box.AddChild(_massLabel); + box.AddChild(_circlesLabel); + } + + private void BuildLeaderboard(Control root) + { + var panel = CreatePanel("Leaderboard", new Color(0.025f, 0.035f, 0.07f, 0.82f)); + panel.AnchorLeft = 1; + panel.AnchorRight = 1; + panel.OffsetLeft = -284; + panel.OffsetTop = 16; + panel.OffsetRight = -16; + panel.OffsetBottom = 374; + root.AddChild(panel); + + var box = new VBoxContainer(); + box.AddThemeConstantOverride("separation", 5); + panel.AddChild(box); + + var title = CreateLabel("Leaderboard", 18, Colors.White); + box.AddChild(title); + + for (var i = 0; i < MaxLeaderboardRows; i++) + { + var row = new HBoxContainer + { + Visible = false, + CustomMinimumSize = new Vector2(0, 22) + }; + row.AddThemeConstantOverride("separation", 8); + + var rank = CreateLabel("", 13, new Color(0.6f, 0.72f, 0.92f)); + rank.CustomMinimumSize = new Vector2(28, 0); + var username = CreateLabel("", 13, Colors.White); + username.SizeFlagsHorizontal = Control.SizeFlags.ExpandFill; + var mass = CreateLabel("", 13, new Color(0.7f, 1.0f, 0.78f)); + mass.HorizontalAlignment = HorizontalAlignment.Right; + mass.CustomMinimumSize = new Vector2(54, 0); + + row.AddChild(rank); + row.AddChild(username); + row.AddChild(mass); + box.AddChild(row); + _leaderboardRows.Add(new LeaderboardRowControls(row, rank, username, mass)); + } + } + + private void BuildUsernameChooser(Control root) + { + _usernameOverlay = CreateModalOverlay("UsernameOverlay"); + root.AddChild(_usernameOverlay); + + var center = new CenterContainer(); + center.SetAnchorsPreset(Control.LayoutPreset.FullRect); + _usernameOverlay.AddChild(center); + + var panel = CreatePanel("UsernamePanel", new Color(0.04f, 0.055f, 0.1f, 0.96f)); + panel.CustomMinimumSize = new Vector2(380, 188); + center.AddChild(panel); + + var box = new VBoxContainer(); + box.AddThemeConstantOverride("separation", 12); + panel.AddChild(box); + + var title = CreateLabel("Choose Username", 24, Colors.White); + title.HorizontalAlignment = HorizontalAlignment.Center; + box.AddChild(title); + + _usernameInput = new LineEdit + { + Text = _defaultUsername, + PlaceholderText = "Username", + MaxLength = 24 + }; + _usernameInput.TextSubmitted += _ => SubmitUsername(); + box.AddChild(_usernameInput); + + var button = new Button + { + Text = "Play" + }; + button.Pressed += SubmitUsername; + box.AddChild(button); + } + + private void BuildDeathOverlay(Control root) + { + _deathOverlay = CreateModalOverlay("DeathOverlay"); + _deathOverlay.Visible = false; + root.AddChild(_deathOverlay); + + var center = new CenterContainer(); + center.SetAnchorsPreset(Control.LayoutPreset.FullRect); + _deathOverlay.AddChild(center); + + var panel = CreatePanel("DeathPanel", new Color(0.04f, 0.055f, 0.1f, 0.96f)); + panel.CustomMinimumSize = new Vector2(320, 148); + center.AddChild(panel); + + var box = new VBoxContainer(); + box.AddThemeConstantOverride("separation", 14); + panel.AddChild(box); + + var title = CreateLabel("Consumed", 24, Colors.White); + title.HorizontalAlignment = HorizontalAlignment.Center; + box.AddChild(title); + + var button = new Button + { + Text = "Respawn" + }; + button.Pressed += Respawn; + box.AddChild(button); + } + + private void SubmitUsername() + { + if (!GameManager.IsConnected()) return; + + var name = _usernameInput.Text.Trim(); + if (string.IsNullOrEmpty(name)) + { + name = ""; + } + + GameManager.Conn.Reducers.EnterGame(name); + ShowUsernameChooser(false); + } + + private void Respawn() + { + if (!GameManager.IsConnected()) return; + + GameManager.Conn.Reducers.Respawn(); + ShowDeathScreen(false); + } + + private void UpdateStatus() + { + var local = PlayerController.Local; + var mass = local?.TotalMass() ?? 0; + var circleCount = local?.NumberOfOwnedCircles ?? 0; + _massLabel.Text = $"Mass: {mass}"; + _circlesLabel.Text = $"Circles: {circleCount}"; + } + + private void UpdateLeaderboard() + { + var players = Instantiator.PlayerControllers.Values + .Select(player => (player, mass: player.TotalMass())) + .Where(entry => entry.mass > 0) + .OrderByDescending(entry => entry.mass) + .Take(10) + .ToList(); + + var localPlayer = PlayerController.Local; + if (localPlayer != null && localPlayer.NumberOfOwnedCircles > 0 && players.All(entry => entry.player != localPlayer)) + { + players.Add((localPlayer, localPlayer.TotalMass())); + } + + var rowIndex = 0; + for (; rowIndex < players.Count && rowIndex < _leaderboardRows.Count; rowIndex++) + { + var row = _leaderboardRows[rowIndex]; + var player = players[rowIndex].player; + var isLocal = player == localPlayer; + row.Root.Visible = true; + row.Rank.Text = $"{rowIndex + 1}."; + row.Username.Text = player.Username; + row.Mass.Text = players[rowIndex].mass.ToString(); + row.Username.AddThemeColorOverride("font_color", isLocal ? new Color(0.72f, 1.0f, 0.86f) : Colors.White); + } + + for (; rowIndex < _leaderboardRows.Count; rowIndex++) + { + _leaderboardRows[rowIndex].Root.Visible = false; + } + } + + private static Control CreateModalOverlay(string name) + { + var overlay = new ColorRect + { + Name = name, + Color = new Color(0.0f, 0.0f, 0.0f, 0.58f), + MouseFilter = Control.MouseFilterEnum.Stop + }; + overlay.SetAnchorsPreset(Control.LayoutPreset.FullRect); + return overlay; + } + + private static PanelContainer CreatePanel(string name, Color background) + { + var panel = new PanelContainer + { + Name = name, + MouseFilter = Control.MouseFilterEnum.Stop + }; + + var style = new StyleBoxFlat + { + BgColor = background, + BorderColor = new Color(0.25f, 0.46f, 0.72f, 0.55f), + ContentMarginLeft = 14, + ContentMarginTop = 12, + ContentMarginRight = 14, + ContentMarginBottom = 12 + }; + style.SetBorderWidthAll(1); + style.SetCornerRadiusAll(8); + panel.AddThemeStyleboxOverride("panel", style); + return panel; + } + + private static Label CreateLabel(string text, int fontSize, Color color) + { + var label = new Label + { + Text = text, + ClipText = true + }; + label.AddThemeFontSizeOverride("font_size", fontSize); + label.AddThemeColorOverride("font_color", color); + label.AddThemeColorOverride("font_shadow_color", new Color(0, 0, 0, 0.55f)); + label.AddThemeConstantOverride("shadow_offset_x", 1); + label.AddThemeConstantOverride("shadow_offset_y", 1); + return label; + } + + private readonly record struct LeaderboardRowControls( + HBoxContainer Root, + Label Rank, + Label Username, + Label Mass + ); +} diff --git a/demo/Blackholio/client-godot/HudController.cs.uid b/demo/Blackholio/client-godot/HudController.cs.uid new file mode 100644 index 00000000000..f3b71e44b21 --- /dev/null +++ b/demo/Blackholio/client-godot/HudController.cs.uid @@ -0,0 +1 @@ +uid://hbxe4cwg38rt diff --git a/demo/Blackholio/client-godot/Instantiator.cs b/demo/Blackholio/client-godot/Instantiator.cs index 682a0ed0500..eb2be07a30c 100644 --- a/demo/Blackholio/client-godot/Instantiator.cs +++ b/demo/Blackholio/client-godot/Instantiator.cs @@ -15,6 +15,7 @@ private DbConnection Conn if (_conn != null) { _conn.Db.Circle.OnInsert -= CircleOnInsert; + _conn.Db.ConsumeEntityEvent.OnInsert -= ConsumeEntityEventOnInsert; _conn.Db.Entity.OnUpdate -= EntityOnUpdate; _conn.Db.Entity.OnDelete -= EntityOnDelete; _conn.Db.Food.OnInsert -= FoodOnInsert; @@ -27,6 +28,7 @@ private DbConnection Conn if (value != null) { value.Db.Circle.OnInsert += CircleOnInsert; + value.Db.ConsumeEntityEvent.OnInsert += ConsumeEntityEventOnInsert; value.Db.Entity.OnUpdate += EntityOnUpdate; value.Db.Entity.OnDelete += EntityOnDelete; value.Db.Food.OnInsert += FoodOnInsert; @@ -38,9 +40,14 @@ private DbConnection Conn private static Dictionary Entities { get; } = new(); private static Dictionary Players { get; } = new(); + private static HashSet PendingConsumeAnimations { get; } = new(); + public static IReadOnlyDictionary PlayerControllers => Players; public Instantiator(DbConnection conn) { + Entities.Clear(); + Players.Clear(); + PendingConsumeAnimations.Clear(); Conn = conn; } @@ -69,10 +76,28 @@ private void EntityOnDelete(EventContext context, Entity oldEntity) { if (Entities.Remove(oldEntity.EntityId, out var entityController)) { + if (PendingConsumeAnimations.Remove(oldEntity.EntityId)) + { + entityController.OnConsumed(); + return; + } + entityController.OnDelete(); } } + private void ConsumeEntityEventOnInsert(EventContext context, ConsumeEntityEvent evt) + { + if (!Entities.TryGetValue(evt.ConsumedEntityId, out var consumedEntity) || + !Entities.TryGetValue(evt.ConsumerEntityId, out var consumerEntity)) + { + return; + } + + PendingConsumeAnimations.Add(evt.ConsumedEntityId); + consumedEntity.StartDespawn(consumerEntity); + } + private void FoodOnInsert(EventContext context, Food insertedValue) { var entityController = SpawnFood(insertedValue); diff --git a/demo/Blackholio/client-godot/PlayerController.cs b/demo/Blackholio/client-godot/PlayerController.cs index 6dd2b4d8566..de21322f2f2 100644 --- a/demo/Blackholio/client-godot/PlayerController.cs +++ b/demo/Blackholio/client-godot/PlayerController.cs @@ -16,8 +16,10 @@ public partial class PlayerController : Node private readonly List _ownedCircles = new(); private bool _lockInputTogglePressed; + private bool _splitPressed; + private bool _suicidePressed; - public string Username => GameManager.Conn.Db.Player.PlayerId.Find(_playerId).Name; + public string Username => GameManager.Conn.Db.Player.PlayerId.Find(_playerId)?.Name ?? ""; public int NumberOfOwnedCircles => _ownedCircles.Count; public bool IsLocalPlayer => this == Local; @@ -54,7 +56,10 @@ public void OnCircleSpawned(CircleController circle) public void OnCircleDeleted(CircleController deletedCircle) { - _ownedCircles.Remove(deletedCircle); + if (_ownedCircles.Remove(deletedCircle) && IsLocalPlayer && _ownedCircles.Count == 0) + { + HudController.Instance?.ShowDeathScreen(true); + } } public int TotalMass() => _ownedCircles @@ -93,6 +98,21 @@ public bool TryGetCenterOfMass(out Vector2 centerOfMass) public override void _Process(double delta) { if (!IsLocalPlayer || NumberOfOwnedCircles == 0 || !GameManager.IsConnected()) return; + if (GetViewport().GuiGetFocusOwner() is LineEdit) return; + + var splitPressed = Input.IsPhysicalKeyPressed(Key.Space); + if (splitPressed && !_splitPressed) + { + GameManager.Conn.Reducers.PlayerSplit(); + } + _splitPressed = splitPressed; + + var suicidePressed = Input.IsPhysicalKeyPressed(Key.S); + if (suicidePressed && !_suicidePressed) + { + GameManager.Conn.Reducers.Suicide(); + } + _suicidePressed = suicidePressed; var lockTogglePressed = Input.IsPhysicalKeyPressed(Key.Q); if (lockTogglePressed && !_lockInputTogglePressed) @@ -120,4 +140,4 @@ public override void _Process(double delta) GameManager.Conn.Reducers.UpdatePlayerInput(direction); } -} \ No newline at end of file +} diff --git a/demo/Blackholio/client-godot/StarfieldBackground.cs b/demo/Blackholio/client-godot/StarfieldBackground.cs new file mode 100644 index 00000000000..2541023c33f --- /dev/null +++ b/demo/Blackholio/client-godot/StarfieldBackground.cs @@ -0,0 +1,79 @@ +using System.Collections.Generic; +using Godot; + +public partial class StarfieldBackground : Node2D +{ + private readonly float _worldSize; + private readonly Color _backgroundColor; + private readonly List _stars = new(); + private float _time; + + public StarfieldBackground(float worldSize, Color backgroundColor) + { + _worldSize = worldSize; + _backgroundColor = backgroundColor; + Name = "Starfield"; + ZIndex = -1000; + GenerateStars(); + } + + public override void _Process(double delta) + { + _time += (float)delta; + QueueRedraw(); + } + + public override void _Draw() + { + DrawRect(new Rect2(Vector2.Zero, new Vector2(_worldSize, _worldSize)), _backgroundColor); + + DrawCircle(new Vector2(_worldSize * 0.22f, _worldSize * 0.68f), _worldSize * 0.18f, new Color(0.15f, 0.32f, 0.58f, 0.08f)); + DrawCircle(new Vector2(_worldSize * 0.76f, _worldSize * 0.24f), _worldSize * 0.22f, new Color(0.45f, 0.16f, 0.52f, 0.07f)); + DrawCircle(new Vector2(_worldSize * 0.54f, _worldSize * 0.55f), _worldSize * 0.26f, new Color(0.0f, 0.62f, 0.72f, 0.045f)); + + foreach (var star in _stars) + { + var pulse = 0.68f + 0.22f * Mathf.Sin(_time * star.TwinkleSpeed + star.Phase); + var color = WithAlpha(star.Color, star.Color.A * pulse); + DrawCircle(star.Position, star.Radius * (0.9f + pulse * 0.1f), color); + } + } + + private void GenerateStars() + { + var rng = new RandomNumberGenerator + { + Seed = 0xB1AC40E10 + }; + + var count = Mathf.RoundToInt(_worldSize * 0.55f); + for (var i = 0; i < count; i++) + { + var warmth = rng.RandfRange(0.0f, 1.0f); + _stars.Add(new Star + { + Position = new Vector2(rng.RandfRange(0, _worldSize), rng.RandfRange(0, _worldSize)), + Radius = rng.RandfRange(0.35f, 1.15f), + Phase = rng.RandfRange(0, Mathf.Tau), + TwinkleSpeed = rng.RandfRange(0.7f, 1.9f), + Color = new Color( + Mathf.Lerp(0.50f, 0.78f, warmth), + Mathf.Lerp(0.56f, 0.78f, warmth), + Mathf.Lerp(0.76f, 0.94f, warmth), + rng.RandfRange(0.16f, 0.42f) + ) + }); + } + } + + private static Color WithAlpha(Color color, float alpha) => new(color.R, color.G, color.B, alpha); + + private struct Star + { + public Vector2 Position; + public float Radius; + public float Phase; + public float TwinkleSpeed; + public Color Color; + } +} diff --git a/demo/Blackholio/client-godot/StarfieldBackground.cs.uid b/demo/Blackholio/client-godot/StarfieldBackground.cs.uid new file mode 100644 index 00000000000..5be96cb4981 --- /dev/null +++ b/demo/Blackholio/client-godot/StarfieldBackground.cs.uid @@ -0,0 +1 @@ +uid://c8t3gv7vf13wh diff --git a/demo/Blackholio/client-godot/module_bindings/Reducers/PlayerSplit.g.cs b/demo/Blackholio/client-godot/module_bindings/Reducers/PlayerSplit.g.cs new file mode 100644 index 00000000000..85b0502b6d6 --- /dev/null +++ b/demo/Blackholio/client-godot/module_bindings/Reducers/PlayerSplit.g.cs @@ -0,0 +1,53 @@ +// THIS FILE IS AUTOMATICALLY GENERATED BY SPACETIMEDB. EDITS TO THIS FILE +// WILL NOT BE SAVED. MODIFY TABLES IN YOUR MODULE SOURCE CODE INSTEAD. + +#nullable enable + +using System; +using SpacetimeDB.ClientApi; +using System.Collections.Generic; +using System.Runtime.Serialization; + +namespace SpacetimeDB.Types +{ + public sealed partial class RemoteReducers : RemoteBase + { + public delegate void PlayerSplitHandler(ReducerEventContext ctx); + public event PlayerSplitHandler? OnPlayerSplit; + + public void PlayerSplit() + { + conn.InternalCallReducer(new Reducer.PlayerSplit()); + } + + public bool InvokePlayerSplit(ReducerEventContext ctx, Reducer.PlayerSplit args) + { + if (OnPlayerSplit == null) + { + if (InternalOnUnhandledReducerError != null) + { + switch (ctx.Event.Status) + { + case Status.Failed(var reason): InternalOnUnhandledReducerError(ctx, new Exception(reason)); break; + case Status.OutOfEnergy(var _): InternalOnUnhandledReducerError(ctx, new Exception("out of energy")); break; + } + } + return false; + } + OnPlayerSplit( + ctx + ); + return true; + } + } + + public abstract partial class Reducer + { + [SpacetimeDB.Type] + [DataContract] + public sealed partial class PlayerSplit : Reducer, IReducerArgs + { + string IReducerArgs.ReducerName => "player_split"; + } + } +} diff --git a/demo/Blackholio/client-godot/module_bindings/Reducers/PlayerSplit.g.cs.uid b/demo/Blackholio/client-godot/module_bindings/Reducers/PlayerSplit.g.cs.uid new file mode 100644 index 00000000000..1b56832d264 --- /dev/null +++ b/demo/Blackholio/client-godot/module_bindings/Reducers/PlayerSplit.g.cs.uid @@ -0,0 +1 @@ +uid://dek0dhkjsoknv diff --git a/demo/Blackholio/client-godot/module_bindings/Reducers/Respawn.g.cs b/demo/Blackholio/client-godot/module_bindings/Reducers/Respawn.g.cs new file mode 100644 index 00000000000..44273b7c198 --- /dev/null +++ b/demo/Blackholio/client-godot/module_bindings/Reducers/Respawn.g.cs @@ -0,0 +1,53 @@ +// THIS FILE IS AUTOMATICALLY GENERATED BY SPACETIMEDB. EDITS TO THIS FILE +// WILL NOT BE SAVED. MODIFY TABLES IN YOUR MODULE SOURCE CODE INSTEAD. + +#nullable enable + +using System; +using SpacetimeDB.ClientApi; +using System.Collections.Generic; +using System.Runtime.Serialization; + +namespace SpacetimeDB.Types +{ + public sealed partial class RemoteReducers : RemoteBase + { + public delegate void RespawnHandler(ReducerEventContext ctx); + public event RespawnHandler? OnRespawn; + + public void Respawn() + { + conn.InternalCallReducer(new Reducer.Respawn()); + } + + public bool InvokeRespawn(ReducerEventContext ctx, Reducer.Respawn args) + { + if (OnRespawn == null) + { + if (InternalOnUnhandledReducerError != null) + { + switch (ctx.Event.Status) + { + case Status.Failed(var reason): InternalOnUnhandledReducerError(ctx, new Exception(reason)); break; + case Status.OutOfEnergy(var _): InternalOnUnhandledReducerError(ctx, new Exception("out of energy")); break; + } + } + return false; + } + OnRespawn( + ctx + ); + return true; + } + } + + public abstract partial class Reducer + { + [SpacetimeDB.Type] + [DataContract] + public sealed partial class Respawn : Reducer, IReducerArgs + { + string IReducerArgs.ReducerName => "respawn"; + } + } +} diff --git a/demo/Blackholio/client-godot/module_bindings/Reducers/Respawn.g.cs.uid b/demo/Blackholio/client-godot/module_bindings/Reducers/Respawn.g.cs.uid new file mode 100644 index 00000000000..c62572302f5 --- /dev/null +++ b/demo/Blackholio/client-godot/module_bindings/Reducers/Respawn.g.cs.uid @@ -0,0 +1 @@ +uid://csmdhwyqlohe2 diff --git a/demo/Blackholio/client-godot/module_bindings/Reducers/Suicide.g.cs b/demo/Blackholio/client-godot/module_bindings/Reducers/Suicide.g.cs new file mode 100644 index 00000000000..428d87e5d34 --- /dev/null +++ b/demo/Blackholio/client-godot/module_bindings/Reducers/Suicide.g.cs @@ -0,0 +1,53 @@ +// THIS FILE IS AUTOMATICALLY GENERATED BY SPACETIMEDB. EDITS TO THIS FILE +// WILL NOT BE SAVED. MODIFY TABLES IN YOUR MODULE SOURCE CODE INSTEAD. + +#nullable enable + +using System; +using SpacetimeDB.ClientApi; +using System.Collections.Generic; +using System.Runtime.Serialization; + +namespace SpacetimeDB.Types +{ + public sealed partial class RemoteReducers : RemoteBase + { + public delegate void SuicideHandler(ReducerEventContext ctx); + public event SuicideHandler? OnSuicide; + + public void Suicide() + { + conn.InternalCallReducer(new Reducer.Suicide()); + } + + public bool InvokeSuicide(ReducerEventContext ctx, Reducer.Suicide args) + { + if (OnSuicide == null) + { + if (InternalOnUnhandledReducerError != null) + { + switch (ctx.Event.Status) + { + case Status.Failed(var reason): InternalOnUnhandledReducerError(ctx, new Exception(reason)); break; + case Status.OutOfEnergy(var _): InternalOnUnhandledReducerError(ctx, new Exception("out of energy")); break; + } + } + return false; + } + OnSuicide( + ctx + ); + return true; + } + } + + public abstract partial class Reducer + { + [SpacetimeDB.Type] + [DataContract] + public sealed partial class Suicide : Reducer, IReducerArgs + { + string IReducerArgs.ReducerName => "suicide"; + } + } +} diff --git a/demo/Blackholio/client-godot/module_bindings/Reducers/Suicide.g.cs.uid b/demo/Blackholio/client-godot/module_bindings/Reducers/Suicide.g.cs.uid new file mode 100644 index 00000000000..e630560a7bd --- /dev/null +++ b/demo/Blackholio/client-godot/module_bindings/Reducers/Suicide.g.cs.uid @@ -0,0 +1 @@ +uid://chf5c54fymt0 diff --git a/demo/Blackholio/client-godot/module_bindings/SpacetimeDBClient.g.cs b/demo/Blackholio/client-godot/module_bindings/SpacetimeDBClient.g.cs index 8a49f001f5e..44743e2dfab 100644 --- a/demo/Blackholio/client-godot/module_bindings/SpacetimeDBClient.g.cs +++ b/demo/Blackholio/client-godot/module_bindings/SpacetimeDBClient.g.cs @@ -29,6 +29,7 @@ public RemoteTables(DbConnection conn) { AddTable(Circle = new(conn)); AddTable(Config = new(conn)); + AddTable(ConsumeEntityEvent = new(conn)); AddTable(Entity = new(conn)); AddTable(Food = new(conn)); AddTable(Player = new(conn)); @@ -530,6 +531,7 @@ public sealed class QueryBuilder { new QueryBuilder().From.Circle().ToSql(), new QueryBuilder().From.Config().ToSql(), + new QueryBuilder().From.ConsumeEntityEvent().ToSql(), new QueryBuilder().From.Entity().ToSql(), new QueryBuilder().From.Food().ToSql(), new QueryBuilder().From.Player().ToSql(), @@ -541,6 +543,7 @@ public sealed class From { public global::SpacetimeDB.Table Circle() => new("circle", new CircleCols("circle"), new CircleIxCols("circle")); public global::SpacetimeDB.Table Config() => new("config", new ConfigCols("config"), new ConfigIxCols("config")); + public global::SpacetimeDB.Table ConsumeEntityEvent() => new("consume_entity_event", new ConsumeEntityEventCols("consume_entity_event"), new ConsumeEntityEventIxCols("consume_entity_event")); public global::SpacetimeDB.Table Entity() => new("entity", new EntityCols("entity"), new EntityIxCols("entity")); public global::SpacetimeDB.Table Food() => new("food", new FoodCols("food"), new FoodIxCols("food")); public global::SpacetimeDB.Table Player() => new("player", new PlayerCols("player"), new PlayerIxCols("player")); @@ -626,6 +629,9 @@ protected override bool Dispatch(IReducerEventContext context, Reducer reducer) return reducer switch { Reducer.EnterGame args => Reducers.InvokeEnterGame(eventContext, args), + Reducer.PlayerSplit args => Reducers.InvokePlayerSplit(eventContext, args), + Reducer.Respawn args => Reducers.InvokeRespawn(eventContext, args), + Reducer.Suicide args => Reducers.InvokeSuicide(eventContext, args), Reducer.UpdatePlayerInput args => Reducers.InvokeUpdatePlayerInput(eventContext, args), _ => throw new ArgumentOutOfRangeException("Reducer", $"Unknown reducer {reducer}") }; diff --git a/demo/Blackholio/client-godot/module_bindings/Tables/ConsumeEntityEvent.g.cs b/demo/Blackholio/client-godot/module_bindings/Tables/ConsumeEntityEvent.g.cs new file mode 100644 index 00000000000..3bd52a92934 --- /dev/null +++ b/demo/Blackholio/client-godot/module_bindings/Tables/ConsumeEntityEvent.g.cs @@ -0,0 +1,47 @@ +// THIS FILE IS AUTOMATICALLY GENERATED BY SPACETIMEDB. EDITS TO THIS FILE +// WILL NOT BE SAVED. MODIFY TABLES IN YOUR MODULE SOURCE CODE INSTEAD. + +#nullable enable + +using System; +using SpacetimeDB.BSATN; +using SpacetimeDB.ClientApi; +using System.Collections.Generic; +using System.Runtime.Serialization; + +namespace SpacetimeDB.Types +{ + public sealed partial class RemoteTables + { + public sealed class ConsumeEntityEventHandle : RemoteEventTableHandle + { + protected override string RemoteTableName => "consume_entity_event"; + + internal ConsumeEntityEventHandle(DbConnection conn) : base(conn) + { + } + } + + public readonly ConsumeEntityEventHandle ConsumeEntityEvent; + } + + public sealed class ConsumeEntityEventCols + { + public global::SpacetimeDB.Col ConsumedEntityId { get; } + public global::SpacetimeDB.Col ConsumerEntityId { get; } + + public ConsumeEntityEventCols(string tableName) + { + ConsumedEntityId = new global::SpacetimeDB.Col(tableName, "consumed_entity_id"); + ConsumerEntityId = new global::SpacetimeDB.Col(tableName, "consumer_entity_id"); + } + } + + public sealed class ConsumeEntityEventIxCols + { + + public ConsumeEntityEventIxCols(string tableName) + { + } + } +} diff --git a/demo/Blackholio/client-godot/module_bindings/Tables/ConsumeEntityEvent.g.cs.uid b/demo/Blackholio/client-godot/module_bindings/Tables/ConsumeEntityEvent.g.cs.uid new file mode 100644 index 00000000000..492bd7d79f8 --- /dev/null +++ b/demo/Blackholio/client-godot/module_bindings/Tables/ConsumeEntityEvent.g.cs.uid @@ -0,0 +1 @@ +uid://5ic37n1ymqht diff --git a/demo/Blackholio/client-godot/module_bindings/Types/CircleDecayTimer.g.cs b/demo/Blackholio/client-godot/module_bindings/Types/CircleDecayTimer.g.cs new file mode 100644 index 00000000000..922691cdbee --- /dev/null +++ b/demo/Blackholio/client-godot/module_bindings/Types/CircleDecayTimer.g.cs @@ -0,0 +1,35 @@ +// THIS FILE IS AUTOMATICALLY GENERATED BY SPACETIMEDB. EDITS TO THIS FILE +// WILL NOT BE SAVED. MODIFY TABLES IN YOUR MODULE SOURCE CODE INSTEAD. + +#nullable enable + +using System; +using System.Collections.Generic; +using System.Runtime.Serialization; + +namespace SpacetimeDB.Types +{ + [SpacetimeDB.Type] + [DataContract] + public sealed partial class CircleDecayTimer + { + [DataMember(Name = "scheduled_id")] + public ulong ScheduledId; + [DataMember(Name = "scheduled_at")] + public SpacetimeDB.ScheduleAt ScheduledAt; + + public CircleDecayTimer( + ulong ScheduledId, + SpacetimeDB.ScheduleAt ScheduledAt + ) + { + this.ScheduledId = ScheduledId; + this.ScheduledAt = ScheduledAt; + } + + public CircleDecayTimer() + { + this.ScheduledAt = null!; + } + } +} diff --git a/demo/Blackholio/client-godot/module_bindings/Types/CircleDecayTimer.g.cs.uid b/demo/Blackholio/client-godot/module_bindings/Types/CircleDecayTimer.g.cs.uid new file mode 100644 index 00000000000..43be02aca1a --- /dev/null +++ b/demo/Blackholio/client-godot/module_bindings/Types/CircleDecayTimer.g.cs.uid @@ -0,0 +1 @@ +uid://vsnqo4opsvx diff --git a/demo/Blackholio/client-godot/module_bindings/Types/CircleRecombineTimer.g.cs b/demo/Blackholio/client-godot/module_bindings/Types/CircleRecombineTimer.g.cs new file mode 100644 index 00000000000..92676f91569 --- /dev/null +++ b/demo/Blackholio/client-godot/module_bindings/Types/CircleRecombineTimer.g.cs @@ -0,0 +1,39 @@ +// THIS FILE IS AUTOMATICALLY GENERATED BY SPACETIMEDB. EDITS TO THIS FILE +// WILL NOT BE SAVED. MODIFY TABLES IN YOUR MODULE SOURCE CODE INSTEAD. + +#nullable enable + +using System; +using System.Collections.Generic; +using System.Runtime.Serialization; + +namespace SpacetimeDB.Types +{ + [SpacetimeDB.Type] + [DataContract] + public sealed partial class CircleRecombineTimer + { + [DataMember(Name = "scheduled_id")] + public ulong ScheduledId; + [DataMember(Name = "scheduled_at")] + public SpacetimeDB.ScheduleAt ScheduledAt; + [DataMember(Name = "player_id")] + public int PlayerId; + + public CircleRecombineTimer( + ulong ScheduledId, + SpacetimeDB.ScheduleAt ScheduledAt, + int PlayerId + ) + { + this.ScheduledId = ScheduledId; + this.ScheduledAt = ScheduledAt; + this.PlayerId = PlayerId; + } + + public CircleRecombineTimer() + { + this.ScheduledAt = null!; + } + } +} diff --git a/demo/Blackholio/client-godot/module_bindings/Types/CircleRecombineTimer.g.cs.uid b/demo/Blackholio/client-godot/module_bindings/Types/CircleRecombineTimer.g.cs.uid new file mode 100644 index 00000000000..c27b26ee658 --- /dev/null +++ b/demo/Blackholio/client-godot/module_bindings/Types/CircleRecombineTimer.g.cs.uid @@ -0,0 +1 @@ +uid://cotoq33ukm1ux diff --git a/demo/Blackholio/client-godot/module_bindings/Types/ConsumeEntityEvent.g.cs b/demo/Blackholio/client-godot/module_bindings/Types/ConsumeEntityEvent.g.cs new file mode 100644 index 00000000000..66a958137b3 --- /dev/null +++ b/demo/Blackholio/client-godot/module_bindings/Types/ConsumeEntityEvent.g.cs @@ -0,0 +1,34 @@ +// THIS FILE IS AUTOMATICALLY GENERATED BY SPACETIMEDB. EDITS TO THIS FILE +// WILL NOT BE SAVED. MODIFY TABLES IN YOUR MODULE SOURCE CODE INSTEAD. + +#nullable enable + +using System; +using System.Collections.Generic; +using System.Runtime.Serialization; + +namespace SpacetimeDB.Types +{ + [SpacetimeDB.Type] + [DataContract] + public sealed partial class ConsumeEntityEvent + { + [DataMember(Name = "consumed_entity_id")] + public int ConsumedEntityId; + [DataMember(Name = "consumer_entity_id")] + public int ConsumerEntityId; + + public ConsumeEntityEvent( + int ConsumedEntityId, + int ConsumerEntityId + ) + { + this.ConsumedEntityId = ConsumedEntityId; + this.ConsumerEntityId = ConsumerEntityId; + } + + public ConsumeEntityEvent() + { + } + } +} diff --git a/demo/Blackholio/client-godot/module_bindings/Types/ConsumeEntityEvent.g.cs.uid b/demo/Blackholio/client-godot/module_bindings/Types/ConsumeEntityEvent.g.cs.uid new file mode 100644 index 00000000000..38a98a0b07c --- /dev/null +++ b/demo/Blackholio/client-godot/module_bindings/Types/ConsumeEntityEvent.g.cs.uid @@ -0,0 +1 @@ +uid://xajrcx3rcisc diff --git a/demo/Blackholio/client-godot/module_bindings/Types/ConsumeEntityTimer.g.cs b/demo/Blackholio/client-godot/module_bindings/Types/ConsumeEntityTimer.g.cs new file mode 100644 index 00000000000..fc715f9fa7e --- /dev/null +++ b/demo/Blackholio/client-godot/module_bindings/Types/ConsumeEntityTimer.g.cs @@ -0,0 +1,43 @@ +// THIS FILE IS AUTOMATICALLY GENERATED BY SPACETIMEDB. EDITS TO THIS FILE +// WILL NOT BE SAVED. MODIFY TABLES IN YOUR MODULE SOURCE CODE INSTEAD. + +#nullable enable + +using System; +using System.Collections.Generic; +using System.Runtime.Serialization; + +namespace SpacetimeDB.Types +{ + [SpacetimeDB.Type] + [DataContract] + public sealed partial class ConsumeEntityTimer + { + [DataMember(Name = "scheduled_id")] + public ulong ScheduledId; + [DataMember(Name = "scheduled_at")] + public SpacetimeDB.ScheduleAt ScheduledAt; + [DataMember(Name = "consumed_entity_id")] + public int ConsumedEntityId; + [DataMember(Name = "consumer_entity_id")] + public int ConsumerEntityId; + + public ConsumeEntityTimer( + ulong ScheduledId, + SpacetimeDB.ScheduleAt ScheduledAt, + int ConsumedEntityId, + int ConsumerEntityId + ) + { + this.ScheduledId = ScheduledId; + this.ScheduledAt = ScheduledAt; + this.ConsumedEntityId = ConsumedEntityId; + this.ConsumerEntityId = ConsumerEntityId; + } + + public ConsumeEntityTimer() + { + this.ScheduledAt = null!; + } + } +} diff --git a/demo/Blackholio/client-godot/module_bindings/Types/ConsumeEntityTimer.g.cs.uid b/demo/Blackholio/client-godot/module_bindings/Types/ConsumeEntityTimer.g.cs.uid new file mode 100644 index 00000000000..044f917b041 --- /dev/null +++ b/demo/Blackholio/client-godot/module_bindings/Types/ConsumeEntityTimer.g.cs.uid @@ -0,0 +1 @@ +uid://dc825ue1mwoy5 From 74ac206b5538dba7ba2f4a2ec8dd98df5f49b617 Mon Sep 17 00:00:00 2001 From: Lisandro Crespo Date: Tue, 5 May 2026 13:23:33 -0500 Subject: [PATCH 02/12] Add last comment to tutorial --- .../00300-tutorials/00500-godot-tutorial/00500-part-4.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/docs/docs/00100-intro/00300-tutorials/00500-godot-tutorial/00500-part-4.md b/docs/docs/00100-intro/00300-tutorials/00500-godot-tutorial/00500-part-4.md index 5eb10c86987..71eff102a9c 100644 --- a/docs/docs/00100-intro/00300-tutorials/00500-godot-tutorial/00500-part-4.md +++ b/docs/docs/00100-intro/00300-tutorials/00500-godot-tutorial/00500-part-4.md @@ -896,4 +896,8 @@ There's still plenty more we can do to build this into a proper game though. For - Space theme! - Object Pooling (for FoodController, PlayerController and CircleController) +Fortunately, we've done that for you! If you'd like to check out the completed tutorial game, with most of these additional features, you can download it on GitHub: + +[https://github.com/clockworklabs/SpacetimeDB/tree/master/demo/Blackholio](https://github.com/clockworklabs/SpacetimeDB/tree/master/demo/Blackholio) + If you have any suggestions or comments on the tutorial, either [open an issue](https://github.com/clockworklabs/SpacetimeDB/issues/new), or join our Discord ([https://discord.gg/SpacetimeDB](https://discord.gg/SpacetimeDB)) and chat with us! From e8113961f46dde9994d2b81b7f6936bf05a34ad1 Mon Sep 17 00:00:00 2001 From: Lisandro Crespo Date: Tue, 5 May 2026 13:24:21 -0500 Subject: [PATCH 03/12] Small change to last message in Unity's tutorial --- .../00300-tutorials/00300-unity-tutorial/00500-part-4.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/docs/docs/00100-intro/00300-tutorials/00300-unity-tutorial/00500-part-4.md b/docs/docs/00100-intro/00300-tutorials/00300-unity-tutorial/00500-part-4.md index c7873407f34..bfc58fc0ded 100644 --- a/docs/docs/00100-intro/00300-tutorials/00300-unity-tutorial/00500-part-4.md +++ b/docs/docs/00100-intro/00300-tutorials/00300-unity-tutorial/00500-part-4.md @@ -928,8 +928,9 @@ There's still plenty more we can do to build this into a proper game though. For - Nice animations - Nice shaders - Space theme! +- Object Pooling (for FoodController, PlayerController and CircleController) -Fortunately, we've done that for you! If you'd like to check out the completed tutorial game, with these additional features, you can download it on GitHub: +Fortunately, we've done that for you! If you'd like to check out the completed tutorial game, with most of these additional features, you can download it on GitHub: [https://github.com/clockworklabs/SpacetimeDB/tree/master/demo/Blackholio](https://github.com/clockworklabs/SpacetimeDB/tree/master/demo/Blackholio) From 5943271aba27142a8a2c3764a2dd181ad830f047 Mon Sep 17 00:00:00 2001 From: Lisandro Crespo Date: Tue, 5 May 2026 13:28:51 -0500 Subject: [PATCH 04/12] Update final result image --- .../static/images/godot/part-1-hero-image.png | Bin 357247 -> 49016 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/docs/static/images/godot/part-1-hero-image.png b/docs/static/images/godot/part-1-hero-image.png index b37d9690bfb1823a26b8db35cac03591ae7ddad0..952d89468a02040da72d817f1fdd78a7878d8a86 100644 GIT binary patch literal 49016 zcmY&=by!q=wDqC8yF<_skWvH$9XdoxKyv6tI;9!9Q$Q5yMpC*PMG5Kdj-h18;U3@n z-9Ns0<~&0^Cw{T_+H0>xq?(F65k5UW002aa3Nmj205cE(&?9iM!JpuA2N8iEm}ZL7 zYG_0N+7}x!LGXJt*SGRgK*ccQE siZYU#USAFtJ$*GcQ8>pVbc*B8GQW>@Efs5O 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≫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 uk78UxZLU73d!6i6BLvRlc!QGwU65QeS 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 From c360b6505bf0a3a4e99982651c5cad4050002db6 Mon Sep 17 00:00:00 2001 From: Lisandro Crespo Date: Thu, 14 May 2026 15:00:34 -0500 Subject: [PATCH 05/12] Add tests --- .github/workflows/ci.yml | 136 ++++++++ demo/Blackholio/client-godot/HudController.cs | 8 + .../client-godot/PlayerController.cs | 11 +- .../client-godot/tests/GodotPlayModeTests.cs | 294 ++++++++++++++++++ .../tests/GodotPlayModeTests.cs.uid | 1 + .../tests/GodotPlayModeTests.tscn | 6 + demo/Blackholio/server-csharp/generate.bat | 1 + demo/Blackholio/server-csharp/generate.sh | 1 + demo/Blackholio/server-rust/generate.bat | 1 + demo/Blackholio/server-rust/generate.sh | 1 + sdks/csharp/src/STDBUpdateManager.cs | 12 +- 11 files changed, 463 insertions(+), 9 deletions(-) create mode 100644 demo/Blackholio/client-godot/tests/GodotPlayModeTests.cs create mode 100644 demo/Blackholio/client-godot/tests/GodotPlayModeTests.cs.uid create mode 100644 demo/Blackholio/client-godot/tests/GodotPlayModeTests.tscn diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 5e6dc2f7fe0..d01d232c3c1 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -703,6 +703,142 @@ jobs: UNITY_PASSWORD: ${{ secrets.UNITY_PASSWORD }} UNITY_SERIAL: ${{ secrets.UNITY_SERIAL }} + godot-testsuite: + needs: [lints] + permissions: + contents: read + runs-on: spacetimedb-new-runner-2 + timeout-minutes: 30 + env: + CARGO_TARGET_DIR: ${{ github.workspace }}/target + steps: + - name: Checkout repository + id: checkout-stdb + uses: actions/checkout@v4 + + # Run cheap .NET setup first. If that fails, no need to run expensive Godot tests. + + - name: Setup dotnet + uses: actions/setup-dotnet@v3 + with: + global-json-file: global.json + + - name: Override NuGet packages + run: | + dotnet pack crates/bindings-csharp/BSATN.Runtime + dotnet pack crates/bindings-csharp/Runtime + + # Write out the nuget config file to `nuget.config`. This causes the spacetimedb-csharp-sdk repository + # to be aware of the local versions of the `bindings-csharp` packages in SpacetimeDB, and use them if + # available. Otherwise, `spacetimedb-csharp-sdk` will use the NuGet versions of the packages. + # This means that (if version numbers match) we will test the local versions of the C# packages, even + # if they're not pushed to NuGet. + # See https://learn.microsoft.com/en-us/nuget/reference/nuget-config-file for more info on the config file. + cd sdks/csharp + ./tools~/write-nuget-config.sh ../.. + + - name: Restore .NET solution + working-directory: sdks/csharp + run: dotnet restore --configfile NuGet.Config SpacetimeDB.ClientSDK.sln + + # Now, setup the Godot tests. + - name: Patch spacetimedb dependency in Cargo.toml + working-directory: demo/Blackholio/server-rust + run: | + sed -i "s|spacetimedb *=.*|spacetimedb = \{ path = \"../../../crates/bindings\" \}|" Cargo.toml + cat Cargo.toml + + - name: Install Rust toolchain + uses: dsherret/rust-toolchain-file@v1 + - name: Set default rust toolchain + run: rustup default $(rustup show active-toolchain | cut -d' ' -f1) + + - name: Cache Rust dependencies + uses: Swatinem/rust-cache@v2 + with: + workspaces: ${{ github.workspace }} + shared-key: spacetimedb + # Let the main CI job save the cache since it builds the most things + save-if: false + prefix-key: v1 + + # This step shouldn't be needed, but somehow we end up with caches that are missing librusty_v8.a. + # ChatGPT suspects that this could be due to different build invocations using the same target dir, + # and this makes sense to me because we only see it in this job where we mix `cargo build -p` with + # `cargo build --manifest-path` (which apparently build different dependency trees). + # However, we've been unable to fix it so... /shrug + - name: Check v8 outputs + run: | + find "${CARGO_TARGET_DIR}"/ -type f | grep '[/_]v8' || true + if ! [ -f "${CARGO_TARGET_DIR}"/release/gn_out/obj/librusty_v8.a ]; then + echo "Could not find v8 output file librusty_v8.a; rebuilding manually." + cargo clean --release -p v8 || true + cargo build --release -p v8 + fi + + - name: Install SpacetimeDB CLI from the local checkout + run: | + export CARGO_HOME="$HOME/.cargo" + echo "$CARGO_HOME/bin" >> "$GITHUB_PATH" + cargo install --force --path crates/cli --locked --message-format=short + cargo install --force --path crates/standalone --locked --message-format=short + # Add a handy alias using the old binary name, so that we don't have to rewrite all scripts (incl. in submodules). + ln -sf $CARGO_HOME/bin/spacetimedb-cli $CARGO_HOME/bin/spacetime + + - name: Generate client bindings + working-directory: demo/Blackholio/server-rust + run: bash ./generate.sh -y + + - name: Check Unity bindings for changes + run: | + tools/check-diff.sh demo/Blackholio/client-unity/Assets/Scripts/autogen || { + echo 'Error: Unity bindings are dirty. Please run `demo/Blackholio/server-rust/generate.sh`.' + exit 1 + } + + - name: Check Godot bindings for changes + run: | + tools/check-diff.sh demo/Blackholio/client-godot/module_bindings || { + echo 'Error: Godot bindings are dirty. Please run `demo/Blackholio/server-rust/generate.sh`.' + exit 1 + } + + - name: Patch SpacetimeDB Godot SDK dependency + working-directory: demo/Blackholio/client-godot + run: | + dotnet remove package SpacetimeDB.ClientSDK.Godot + dotnet add reference ../../../sdks/csharp/SpacetimeDB.ClientSDK.Godot.csproj + cat blackholio.csproj + + - name: Setup Godot + uses: chickensoft-games/setup-godot@v2 + with: + version: 4.6.2 + use-dotnet: true + + - uses: actions/cache@v3 + with: + path: demo/Blackholio/client-godot/.godot + key: Godot-${{ github.head_ref }} + restore-keys: Godot- + + - name: Build Godot project + run: godot --headless --path demo/Blackholio/client-godot --build-solutions --quit + + - name: Start SpacetimeDB + run: | + spacetime start & + disown + + - name: Publish godot-tests module to SpacetimeDB + working-directory: demo/Blackholio/server-rust + run: | + spacetime logout && spacetime login --server-issued-login local + bash ./publish.sh + + - name: Run Godot tests + run: godot --headless --path demo/Blackholio/client-godot --scene res://tests/GodotPlayModeTests.tscn + csharp-testsuite: needs: [lints] runs-on: spacetimedb-new-runner-2 diff --git a/demo/Blackholio/client-godot/HudController.cs b/demo/Blackholio/client-godot/HudController.cs index aaad1e41914..6150fcab441 100644 --- a/demo/Blackholio/client-godot/HudController.cs +++ b/demo/Blackholio/client-godot/HudController.cs @@ -79,6 +79,14 @@ public void ShowDeathScreen(bool visible) _deathOverlay.Visible = visible; } + public void SubmitUsernameForTests(string username) + { + if (_usernameInput == null) return; + + _usernameInput.Text = username; + SubmitUsername(); + } + private void BuildStatusPanel(Control root) { var panel = CreatePanel("StatusPanel", new Color(0.025f, 0.035f, 0.07f, 0.78f)); diff --git a/demo/Blackholio/client-godot/PlayerController.cs b/demo/Blackholio/client-godot/PlayerController.cs index de21322f2f2..890de173c1c 100644 --- a/demo/Blackholio/client-godot/PlayerController.cs +++ b/demo/Blackholio/client-godot/PlayerController.cs @@ -18,6 +18,8 @@ public partial class PlayerController : Node private bool _lockInputTogglePressed; private bool _splitPressed; private bool _suicidePressed; + private bool _testInputEnabled; + private Vector2 _testInput; public string Username => GameManager.Conn.Db.Player.PlayerId.Find(_playerId)?.Name ?? ""; public int NumberOfOwnedCircles => _ownedCircles.Count; @@ -98,7 +100,7 @@ public bool TryGetCenterOfMass(out Vector2 centerOfMass) public override void _Process(double delta) { if (!IsLocalPlayer || NumberOfOwnedCircles == 0 || !GameManager.IsConnected()) return; - if (GetViewport().GuiGetFocusOwner() is LineEdit) return; + if (!_testInputEnabled && GetViewport().GuiGetFocusOwner() is LineEdit) return; var splitPressed = Input.IsPhysicalKeyPressed(Key.Space); if (splitPressed && !_splitPressed) @@ -136,8 +138,13 @@ public override void _Process(double delta) var mousePosition = _lockInputPosition ?? GetViewport().GetMousePosition(); var screenSize = GetViewport().GetVisibleRect().Size; var centerOfScreen = screenSize / 2.0f; - var direction = (mousePosition - centerOfScreen) / (screenSize.Y / 3.0f); + var direction = _testInputEnabled + ? _testInput + : (mousePosition - centerOfScreen) / (screenSize.Y / 3.0f); GameManager.Conn.Reducers.UpdatePlayerInput(direction); } + + public void SetTestInput(Vector2 input) => _testInput = input; + public void EnableTestInput() => _testInputEnabled = true; } diff --git a/demo/Blackholio/client-godot/tests/GodotPlayModeTests.cs b/demo/Blackholio/client-godot/tests/GodotPlayModeTests.cs new file mode 100644 index 00000000000..c197b5214b2 --- /dev/null +++ b/demo/Blackholio/client-godot/tests/GodotPlayModeTests.cs @@ -0,0 +1,294 @@ +using System; +using System.Linq; +using System.Threading.Tasks; +using Godot; +using SpacetimeDB; +using SpacetimeDB.Types; + +public partial class GodotPlayModeTests : Node +{ + private const string ServerUrl = "http://127.0.0.1:3000"; + private const string DatabaseName = "blackholio"; + private const string DefaultPlayerName = "3Blave"; + + public override async void _Ready() + { + await ToSignal(GetTree(), SceneTree.SignalName.ProcessFrame); + + var failures = 0; + failures += await RunTest(nameof(SimpleConnectionTest), SimpleConnectionTest); + failures += await RunTest(nameof(CreatePlayerAndTestDecay), CreatePlayerAndTestDecay); + failures += await RunTest(nameof(OneOffQueryTest), OneOffQueryTest); + failures += await RunTest(nameof(ReconnectionViaReloadingScene), ReconnectionViaReloadingScene); + + GetTree().Quit(failures == 0 ? 0 : 1); + } + + private async Task RunTest(string name, Func test) + { + GD.Print($"[GodotTests] START {name}"); + try + { + await test(); + GD.Print($"[GodotTests] PASS {name}"); + return 0; + } + catch (Exception ex) + { + GD.PrintErr($"[GodotTests] FAIL {name}: {ex}"); + return 1; + } + finally + { + await UnloadMainScene(); + } + } + + private async Task SimpleConnectionTest() + { + var connected = false; + Exception connectError = null; + var conn = DbConnection.Builder() + .OnConnect((_, _, _) => connected = true) + .OnConnectError(ex => connectError = ex) + .WithUri(ServerUrl) + .WithDatabaseName(DatabaseName) + .Build(); + + STDBUpdateManager.Add(conn); + try + { + await WaitUntil(() => connected || connectError != null, "Connection did not complete."); + Assert(connectError == null, $"Connection failed: {connectError}"); + Assert(connected, "Connection callback did not run."); + } + finally + { + STDBUpdateManager.Remove(conn, true); + } + } + + private async Task CreatePlayerAndTestDecay() + { + ClearSavedAuthToken(); + await LoadMainScene(); + await WaitForLocalPlayer(); + + var player = FindLocalPlayer(); + var circle = FindPlayerCircle(player.PlayerId); + Assert(circle != null, "Local player circle was not created."); + + var foodEaten = 0; + GameManager.Conn.Db.Food.OnDelete += (_, _) => foodEaten++; + + PlayerController.Local.EnableTestInput(); + await WaitUntil(() => + { + SteerTowardNearestFood(circle, foodEaten); + return foodEaten >= 50; + }, "Player did not eat enough food.", timeoutSeconds: 60); + + PlayerController.Local.SetTestInput(Vector2.Zero); + var massStart = GameManager.Conn.Db.Entity.EntityId.Find(circle.EntityId).Mass; + await WaitSeconds(10); + var massEnd = GameManager.Conn.Db.Entity.EntityId.Find(circle.EntityId).Mass; + Assert(massEnd < massStart, $"Mass should decay. start={massStart}, end={massEnd}"); + } + + private async Task OneOffQueryTest() + { + ClearSavedAuthToken(); + await LoadMainScene(); + await WaitForLocalPlayer(); + + var task = GameManager.Conn.Db.Player.RemoteQuery($"WHERE identity=0x{GameManager.LocalIdentity}"); + Task.Run(() => task.RunSynchronously()); + await WaitUntil(() => task.IsCompleted, "One-off query did not complete."); + + var players = task.Result; + Assert(players.Length == 1, $"Expected one player, found {players.Length}."); + Assert(players[0].Name == DefaultPlayerName, $"Expected username {DefaultPlayerName}, found {players[0].Name}."); + } + + private async Task ReconnectionViaReloadingScene() + { + ClearSavedAuthToken(); + await LoadMainScene(); + await WaitForLocalPlayer(); + + var player = FindLocalPlayer(); + var circle = FindPlayerCircle(player.PlayerId); + Assert(circle != null, "Local player circle was not created before reconnect."); + + await UnloadMainScene(); + + await LoadMainScene(clearAuthToken: false); + await WaitForLocalPlayer(); + + var newPlayer = FindLocalPlayer(); + var newCircle = FindPlayerCircle(newPlayer.PlayerId); + Assert(newCircle != null, "Local player circle was not restored after reconnect."); + Assert(player.PlayerId == newPlayer.PlayerId, "Player ids should match after reconnect."); + Assert(circle.EntityId == newCircle.EntityId, "Circle entity ids should match after reconnect."); + } + + private async Task LoadMainScene(bool clearAuthToken = true) + { + if (clearAuthToken) + { + ClearSavedAuthToken(); + } + + var connected = false; + var subscribed = false; + void OnConnected() => connected = true; + void OnSubscriptionApplied() => subscribed = true; + + GameManager.OnConnected += OnConnected; + GameManager.OnSubscriptionApplied += OnSubscriptionApplied; + + var scene = GD.Load("res://main.tscn"); + AddChild(scene.Instantiate()); + + try + { + await WaitUntil(() => connected, "GameManager did not connect."); + await WaitUntil(() => subscribed, "GameManager subscription did not apply."); + SubmitUsernameIfNeeded(); + } + finally + { + GameManager.OnConnected -= OnConnected; + GameManager.OnSubscriptionApplied -= OnSubscriptionApplied; + } + } + + private async Task UnloadMainScene() + { + var main = GetNodeOrNull("Main"); + if (main != null) + { + main.QueueFree(); + await NextFrame(); + } + + if (GameManager.Conn != null) + { + await WaitUntil(() => GameManager.Conn == null || !GameManager.IsConnected(), "GameManager did not disconnect.", timeoutSeconds: 5); + } + } + + private async Task WaitForLocalPlayer() + { + await WaitUntil(() => + { + if (GameManager.Conn == null || GameManager.LocalIdentity == default) + { + return false; + } + + var player = GameManager.Conn.Db.Player.Identity.Find(GameManager.LocalIdentity); + return player != null + && !string.IsNullOrEmpty(player.Name) + && FindPlayerCircle(player.PlayerId) != null + && PlayerController.Local != null; + }, "Local player was not ready."); + } + + private static void SubmitUsernameIfNeeded() + { + var player = GameManager.Conn?.Db.Player.Identity.Find(GameManager.LocalIdentity); + if (player == null || string.IsNullOrEmpty(player.Name)) + { + HudController.Instance?.SubmitUsernameForTests(DefaultPlayerName); + } + } + + private static Player FindLocalPlayer() => GameManager.Conn.Db.Player.Identity.Find(GameManager.LocalIdentity); + + private static Circle FindPlayerCircle(int playerId) => + GameManager.Conn.Db.Circle.PlayerId.Filter(playerId).FirstOrDefault(); + + private static void SteerTowardNearestFood(Circle circle, int foodEaten) + { + var ourEntity = GameManager.Conn.Db.Entity.EntityId.Find(circle.EntityId); + Assert(ourEntity != null, "Local circle entity was not found."); + + var toChosenFood = new Vector2(1000, 0); + var chosenFoodId = 0; + foreach (var food in GameManager.Conn.Db.Food.Iter()) + { + var foodEntity = GameManager.Conn.Db.Entity.EntityId.Find(food.EntityId); + if (foodEntity == null) + { + continue; + } + + var toThisFood = (Vector2)foodEntity.Position - (Vector2)ourEntity.Position; + if (toThisFood.LengthSquared() == 0.0f) + { + continue; + } + + if (toChosenFood.LengthSquared() > toThisFood.LengthSquared()) + { + chosenFoodId = food.EntityId; + toChosenFood = toThisFood; + } + } + + if (chosenFoodId == 0 || GameManager.Conn.Db.Entity.EntityId.Find(chosenFoodId) == null) + { + PlayerController.Local.SetTestInput(Vector2.Zero); + return; + } + + var foodTarget = GameManager.Conn.Db.Entity.EntityId.Find(chosenFoodId); + var currentEntity = GameManager.Conn.Db.Entity.EntityId.Find(circle.EntityId); + Assert(foodTarget != null, "Chosen food entity was not found."); + Assert(currentEntity != null, "Local circle entity was not found."); + + var direction = (Vector2)foodTarget.Position - (Vector2)currentEntity.Position; + if (foodEaten < 10) + { + direction = direction.Normalized() * 0.5f; + } + + PlayerController.Local.SetTestInput(direction); + } + + private async Task WaitUntil(Func predicate, string message, double timeoutSeconds = 30) + { + var deadline = Time.GetTicksMsec() + (ulong)(timeoutSeconds * 1000); + while (!predicate()) + { + if (Time.GetTicksMsec() >= deadline) + { + throw new TimeoutException(message); + } + + await NextFrame(); + } + } + + private async Task WaitSeconds(double seconds) + { + var deadline = Time.GetTicksMsec() + (ulong)(seconds * 1000); + while (Time.GetTicksMsec() < deadline) + { + await NextFrame(); + } + } + + private async Task NextFrame() => await ToSignal(GetTree(), SceneTree.SignalName.ProcessFrame); + + private static void ClearSavedAuthToken() => AuthToken.SaveToken(""); + + private static void Assert(bool condition, string message) + { + if (!condition) + { + throw new Exception(message); + } + } +} diff --git a/demo/Blackholio/client-godot/tests/GodotPlayModeTests.cs.uid b/demo/Blackholio/client-godot/tests/GodotPlayModeTests.cs.uid new file mode 100644 index 00000000000..68e79505434 --- /dev/null +++ b/demo/Blackholio/client-godot/tests/GodotPlayModeTests.cs.uid @@ -0,0 +1 @@ +uid://c5q42be5pif8h diff --git a/demo/Blackholio/client-godot/tests/GodotPlayModeTests.tscn b/demo/Blackholio/client-godot/tests/GodotPlayModeTests.tscn new file mode 100644 index 00000000000..ae45580c27d --- /dev/null +++ b/demo/Blackholio/client-godot/tests/GodotPlayModeTests.tscn @@ -0,0 +1,6 @@ +[gd_scene load_steps=2 format=3] + +[ext_resource type="Script" path="res://tests/GodotPlayModeTests.cs" id="1_tests"] + +[node name="GodotPlayModeTests" type="Node"] +script = ExtResource("1_tests") diff --git a/demo/Blackholio/server-csharp/generate.bat b/demo/Blackholio/server-csharp/generate.bat index ee75551ed83..d749656b23a 100644 --- a/demo/Blackholio/server-csharp/generate.bat +++ b/demo/Blackholio/server-csharp/generate.bat @@ -1,2 +1,3 @@ spacetime generate --out-dir ../client-unity/Assets/Scripts/autogen -y --lang cs --module-path ./ +spacetime generate --out-dir ../client-godot/module_bindings -y --lang cs --module-path ./ spacetime generate --lang unrealcpp --uproject-dir ../client-unreal --module-path ./ --module-name client_unreal diff --git a/demo/Blackholio/server-csharp/generate.sh b/demo/Blackholio/server-csharp/generate.sh index 36ed983fc51..c1d043670a1 100644 --- a/demo/Blackholio/server-csharp/generate.sh +++ b/demo/Blackholio/server-csharp/generate.sh @@ -3,4 +3,5 @@ set -euo pipefail spacetime generate --out-dir ../client-unity/Assets/Scripts/autogen --lang cs --module-path ./ $@ +spacetime generate --out-dir ../client-godot/module_bindings --lang cs --module-path ./ $@ spacetime generate --lang unrealcpp --uproject-dir ../client-unreal --module-path ./ --module-name client_unreal diff --git a/demo/Blackholio/server-rust/generate.bat b/demo/Blackholio/server-rust/generate.bat index ee75551ed83..d749656b23a 100644 --- a/demo/Blackholio/server-rust/generate.bat +++ b/demo/Blackholio/server-rust/generate.bat @@ -1,2 +1,3 @@ spacetime generate --out-dir ../client-unity/Assets/Scripts/autogen -y --lang cs --module-path ./ +spacetime generate --out-dir ../client-godot/module_bindings -y --lang cs --module-path ./ spacetime generate --lang unrealcpp --uproject-dir ../client-unreal --module-path ./ --module-name client_unreal diff --git a/demo/Blackholio/server-rust/generate.sh b/demo/Blackholio/server-rust/generate.sh index 36ed983fc51..c1d043670a1 100755 --- a/demo/Blackholio/server-rust/generate.sh +++ b/demo/Blackholio/server-rust/generate.sh @@ -3,4 +3,5 @@ set -euo pipefail spacetime generate --out-dir ../client-unity/Assets/Scripts/autogen --lang cs --module-path ./ $@ +spacetime generate --out-dir ../client-godot/module_bindings --lang cs --module-path ./ $@ spacetime generate --lang unrealcpp --uproject-dir ../client-unreal --module-path ./ --module-name client_unreal diff --git a/sdks/csharp/src/STDBUpdateManager.cs b/sdks/csharp/src/STDBUpdateManager.cs index c2662b5b310..2c9e0e5c9b6 100644 --- a/sdks/csharp/src/STDBUpdateManager.cs +++ b/sdks/csharp/src/STDBUpdateManager.cs @@ -8,12 +8,12 @@ public partial class STDBUpdateManager : Node { private const string SingletonNodeName = nameof(STDBUpdateManager); - private static STDBUpdateManager _instance; - private static STDBUpdateManager Instance => EnsureInstance(); + private static STDBUpdateManager? _instance; + private static STDBUpdateManager? Instance => EnsureInstance(); private List Connections { get; } = new(); - private static STDBUpdateManager EnsureInstance() + private static STDBUpdateManager? EnsureInstance() { if (IsInstanceValid(_instance)) { @@ -44,13 +44,12 @@ private static STDBUpdateManager EnsureInstance() { Name = SingletonNodeName, }; - root.AddChild(_instance, false, InternalMode.Front); + root.CallDeferred(Node.MethodName.AddChild, _instance, false, (int)InternalMode.Front); return _instance; } public static bool Add(IDbConnection conn) { - if (conn == null) return false; var connections = Instance?.Connections; if (connections == null || connections.Contains(conn)) return false; connections.Add(conn); @@ -59,7 +58,6 @@ public static bool Add(IDbConnection conn) public static bool Remove(IDbConnection conn, bool disconnect = false) { - if (conn == null) return false; var connections = Instance?.Connections; if (connections != null && connections.Remove(conn)) { @@ -102,7 +100,7 @@ public override void _Process(double delta) { foreach (var conn in Connections) { - conn?.FrameTick(); + conn.FrameTick(); } } } From 86013f0ab81b560e45888fb19967f764992cb66a Mon Sep 17 00:00:00 2001 From: Lisandro Crespo Date: Fri, 15 May 2026 09:35:34 -0500 Subject: [PATCH 06/12] Clean --- demo/Blackholio/client-godot/Instantiator.cs | 1 - demo/Blackholio/client-godot/tests/GodotPlayModeTests.cs | 1 + demo/Blackholio/client-godot/tests/GodotPlayModeTests.tscn | 6 +++--- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/demo/Blackholio/client-godot/Instantiator.cs b/demo/Blackholio/client-godot/Instantiator.cs index eb2be07a30c..5d2fff6759b 100644 --- a/demo/Blackholio/client-godot/Instantiator.cs +++ b/demo/Blackholio/client-godot/Instantiator.cs @@ -53,7 +53,6 @@ public Instantiator(DbConnection conn) public override void _ExitTree() { - GD.Print("Instantiator Exit Tree"); Conn = null; } diff --git a/demo/Blackholio/client-godot/tests/GodotPlayModeTests.cs b/demo/Blackholio/client-godot/tests/GodotPlayModeTests.cs index c197b5214b2..e18df0f5b87 100644 --- a/demo/Blackholio/client-godot/tests/GodotPlayModeTests.cs +++ b/demo/Blackholio/client-godot/tests/GodotPlayModeTests.cs @@ -13,6 +13,7 @@ public partial class GodotPlayModeTests : Node public override async void _Ready() { + // This should not be needed after improving the SDK await ToSignal(GetTree(), SceneTree.SignalName.ProcessFrame); var failures = 0; diff --git a/demo/Blackholio/client-godot/tests/GodotPlayModeTests.tscn b/demo/Blackholio/client-godot/tests/GodotPlayModeTests.tscn index ae45580c27d..1bee72e4673 100644 --- a/demo/Blackholio/client-godot/tests/GodotPlayModeTests.tscn +++ b/demo/Blackholio/client-godot/tests/GodotPlayModeTests.tscn @@ -1,6 +1,6 @@ -[gd_scene load_steps=2 format=3] +[gd_scene format=3 uid="uid://dqyv2qhg7qrdg"] -[ext_resource type="Script" path="res://tests/GodotPlayModeTests.cs" id="1_tests"] +[ext_resource type="Script" uid="uid://c5q42be5pif8h" path="res://tests/GodotPlayModeTests.cs" id="1_tests"] -[node name="GodotPlayModeTests" type="Node"] +[node name="GodotPlayModeTests" type="Node" unique_id=616781920] script = ExtResource("1_tests") From 3392c0fbd1f331b235036ac1e5356d74933ee105 Mon Sep 17 00:00:00 2001 From: Lisandro Crespo Date: Fri, 15 May 2026 11:40:05 -0500 Subject: [PATCH 07/12] Clean test --- .github/workflows/ci.yml | 11 ++--------- 1 file changed, 2 insertions(+), 9 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index d01d232c3c1..001aaf5dddc 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -739,7 +739,7 @@ jobs: - name: Restore .NET solution working-directory: sdks/csharp - run: dotnet restore --configfile NuGet.Config SpacetimeDB.ClientSDK.sln + run: dotnet restore --configfile NuGet.Config SpacetimeDB.ClientSDK.Godot.sln # Now, setup the Godot tests. - name: Patch spacetimedb dependency in Cargo.toml @@ -789,14 +789,7 @@ jobs: working-directory: demo/Blackholio/server-rust run: bash ./generate.sh -y - - name: Check Unity bindings for changes - run: | - tools/check-diff.sh demo/Blackholio/client-unity/Assets/Scripts/autogen || { - echo 'Error: Unity bindings are dirty. Please run `demo/Blackholio/server-rust/generate.sh`.' - exit 1 - } - - - name: Check Godot bindings for changes + - name: Check for changes run: | tools/check-diff.sh demo/Blackholio/client-godot/module_bindings || { echo 'Error: Godot bindings are dirty. Please run `demo/Blackholio/server-rust/generate.sh`.' From 921007edb410ec92c0247fc9d399b6db2a254298 Mon Sep 17 00:00:00 2001 From: Lisandro Crespo Date: Fri, 22 May 2026 10:00:38 -0500 Subject: [PATCH 08/12] Fix .sln in godot-testsuite --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 001aaf5dddc..cf6ce7b4199 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -739,7 +739,7 @@ jobs: - name: Restore .NET solution working-directory: sdks/csharp - run: dotnet restore --configfile NuGet.Config SpacetimeDB.ClientSDK.Godot.sln + run: dotnet restore --configfile NuGet.Config SpacetimeDB.ClientSDK.sln # Now, setup the Godot tests. - name: Patch spacetimedb dependency in Cargo.toml From fe6c473517f2bd58c37277c5144c6868dac6cb17 Mon Sep 17 00:00:00 2001 From: Lisandro Crespo Date: Fri, 22 May 2026 10:45:05 -0500 Subject: [PATCH 09/12] Make verbose build --- .github/workflows/ci.yml | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index cf6ce7b4199..07997674e8d 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -725,8 +725,8 @@ jobs: - name: Override NuGet packages run: | - dotnet pack crates/bindings-csharp/BSATN.Runtime - dotnet pack crates/bindings-csharp/Runtime + dotnet pack -c Release crates/bindings-csharp/BSATN.Runtime + dotnet pack -c Release crates/bindings-csharp/Runtime # Write out the nuget config file to `nuget.config`. This causes the spacetimedb-csharp-sdk repository # to be aware of the local versions of the `bindings-csharp` packages in SpacetimeDB, and use them if @@ -809,14 +809,16 @@ jobs: version: 4.6.2 use-dotnet: true - - uses: actions/cache@v3 - with: - path: demo/Blackholio/client-godot/.godot - key: Godot-${{ github.head_ref }} - restore-keys: Godot- + - name: Restore Godot project + working-directory: demo/Blackholio/client-godot + run: dotnet restore --configfile ../../../NuGet.Config blackholio.csproj + + - name: Build Godot .NET project + working-directory: demo/Blackholio/client-godot + run: dotnet build --no-restore -v normal blackholio.csproj - name: Build Godot project - run: godot --headless --path demo/Blackholio/client-godot --build-solutions --quit + run: godot --headless --verbose --path demo/Blackholio/client-godot --build-solutions --quit - name: Start SpacetimeDB run: | From 8e8d710f6e1061dcee804642bcf803c6f53654f1 Mon Sep 17 00:00:00 2001 From: Lisandro Crespo Date: Fri, 22 May 2026 11:11:40 -0500 Subject: [PATCH 10/12] Try to force using local BSATN --- .github/workflows/ci.yml | 1 + sdks/csharp/SpacetimeDB.ClientSDK.Godot.csproj | 8 +++++++- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 07997674e8d..55b6c56ac56 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -711,6 +711,7 @@ jobs: timeout-minutes: 30 env: CARGO_TARGET_DIR: ${{ github.workspace }}/target + UseLocalBsatnRuntime: true steps: - name: Checkout repository id: checkout-stdb diff --git a/sdks/csharp/SpacetimeDB.ClientSDK.Godot.csproj b/sdks/csharp/SpacetimeDB.ClientSDK.Godot.csproj index 61e3cda1f0e..cfc758ba0ac 100644 --- a/sdks/csharp/SpacetimeDB.ClientSDK.Godot.csproj +++ b/sdks/csharp/SpacetimeDB.ClientSDK.Godot.csproj @@ -28,12 +28,18 @@ bin~/$(Configuration)/ obj~/godot/ obj~/godot/$(Configuration)/$(TargetFramework)/ + false - + + + + + + From 32fae12081084b1f5d09476c257bf1f9f11b6095 Mon Sep 17 00:00:00 2001 From: Lisandro Crespo Date: Fri, 22 May 2026 11:31:26 -0500 Subject: [PATCH 11/12] Try Codex suggestion --- demo/Blackholio/client-godot/blackholio.csproj | 3 +++ 1 file changed, 3 insertions(+) diff --git a/demo/Blackholio/client-godot/blackholio.csproj b/demo/Blackholio/client-godot/blackholio.csproj index 832cd3baa10..d9586ac79f2 100644 --- a/demo/Blackholio/client-godot/blackholio.csproj +++ b/demo/Blackholio/client-godot/blackholio.csproj @@ -7,4 +7,7 @@ + + + From 1bcff27931531f135dfe74dea670ed94d2b7839f Mon Sep 17 00:00:00 2001 From: Lisandro Crespo Date: Fri, 29 May 2026 08:48:36 -0500 Subject: [PATCH 12/12] Clean --- .github/workflows/ci.yml | 11 +---------- 1 file changed, 1 insertion(+), 10 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 55b6c56ac56..99d093a2be6 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -708,7 +708,6 @@ jobs: permissions: contents: read runs-on: spacetimedb-new-runner-2 - timeout-minutes: 30 env: CARGO_TARGET_DIR: ${{ github.workspace }}/target UseLocalBsatnRuntime: true @@ -717,8 +716,6 @@ jobs: id: checkout-stdb uses: actions/checkout@v4 - # Run cheap .NET setup first. If that fails, no need to run expensive Godot tests. - - name: Setup dotnet uses: actions/setup-dotnet@v3 with: @@ -814,10 +811,6 @@ jobs: working-directory: demo/Blackholio/client-godot run: dotnet restore --configfile ../../../NuGet.Config blackholio.csproj - - name: Build Godot .NET project - working-directory: demo/Blackholio/client-godot - run: dotnet build --no-restore -v normal blackholio.csproj - - name: Build Godot project run: godot --headless --verbose --path demo/Blackholio/client-godot --build-solutions --quit @@ -829,7 +822,7 @@ jobs: - name: Publish godot-tests module to SpacetimeDB working-directory: demo/Blackholio/server-rust run: | - spacetime logout && spacetime login --server-issued-login local + spacetime login --server-issued-login local bash ./publish.sh - name: Run Godot tests @@ -846,8 +839,6 @@ jobs: id: checkout-stdb uses: actions/checkout@v4 - # Run cheap .NET tests first. If those fail, no need to run expensive Unity tests. - - name: Setup dotnet uses: actions/setup-dotnet@v3 with: