Files
Claude-Code-Game-Studios/.claude/rules/gameplay-code.md
T
DonchitosandClaude Opus 5.5 b21fa0f7f2 Release 1.1.2 — the default path works end to end
Fix release for 1.1.1: the minimal path end to end, engine commands that
run on Godot, Unity and Unreal, hook warnings you can see, and verdicts
that say when they could not check. Details in CHANGELOG.md; upgrade
steps in UPGRADING.md (v1.1.1 → v1.1.2).

Fixes #67
Fixes #131

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01WuJn2FdynEybfL5KC697nJ
2026-09-29 21:32:19 +10:00

1.4 KiB

paths
paths
src/gameplay/**
Assets/**/{Gameplay,gameplay}/**/*.cs
Source/**/{Gameplay,gameplay}/**/*.{h,cpp}

Gameplay Code Rules

  • ALL gameplay values MUST come from external config/data files, NEVER hardcoded
  • Use delta time for ALL time-dependent calculations (frame-rate independence)
  • NO direct references to UI code — use events for cross-system communication (Godot signals, C# events, Unreal delegates)
  • Every gameplay system must implement a clear interface
  • State machines must have explicit transition tables with documented states
  • Write unit tests for all gameplay logic — separate logic from presentation
  • Document which design doc each feature implements in code comments
  • No static singletons for game state — use dependency injection

Examples

Correct (data-driven) — Godot:

var damage: float = config.get_value("combat", "base_damage", 10.0)
var speed: float = stats_resource.movement_speed * delta

Unity (values from a ScriptableObject):

float damage = combatConfig.BaseDamage;
float speed = stats.MovementSpeed * Time.deltaTime;

Unreal (values from a data asset):

const float Damage = CombatConfig->BaseDamage;
const float Speed = Stats->MovementSpeed * DeltaTime;

Incorrect (hardcoded):

var damage: float = 25.0   # VIOLATION: hardcoded gameplay value
var speed: float = 5.0      # VIOLATION: not from config, not using delta