Commit graph

32 commits

Author SHA1 Message Date
5dd5c760d7 scripts: warn when incoming commits touch Unity scene/asset files 2026-07-14 21:10:32 +01:00
8e4a19b7d8 scripts: add SessionStart git/Forgejo digest check 2026-07-14 21:06:59 +01:00
Monqui
bba60d4527 Test commit. 2026-07-13 19:16:49 -04:00
c25407be15 Bump version 0.1.0 -> 0.2.0 2026-07-12 21:22:35 +01:00
93b8fae66b bot: fix slow/unsteerable driving + controls tooltip
Diagnosis (agent + live values): tuning & tread geometry were fine, debugAutoDrive
off — the real drag was the box chassis sliding on default ~0.6 friction, which ate
forward speed AND resisted yaw (dead steering).
- Bot_LowFriction physics material (0.3, Minimum combine) on the chassis → slides +
  yaws freely.
- TreadPart yaw-assist (220 N·m, sign reinforces natural differential) so a throttle
  difference gives a clear turn; cancels to zero on equal throttle (straight kept).
- SeatManager: context-aware controls tooltip under the seat box (on-foot vs driving),
  with a 'turn: differ vs teammate' hint.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-12 21:20:05 +01:00
30d0b27813 controls: on-foot always-on mouse-look + camera-relative WASD + E/Q claim
- CameraDirector: AvatarFollow now uses always-on mouse-look (no RMB) with a
  locked/hidden cursor; Esc toggles the cursor free; RobotFollow keeps RMB-look.
- PlayerAvatar: movement is camera-relative (W = camera forward, character turns
  to face where it runs) instead of world/cardinal.
- PlayerAvatar: E claims a tread on foot, Q leaves while seated (locked cursor
  makes the OnGUI buttons unclickable).
- Verified in play: cursor locks in on-foot mode, camera-relative basis correct,
  no runtime errors.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-12 21:02:22 +01:00
3082644dbd camera: RMB-drag look + scroll zoom on follow cams, big zoom-out range
Avatar/Robot follow cams now orbit from player input: hold right-mouse + drag to
look around (yaw/pitch clamped), scroll to zoom (3..80m so you can pull back and
survey the arena). Per-mode default distance on switch, look angle persists.
Stand/Cinematic unaffected.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-12 20:50:30 +01:00
e92be317f5 M1: player stand + control handoff + Cinemachine camera system
- Install Cinemachine 3.1.7
- Stand (raised platform behind north wall) with StandPoint_0/_1
- PlayerAvatar: seat-ownership drives the mode — hold a seat => teleport to your
  stand, freeze, refuse input (control transfers/locks to your tread); release =>
  teleport back, resume on-foot. Resolves the WASD overlap off one flag.
- CameraDirector on Main Camera: 4 Cinemachine vcams (AvatarFollow / RobotFollow
  / StandView / CinematicOrbit), Brain blends; V cycles; default auto-follows the
  seat flag (on-foot=Avatar, driving=Robot). Retires the old FollowCamera.
- Verified in play: claim->teleport+freeze+RobotFollow, release->return+AvatarFollow

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-12 20:44:18 +01:00
e93e6e76a3 gitignore: ignore local docs (*.md) and .mcp.json 2026-07-12 20:22:31 +01:00
e646aa9548 chore: UnityConnectSettings churn from build/play sessions
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-12 19:06:11 +01:00
a94b42ae36 M1: smooth player movement — ramp velocity (accel/decel) not instant
Instant full-speed-on-press / dead-stop-on-release was the jerky/jarring feel
and made the anim pop Idle->Run. Now MoveTowards-ramps horizontal velocity
(accel 45, decel 60 m/s^2), so starts/stops ease and Idle->Walk->Run blends.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-12 18:52:44 +01:00
94951ec70a M1: add networked rigged player avatar (run-around character)
- Import Hodaart Low Poly Character Collection 3 (humanoid-rigged, LFS)
- PlayerAvatar.cs: owner-authoritative CharacterController movement, animation
  derived from measured speed on every client (no NetworkAnimator needed)
