Commit Graph
330 Commits
Author SHA1 Message Date
adminandClaude Fable 5 adcd1db73b The Room content pass: 10 new photo textures, picture frames, mipmaps on photos
Enable mipmaps on the existing photo texture imports and add the new
IMG_20250412 photo set; scene pass in The Room.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-10 22:37:28 +02:00
adminandClaude Fable 5 27fe8775e1 Fix radar camera back to Overlay type
The renderer wiring had flipped it to Base; as a Base camera with
Don't Clear it rendered fullscreen into an uninitialized target
(RenderGraph debug yellow). Overlay restores stack compositing.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-10 22:37:19 +02:00
adminandClaude Fable 5 eeaf45aa8f Nameplates: run positioning in Update instead of LateUpdate
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-10 22:37:19 +02:00
adminandClaude Fable 5 a2a0e85831 Spawn hider statues in resolution phase for classic mode too
Classic hit path now captures a statue record like conversion does;
rename the statue infrastructure (CaptureStatue/SpawnStatues/
DespawnStatues/_statueRecords) since it is no longer conversion-only.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-10 22:37:11 +02:00
adminandClaude Fable 5 14015d7134 Ignore drag-releases in slider double-click reset; tune HUD slider defaults
A pointer-up after a drag no longer counts as a click (dragging flag +
press-to-release distance within the existing tolerance), so drag ->
release -> click cannot trigger a reset anymore. PaintHud prefab:
pointer tolerance 4 px, HalfLambert default back to 0.5.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-10 22:37:03 +02:00
adminandClaude Fable 5 07839d0a7e The Room content pass: new photo textures, shelf prefab tweaks, AudioMixer update; remove test SoundEffect asset; ignore PSD~ sources
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-10 19:28:34 +02:00
adminandClaude Fable 5 90da315fbd Switch to Deferred+ with dedicated forward renderer for radar camera; rendering-layer setup across scenes
Also serializes wallStepOffset on Player prefab and includes SliderDoubleClickReset wiring in Main (mixed scene edits).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-10 19:28:32 +02:00
adminandClaude Fable 5 7fb0ff54b1 Add double-click-to-reset on all sliders (interval + pointer tolerance) and sync PaintHud slider defaults
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-10 19:28:22 +02:00
adminandClaude Fable 5 cf794643a6 Fix camo forward pass on Deferred+ (ComplexLit forward-only path, HalfLambert/X-ray restored)
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-10 19:28:22 +02:00
adminandClaude Fable 5 b30db72e0c Add ledge grab: walking over an edge attaches to the wall below (not while sprinting)
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-10 19:28:22 +02:00
adminandClaude Fable 5 ec7ab45ff1 The Room: scene pass, photo texture import settings (no mips/compression), remove Chameleon Background
Plus NetworkSimulator preset rid churn in Main.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-10 13:26:04 +02:00
adminandClaude Fable 5 66f890869f Move Play Scene window menu entry to Tools/Play Scene
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-10 13:26:04 +02:00
adminandClaude Fable 5 0be503c927 Add SoundEffect audio system (ScriptableObject-based) with test assets
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-10 13:25:56 +02:00
admin 75f5704ab8 Ignore FR2_Cache.asset.meta 2026-07-10 08:13:36 +02:00
adminandClaude Fable 5 04514b83c7 The Room: replace photo quads/prefabs with picture frames
Content pass: new photo textures, picture frames built with
PictureFrameBuilder in the scene, Frame Inner.mat tweak; removed the
now-obsolete photo materials and Paint prefab variants.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-10 07:54:03 +02:00
adminandClaude Fable 5 5dbdc0e6b2 Add Picture Texture field to PictureFrameBuilder
Assigned texture drives the picture material BaseMap via a per-frame
material instance (asset untouched, frames sharing a material stay
independent) and takes priority for aspect resolution. New default
picture material Frame Picture.mat wired in the script defaults.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-10 07:53:54 +02:00
adminandClaude Fable 5 d1f7b79013 The Room: migrate test frame to relative properties, Frame.mat tweaks
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-09 21:32:26 +02:00
adminandClaude Fable 5 6a15a68a2e Make picture frame properties relative and fix picture aspect ratio
Frame thickness, corner radius, padding, inner depth and picture depth
are now normalized factors (scale with Size, no dead clamp zones).
Picture aspect is computed inside-out so padding and frame thickness
no longer distort the image. New Frame Inner.mat as inner default.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-09 21:32:19 +02:00
adminandClaude Fable 5 07aef0c7b2 The Room: picture frame authoring pass (size/aspect migration, Frame.mat)
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-09 20:33:25 +02:00
adminandClaude Fable 5 850c92bcce Derive picture frame size from picture texture aspect ratio
Replace Width/Height with a single Size (longer side); the shorter side
follows the picture material's base map source-image aspect (editor-
resolved, serialized for builds, 1:1 fallback). Add Range attributes on
all frame parameters and default material references (new Frame.mat).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-09 20:33:18 +02:00
adminandClaude Fable 5 bac32a87a9 The Room: test frame collider wiring + pedestal picture depth
PictureFrameBuilder test frame now carries its 6 generated BoxColliders
(pictureDepth -0.05 pedestal case) plus the usual regenerated
SkyboxReflection cubemap churn.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-09 20:08:03 +02:00
adminandClaude Fable 5 5c6657d9d0 PictureFrameBuilder: auto box colliders + coalesced rebuild in Update
Rebuild now runs once per frame via ExecuteAlways Update (OnValidate only
sets a dirty flag + QueuePlayerLoopUpdate), fixing inspector drag stutter
from stacked delayCalls. Adds automatic BoxCollider generation (4 frame
bars, opening slab, optional pedestal box for raised pictures) with an
ownership list so manual colliders stay untouched. Corner radius is
intentionally ignored for colliders.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-09 20:07:54 +02:00
adminandClaude Fable 5 a4d4c9ac91 The Room: add PictureFrameBuilder test frame, paint prefab scale tweaks
Includes the migrated frame values (Inner Depth 0.1, Picture Depth -0.05)
and the usual regenerated SkyboxReflection cubemap churn.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-09 19:20:06 +02:00
adminandClaude Fable 5 210d0adc3e Add PictureFrameBuilder procedural picture frame component
Editor-tunable frame mesh: sliced scaling (constant profile), 4 material
submeshes (picture/interior/frame/back), padding, frame thickness/depth,
rounded outer edges (quarter-cylinder strips + eighth-sphere corner caps).
Frame Inner Depth sets the interior plane; Picture Depth is relative to it
(positive = recessed, negative = raised pedestal) with auto perimeter walls.
Meshes are per-instance, DontSave, rebuilt in OnEnable/OnValidate.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-09 19:19:59 +02:00
adminandClaude Fable 5 bdce9ea0c8 Move HeroCutout shader files from Unused to Shaders
HeroCutoutLit.shader and its HeroCutout.hlsl include are in active use
(hero cutout occluder material); Assets/Shaders/ is the established
home for shader code. GUIDs preserved via .meta move, relative include
path unchanged - no references break.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-09 18:34:01 +02:00
adminandClaude Fable 5 2a59a32705 Clip hero cutout in MotionVectors pass to fix HTrace depth corruption
The MotionVectors pass (drawn by HTrace and URP against the real camera
depth buffer) was stock URP: no cutout clip and ZWrite on, so it wrote
the wall depth back into the hole after opaques. The skybox then failed
the depth test there (black disc) and all screen-space effects
(SSAO/GI) shaded the hole with the occluded wall's depth.

