# Unity Coin Room 1.0 — source-guided starter Collect three gold coins before sixty simulated active seconds run out. Avoid the red patrol. Arrows/WASD move, P pauses/resumes, R or Restart starts again. Losing window focus pauses until you explicitly resume. Verification boundary: the actual RoundRules.cs is compiled and executed with .NET 8. Unity Editor compilation/import, scene creation, native physics/input, rendering and standalone builds have NOT been executed by Forge. Follow ACCEPTANCE.md in your licensed editor. This is not a certified Unity build. ## Fresh Unity project 1. Use Unity Hub from https://unity.com/download. Check your eligible plan and publisher terms. This source targets Unity 6.3 LTS, patch 6000.3.24f1; that is an explicit reference patch, not a claim it is the newest release. 2. Create a fresh 2D (Built-in Render Pipeline) project. If you use Universal 2D, check the sprite material/render pipeline separately. Do not overwrite a production game. Keep a backup or isolated branch. 3. Window > Package Manager: install Unity's com.unity.inputsystem version 1.20.1. Unity's current 6000.3 package documentation lists that released version. Edit > Project Settings > Player > Other Settings > Active Input Handling: Input System Package (New); restart when Unity requests it. 4. Extract every ZIP file. Copy only Assets/ForgeStarter into your project's Assets folder. Leave Packages and ProjectSettings under your project/Unity's control. The checks folder is for a separate console runner, not Assets. 5. Wait for import/compilation; open Window > General > Console. Fix red errors before continuing. Select Forge > Create Coin Room Scene. The menu saves current work first, asks before replacing its own existing tutorial scene, generates its own white shape texture, imports the included idle strip, wires the components and saves Assets/ForgeStarter/Scenes/CoinRoom.unity. The existing shared build-scene list is preserved and this scene is added. 6. Select the generated Coin Room scene in your Build Profile's scene list as needed; custom profiles may override the shared scene list. Enter Play Mode and follow ACCEPTANCE.md. The menu's message confirms scene creation only. ## Learn the files - RoundRules.cs: unique coin identities, score, pause, bounded active timer, terminal states, reset and normalized movement. No Unity dependency. - CoinRoom.cs: Keyboard.current, fixed-step Rigidbody2D.linearVelocity, focus/disable input cleanup, restart, camera fit and a small OnGUI HUD. - Pickup.cs: OnTriggerEnter2D from the player's actual attached Rigidbody2D. - Patrol.cs: bounded kinematic MovePosition plus player-trigger loss. - IdleSprite.cs: five runtime Sprite.Create cells at 10 FPS; owns/destroys its Sprite objects. These are idle frames, not walk/run frames. - Editor/CreateCoinRoom.cs: native editor scene setup. It is inside Editor so UnityEditor code is excluded from player builds. No custom physics engine. - Art: exact 160x32 CC0 David Harrington idle sheet, cell metadata and provenance reused from Forge's verified Godot source. Its Unity import is still unverified. The baseline uses Unity built-ins and its Input System plus the included sheet. No paid pack, downloaded UI pack, audio library, account, multiplayer, telemetry, local save or network service is required. Extra art/sound/UI remains optional. ## Run the actual C# rules separately Install a .NET 8 SDK from Microsoft if you want the console checks. The recorded Forge run uses SDK 8.0.425. From the extracted folder: dotnet run --project checks/RulesChecks.csproj --configuration Release NuGet.Config clears external package sources; no NuGet dependencies are needed. The csproj compiles the exact Assets/ForgeStarter/RoundRules.cs, not a port or mock. A single JSON report lists each check. This does not compile the Unity adapter or test editor input/collisions/rendering. Other SDK versions are not the recorded test environment. Generated checks/bin and checks/obj stay local. ## Build after editor acceptance File > Build Profiles: select the intended desktop platform, install its exact editor-version build support via Hub if missing, and confirm CoinRoom.unity is enabled. Choose Development Build first, build to a separate folder and run it. Repeat movement, wall, pickup, patrol, timeout, focus/pause and restart checks there. Do not treat a Console-rule pass as a successful game export. This lesson does not supply touch controls, a Web build or a BINX.fun deployment. ## Rights Original Forge scripts/checks/instructions: MIT, LICENSE.txt. Included idle art: David Harrington, CC0, Art/ART-SOURCE.txt. Keep these provenance files. Unity Editor, Runtime, built-in engine files, Input System, fonts and any extra packages have Unity/their publisher's own terms. This ZIP contains no Unity engine binaries or packages. The MIT grant for our scripts does not license Unity material, paid assets or an entire template containing third-party files. Eligible Unity Personal can be used for a game under Unity's financial/tier terms; check finished-game, standalone-file and source/template rights separately. https://unity.com/legal/editor-terms-of-service/software ## Common problems - Missing UnityEngine.InputSystem: install the specified package, check Console and let compilation finish; do not install an unrelated NuGet package. - No movement: enable the new Input System, focus the Game view, press P if paused, and check Keyboard.current/room.player rather than mixing Input.GetKey. - No menu: keep CreateCoinRoom.cs in Editor and clear every compile error. - Sprite missing: copy the complete Art folder; verify 160x32, point filtering, uncompressed Sprite import and Read/Write. The builder sets those options. - No trigger: use BoxCollider2D with Is Trigger on coins/patrol, the dynamic Rigidbody2D on the player, native 2D callbacks and a collision matrix that allows their layers. Do not mix Rigidbody/Collider (3D) with the 2D components. - Timer slows after stalls: excess elapsed time is deliberately discarded; this is active simulated time, not wall-clock time. - Wrong scene in a build: inspect the active custom profile's scene list, not only the shared list. Keep editor scripts out of the player assembly.