- OwnerAuthNetworkTransform.cs: owner-authoritative NetworkTransform
- PlayerLocomotion.controller: Idle/Walk/Run 1D blend tree on Speed (reuses
  Hodaart clips)
- PlayerCharacter.prefab (Character 01 + CC + NetworkObject + owner NT +
  PlayerAvatar + Animator w/ humanoid avatar); registered as PlayerPrefab
- Verified in play: spawns, visible, Idle pose (rig animates), owner-auth

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-12 18:43:39 +01:00
5db61fdb57 M1: enlarge arena to 150x150m + container-wall ring
- Ground scaled to 150x150m; dirt re-tiled to 24x (~6.25m/tile) to hold look
- ArenaWalls: 4 invisible BoxCollider physics walls (4m tall, sealed corners)
- Junkyard_Walls: 96 cargo containers (24/side) ringing the perimeter as the
  visible wall (Junkyard models pack; physics handled by the invisible walls)

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-12 18:32:12 +01:00
0839887683 Add Materials folder meta + settings churn from build
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-12 18:19:33 +01:00
3342dec677 M1: apply junkyard dirt ground material (URP/Lit, 8x tiling)
Arena_Ground_Dirt.mat = Junk Car Parts/dirt.png (seamless cracked-earth),
Repeat wrap, 8x tiling (~6m/tile) on the 50x50m Ground plane.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-12 18:19:12 +01:00
7d469dfbba Import Asset Store scrap/character packs (LFS-backed)
Packs: Floreswa (characters), Junk Car Parts, Junkyard models, LB3D lowpoly.
159 binaries (png/obj/fbx/jpg) stored via Git LFS; Unity YAML (prefab/mat/
scene/asset) kept as normal text. Perftest run artifacts gitignored.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-12 18:05:27 +01:00
a5502b1d17 Set up Git LFS for binary art/audio/model assets
- git lfs install run repo-wide; LFS objects push to Forgejo (git.rdx4.com)
- .gitattributes routes images/audio/video/models/fonts/native-libs + binary
  .asset exceptions (LightingData, cubemap) through LFS filter
- Unity YAML text assets (.unity/.prefab/.mat/.asset/.anim/.controller) stay
  normal mergeable text, NOT LFS
- Verified: .png->lfs, .prefab->text, clean filter produces LFS pointer

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-12 18:00:50 +01:00
fe884e97f7 Unity settings churn from Win/OSX build target population
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-12 17:45:52 +01:00
fe04148045 M1: clear PlayerPrefab so clients don't double-drive during bot playtest
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-12 17:25:22 +01:00
36a69b1eda M1: wire shove ball + follow camera into M1_Arena
- ShoveBall: in-scene NetworkObject sphere (1.5m, 10kg, drag 0.5) at
  (0,0.75,6), host-authoritative via NetworkRigidbody/NetworkTransform,
  ShoveBall.physicsMaterial (friction 0.4/0.5, bounce 0.3). No script.
- FollowCamera on Main Camera, target=Bot, offset (0,8,-12).
- Solo host smoke test passed: ball spawns + rests on ground + shoves;
  camera frames the bot.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-12 17:19:10 +01:00
03cbfc8cc9 M1: add client-local follow camera (position-follow, anti-nausea)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-12 17:13:28 +01:00
41d8e29632 M1: tune bot physics to stop launch/tip (playtest finding)
First 2-pilot test: bot was too hot (1200N cruise) and top-heavy -> launched
off on any nudge. Tamed in-scene: cruiseForce 1200->450, linearDamping 1.5,
angularDamping 6, maxAngularVelocity capped at 3, and lowered centerOfMass to
(0,-0.6,0) so it's bottom-heavy and resists cartwheeling. Added a host-only
debugAutoDriveFull flag on TreadPart to feel two-tread coordination solo.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-11 00:39:07 +01:00
e8d72e4649 M1: build shared 2-tread bot; rewire TreadPart to seat-based gating
- Rewrote TreadPart: seat-based input gating (was mis-wired to NetworkObject
  IsOwner, which needs per-tread ownership that NGO forbids for nested
  NetworkObjects). Both treads now share the chassis NetworkObject; a client
  drives the tread whose SeatManager seat it holds, host re-validates OwnsSeat
  on a RequireOwnership=false RPC. Also swapped to Keyboard.current (New input).