The pass now runs ApplyHeroCutout before URP's fragment entry point.
ObjectMotionVectors.hlsl forces its own entry via include_with_pragmas,
so the pragmas are declared explicitly and the file is plain-included.
Complements the earlier GBuffer clip; XR MV pass and ShadowCaster stay
stock on purpose. Includes render-queue churn on the occluder material.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-09 18:33:25 +02:00
adminandClaude Fable 5 fb3588cc7d The Room: wire VideoClipPlaylist on plasma TV with ping-pong clip
Adds the ping-pong processed TV video and a VideoClipPlaylist on the
Video object (one item, full range, loop). Includes regenerated
SkyboxReflection cubemap churn from SkyboxEnvironmentUpdater.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-09 16:39:10 +02:00
adminandClaude Fable 5 36ce4a66df Add VideoClipPlaylist component for sequential gapless clip playback
Plays a list of items (clip + percentage range) on a VideoPlayer.
Double-buffers via a second player (auto-created child incl. AudioSource
copy) and drives the screen texture through a MaterialPropertyBlock,
flipping only once the next player delivers frames - no black/freeze gap.
Editor drawer renders each item as clip row + min-max percent range slider.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-09 16:38:57 +02:00
adminandClaude Fable 5 ff01e07fa1 Add editor tool to create ping-pong videos from VideoClips via ffmpeg
Right-click a VideoClip -> Process -> Ping-Pong Video: runs ffmpeg in the
background (forward + reversed video concat, audio played twice), writes
<name>_pingpong.mp4 next to the source and imports it. Supports
multi-select, silent clips (video-only retry), progress display and
unique output paths.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-09 16:09:34 +02:00
adminandClaude Fable 5 2f38cb384e The Room map pass: TV video, photo materials, prefab cleanup
- New TV Video material + environment video clip on the plasma TV
- New P1002728 photo material/texture, P1002712 texture, three new
  paint prefab variants