- Moved SeatManager OnGUI below the connectivity panel (was overlapping).
- M1_Arena: in-scene Bot NetworkObject = chassis (Rigidbody 60kg + NetworkObject
  + NetworkTransform + NetworkRigidbody + SeatManager) + Tread_L/Tread_R children
  (TreadPart, world offset +/-1.2 X for differential drive).
- Solo-verified: bot auto-spawns in-scene, seat claim + input gating wired.

Controls: W/Up throttle, Shift pivot, A/D lean.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-11 00:13:41 +01:00
d42b42f269 Add ParrelSync 1.5.2 for local two-client testing
Editor-only clone tool so the capsule/bot replication can be tested with
a second Unity instance (joins the host via Relay code) without a separate
machine or a standalone build. Clone lives at ../jankenbots_clone_0
(sibling of the repo, symlinks Assets + ProjectSettings back to it).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-10 23:54:41 +01:00
78f16f6a22 M1: fix PlayerDriver input for New-only Input System (Keyboard.current)
Project ships Active Input Handling = Input System (New) only, so the
drafted legacy Input.GetAxisRaw would throw InvalidOperationException at
runtime. Read WASD/arrows off Keyboard.current instead — no restart, no
action asset needed. (TreadPart needs the same swap when the bot lands.)

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-10 23:30:31 +01:00
251ac8acec M1: add replicated Player capsule prefab, set as NetworkConfig.PlayerPrefab
Capsule with Rigidbody (mass 2, upright constraints) + NetworkObject +
NetworkTransform + PlayerDriver; auto-spawned per client, host-authoritative
motion via input->ServerRpc->host AddForce->NetworkTransform replication.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-10 23:28:59 +01:00
4536cc3726 M1: add networked scene M1_Arena (NetworkManager + UnityTransport + Bootstrap)
Empty host-authoritative arena: NetworkManager GameObject carries
NetworkManager, UnityTransport (wired as NetworkConfig.NetworkTransport),
and the NetworkBootstrap Relay host/join harness. Ground plane, camera,
directional light. Set as the build startup scene for two-client testing.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-10 23:27:23 +01:00
d723447e31 M1: add NGO + Multiplayer Services packages and prototype scripts (compiling)
Netcode for GameObjects 2.13.0 + Unity Multiplayer Services 2.2.4 (unified
Relay/Lobby SDK; supersedes deprecated standalone relay/lobby). Four M1
scripts, verified against live editor reflection and compiling clean:
- Net/NetworkBootstrap.cs  Relay host/join-by-code harness (IMGUI)
- Net/PlayerDriver.cs       replicated host-auth capsule (input->ServerRpc->host)
- Bot/TreadPart.cs          v0.1 tread feel: snap-to-cruise/lock-pivot/lean
- Bot/SeatManager.cs        left/right tread seat claim + leaver-safety

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-10 23:24:47 +01:00
04333223f4 Record working Unity MCP config (server 8067, bridge 8068) + 8080/reserved-port gotcha 2026-07-10 22:57:16 +01:00
6ae68d3671 Rename JANKENSTEIN->JANKENBOTS; unify repo into Unity project folder + add Unity project (URP/Input System template) 2026-07-10 22:44:44 +01:00
e59ce64eae Consolidate onto F:\jankenstein; seed Unity MCP config + runbook, Unity .gitignore/.gitattributes 2026-07-10 22:13:26 +01:00
6f24fa5d26 Initial scaffold: promote JANKENSTEIN idea to project (Unity, NGO+Relay prototype plan) 2026-07-10 21:52:04 +01:00