- Living-room prefab variants updated across the set
- Remove stale generated concealment collider PolyShape assets
- The Room scene content pass

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-09 15:45:44 +02:00
adminandClaude Fable 5 ae36b2076d Add step pass to wall climb for small ledges on walls and ceilings
Ground-stepOffset analogue for climbing (wallStepOffset, default 0.1):
when climb movement is blocked by a small ledge, the capsule lifts
along the wall normal in pre-swept sub-steps and continues, with a
short servo hold to prevent being pulled back into the ledge. Ground
detach while climbing down now requires floor that extends away from
the wall, so narrow step tops no longer cause a mid-wall exit.

Wall->ceiling handoff additionally checks OverheadIsPassableStep():
if the overhead surface is only a small protrusion within the step
allowance, the handoff is skipped and the step pass carries the
capsule over the edge. Genuine overhangs hand off unchanged.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-09 15:45:31 +02:00
adminandClaude Fable 5 bde3e71873 Map: The Room content pass with new photo material
New IMG_20250412_132757_908 texture/material on a quad, level edits,
regenerated skybox reflection cubemap churn.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-08 22:05:11 +02:00
adminandClaude Fable 5 ae3b0b9f0d Wire Match Panel sliders in Main scene
Seven MatchSettingSlider bindings with ranges and value labels in the
Esc-menu Match Panel.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-08 22:05:02 +02:00
adminandClaude Fable 5 270c42d85b Add host-configurable match settings persisted in settings
- GameSettings: 7 match fields (mode, hunter count, hide/seek/resolve
  durations, radar ping interval/lifetime) with authored defaults
- MatchSettingSlider (new): enum-driven panel binder, seeds from
  settings, saves on change; lifetime label shows one decimal
  (invariant culture)
- MatchManager: ApplyHostMatchSettings() on StartMatch (clamped);
  phase message now carries ping interval so clients tick correctly

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-08 22:04:54 +02:00
adminandClaude Fable 5 1468921ca2 Docs: mark result screen + win evaluation as done, reorder next steps
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-08 20:41:26 +02:00
adminandClaude Fable 5 d0678994aa Scenes: match results panel in Esc menu, nameplate container, cubemap churn
Main: match results section (winner banner, summary, header + row
template) authored inside the session panel and wired as the result
screen's section root; nameplate template restructured into a
NameLabelContainer with styled texts using the custom font. The Room:
regenerated SkyboxReflection cubemap serialization churn.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-08 20:41:17 +02:00
adminandClaude Fable 5 69fcb3c906 Regenerate arialroundedmtprocyr SDF atlas: fix small-size box artifacts
The atlas was generated at sampling 159 with padding 4 (~40:1 instead
of the required ~10:1), so at small render sizes the SDF edge smoothing
could never reach zero alpha at the glyph quad border - every character
rendered a faint translucent rectangle. Regenerated in place (same
asset/GUID/material): sampling 85 / padding 8, gradient scale 9, full
Latin-1 charset (native umlauts instead of fallback mixing), kerning
pairs rebuilt. LiberationSans fallback asset picks up the current
serialization format from the re-save.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-08 20:41:08 +02:00
adminandClaude Fable 5 0ab92933de Support styled multi-text nameplate label containers
PlayerNameplates clones a GameObject container instead of a single
TMP_Text and drives all TMP_Text children (text + distance font size),
so the label template can be authored with layered texts (e.g. outline
or shadow copies) in the editor.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-08 20:40:56 +02:00
adminandClaude Fable 5 4c6a452f9d Fix late joiners never seeing earlier peers behind the paint reveal gate
Applying a snapshot now also raises the replica's sequence horizon: a
snapshot covers all events up to its captured cutoff. Previously the
horizon only advanced with the live stamp stream, so the server replica
of a player who never painted served snapshots with cutoff 0 - late
joiners then waited forever for the published baseline cutoff and the
reveal gate never opened (third client could not see the second).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-08 20:40:48 +02:00
adminandClaude Fable 5 b71cd61533 Add match result evaluation with live scoreboard in the Esc menu
MatchManager tracks per-participant outcomes from match start (hunter /
hiding / found / converted / left), freezes hit rows with seek time and
finder name, and decides the winner at seek end (any untouched hider ->
hiders win). Results replicate via a Match_Result named message,
broadcast live on hide start, every hit and mid-match leave (no-op once
the winner is frozen), with late joiners served the current state.

MatchResultScreen renders the scoreboard as a section of the session
panel: winner banner ("Match in progress" while live), summary counts
and pooled rows (name, outcome, time, found by); the section hides when
no result data exists. OnlineSessionBrowserUI auto-opens the Esc
overlay when the Resolution sub-phase begins.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-08 20:40:36 +02:00
adminandClaude Fable 5 262a20326a Hide hider nameplates from hunters during seek phase
Generalize the body-renderer gate to all avatars so nameplates inherit
the existing visibility matrix (hide phase, found hiders, paint reveal,
conversion settle), and add the one case the body gate cannot cover:
hunters see camouflaged hider bodies during seek, so suppress hider
names for a local hunter viewer while LocalSubPhase == Seek.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-08 15:05:48 +02:00
adminandClaude Fable 5 553db9a088 Scenes: nameplates canvas + name field wiring in Main, The Room cubemap churn
- Main: PlayerNameplates overlay canvas (sorting 110) with NameLabel
  template (bottom-aligned) and CanvasScaler (scale w/ screen size,
  1920x1080, expand); PlayerNameField on the session player panel
- The Room: regenerated SkyboxReflection cubemap fileID churn

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-08 14:58:24 +02:00
adminandClaude Fable 5 0e7ce0c410 Add player names: settings persistence, replication, screen-space nameplates
- GameSettings: playerName field persisted in Settings.json
- NetworkPlayerSetup: owner-written DisplayName NetworkVariable
  (seeded from settings on spawn, sanitized/truncated, live rename push)
- PlayerNameField: binds the session panel name input to settings
- PlayerNameplates: screen-space overlay labels above players with
  distance-based font scaling (clamped min/max), pooling, FP self-hide

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-08 14:58:15 +02:00
adminandClaude Fable 5 6db78397da Apply camo brightness/saturation grade in GBuffer pass for HTrace GI
HTrace WSGI composites indirect lighting after post-processing using the
GBuffer albedo/occlusion of the player's stock URP GBuffer pass. That pass
knew neither the painted-height AO semantics nor the brightness/saturation
grade, so desaturated paint reappeared fully saturated in shadow/indirect
light and painted height modulated GI with the raw 0.5-centered value.

- PlayerCamoShared.hlsl (new): single source for camo knobs,
  ApplyPaintedHeightSurface and ApplyCamoBodyGrade shared by both passes
- PlayerCamoGBuffer.hlsl (new): CamoGBufferFragment = URP 17.3 Lit GBuffer
  fragment + height-AO remap on occlusion + grade applied to albedo
- PlayerCamoLit.shader: GBuffer pass now uses CamoGBufferFragment
- PlayerCamo.hlsl: consumes the shared helpers (forward path unchanged)

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-08 13:24:52 +02:00
adminandClaude Fable 5 78ab6e2dd6 Fix wall climb on thin boards: rim detection, vault, edge-normal hardening
The swept-sphere probes tilt their contact normal while rolling over a
thin board's edge, which faked slope top-outs, ceiling hand-offs and
bare-rim vaults mid-face. Confirmed via temporary exit-path logging
(stripped again) and fixed at the verified causes:

- RaycastWallFace: confirm "face flattened into a slope" with a thin,
  strictly horizontal ray instead of trusting the tilted sphere normal
  (a vertical board still reads steep; real ramps still top out).
- Rim judging: the full-capsule span probe is the arbiter — while it
  still sees a steep face anywhere along the capsule, re-adopt that true
  normal (breaking the tilt self-amplification feedback loop) and keep
  climbing; only a persistent rim (wallTopOutConfirm debounce) vaults.
- WallContinuesAbove: band-sampled horizontal sweep so a grazed shelf
  edge above never reads as a cleared rim.
- Bare rim: parks by default (upward motion clamped); holding up vaults
  over the edge via MantleOverEdge, headroom-gated.
- ProbeWallSpan sweeps strictly horizontally; center probe always
  rejects down-facing hits (edge grazes), wall->ceiling hand-off only
  via the explicit head-gap check against clearly down-facing surfaces.
- Slope/ground top-outs additionally gated on a genuine stand
  (HasStandableTop) so a board's own top edge no longer detaches.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-08 12:51:34 +02:00
adminandClaude Fable 5 755fffa997 Docs: bring GAME_DESIGN.md up to date with current feature set
Add shipped features (session browser, radar pings + self-ping taunt,
X-ray reveal, conversion statues, match start trigger, fur shells, PBR
paint channels + camo knobs + painting library, settings persistence,
SkyboxEnvironmentUpdater, volumetric climb probes), correct stale claims
(MatchHud is uGUI, matchmaking exists), reprioritize next steps.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-08 08:29:25 +02:00
adminandClaude Fable 5 6c03e5d3f6 Refactor Assets/Scripts: trim restating comments, minor structure cleanups
Sweep over 48 files (Editor/ excluded): remove comments that restate the
code, condense class summaries, fix three stale doc statements
(HsvColorPicker alpha bar, PaintHud layoutPrefab, MasterVolume
FallbackDefault). Inline two single-use wrappers (IsPointerOverUi,
BuildModes), drop an unused using, replace a magic literal with the
existing ParallaxBase constant, and convert ~10 UnityEngine.Object null
checks to the implicit-bool convention. No serialized fields, signatures,
RPC/NetworkVariable names, defaults, or #if blocks touched.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-08 08:29:18 +02:00
adminandClaude Fable 5 eeee5fc2f0 Refactor PlayerCharacterController: volumetric climb probes, slim comments
- Replace all thin raycast climb probes with capsule-width SphereCasts:
  fixes drop on thin boards (mid-face contact never lost, top-out only
  fires at the real top edge) and edge flicker on curved surfaces
  (continuous contact normal instead of per-frame face flips)
- Remove WallProbeTangentSamples fan fallback (obsolete with SphereCasts)
- Collapse WallInFront/WallPresentAtOffset/WallHitAt into WallPresentAt,
  inline ApplyMeshOffset wrapper
- Trim redundant comments, keep non-obvious rationale and tooltips
- No serialized fields removed or renamed (prefab values intact)

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-08 08:09:12 +02:00
adminandClaude Opus 4.8 47184bbbb5 Project: stamp UnityGLTF package version, add performance test run resources
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-08 07:24:28 +02:00
adminandClaude Opus 4.8 b7424a3ec7 Authoring: Paintman UMotion clip tweaks, Tv_Plasma prefab update
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-08 07:24:22 +02:00