Commit Graph
300 Commits
Author SHA1 Message Date
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
adminandClaude Opus 4.8 3e6d61115b Scenes: update Main and The Room authoring
Editor-side scene edits (lighting/environment, object tweaks) captured on
save.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-08 07:24:13 +02:00
adminandClaude Opus 4.8 97abbceef7 Rendering settings: add HTrace AO volume override, tune SSAO prefilter
DefaultVolumeProfile gains an HTraceAOVolume override (AO mode, intensity 2,
radius 2). PC_RPAsset flips the SSAO prefilter permutation (interleaved on,
blue noise off, high sample count). URP global settings register the extra
feature rid.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-08 07:24:09 +02:00
adminandClaude Opus 4.8 93567bbd9f Camo authoring: serialize _Saturation, rename/add HUD sliders
Player.mat gets _Saturation: 0 (neutral). PaintHudPanel renames
Slider_HalfLambertBrightness -> Slider_Brightness and adds Slider_Saturation
(range set for the new -1..0..+ semantics).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-08 07:24:02 +02:00
adminandClaude Opus 4.8 e5b5138232 PlayerController: robust wall-climb hold on thin boards
ProbeWall now falls back to a horizontal multi-sample fan across the capsule
cross-section when the center ray misses, so a thin/narrow board keeps its
grab instead of dropping after wallExitGrace (which stays at 0.15). The
top-out mantle no longer commits on the first probe miss: it requires the
top-edge signature (wall at foot, moving up, headroom clear) to persist for
wallTopOutConfirm (new tunable, default 0.06s) and uses hardened multi-sample
foot/headroom probes, so a transient mid-face miss or a VHACD hull gap no
longer triggers a false mantle.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-08 07:23:56 +02:00
adminandClaude Opus 4.8 f4d31b0c24 ConcealmentMeter: add per-collider AABB broadphase in the voxel loop
Cache each environment candidate's world AABB once per evaluation and gate
the expensive per-voxel tests (Collider.ClosestPoint, ContainsWorld, concave
raycast) behind a cheap bounds.Contains prefilter. Collapses the hot loop
from O(voxel x colliders) worth of ClosestPoint/raycast calls to O(voxel x
few) for dense collider clusters (VHACD hulls, furniture), removing the
framedrop when overlapping many colliders. Conservative AABB test never
drops a real hit, so EmbeddedPercent is identical, just cheaper.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-08 07:23:48 +02:00
adminandClaude Opus 4.8 50781e32d2 Camo: generalize brightness + add persistent saturation
Move brightness out of the half-lambert diffuse term to a final exposure
multiply on the whole shaded body color (diffuse + GI + specular), and add
a saturation grade (0 = neutral, -1 = grayscale, >0 = boosted) on the same
final stage. Saturation rides as a 4th component on CamoKnobs (Vector3 ->
Vector4) so it inherits all three persistence paths: HUD JSON, network
replication (_camo NetworkVariable), and painting-slot metadata. Wires the
renamed Slider_Brightness and new Slider_Saturation. Bumps HudFileVersion
and PaintMetaVersion with load-time remaps so existing paintings keep their
look (old 1=neutral saturation remaps to 0=neutral).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-08 07:23:40 +02:00
admin 45b7de05e4 Add generated colliders 2026-07-07 23:07:23 +02:00
adminandClaude Opus 4.8 edab37d5f9 Editor settings: enable reload domain+scene on play (EnterPlayModeOptions 3)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-07 18:19:16 +02:00
adminandClaude Opus 4.8 c81d6d1aa2 Player: tune paint brush defaults (size 25, brush index 0)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-07 18:19:16 +02:00
adminandClaude Opus 4.8 c24f9cec64 Main scene: tune HTrace AO profile, disable metallic indirect fallback
Reordered/updated the HTrace AO profile reference, MetallicIndirectFallback 1 -> 0 and DebugSceneMismatch 0 -> 1.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-07 18:19:10 +02:00
adminandClaude Opus 4.8 f9c9927e87 The Room: wire skybox reflection, drop foreign LightingData
Added SkyboxEnvironmentUpdater to the scene and switched Environment Reflections to Custom with the generated SkyboxReflection cubemap; unassigned the borrowed Supercyan forest LightingData asset (m_LightingDataAsset -> 0) and lowered ambient intensity to 0.75. Gold material metallic 1 -> 0.9 to soften the reflection look.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-07 18:19:05 +02:00
adminandClaude Opus 4.8 deee9d6ca1 Add SkyboxEnvironmentUpdater: runtime sky reflection + ambient
New [ExecuteAlways] component that renders the skybox (or an optional override material) into a custom reflection cubemap and refreshes DynamicGI so smooth/metallic materials reflect the sky without a baked LightingData asset. Uses a deferred apply plus a synchronous warm-render so the ambient probe resolves after domain reload; runs the reflection capture as a stripped CameraType.Reflection to avoid the URP MIP-bind error. Exposes reflection intensity (0..4) and optional ambient override.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-07 18:18:59 +02:00
admin b74123188b Setup lighting (GI, AO) 2026-07-07 13:28:49 +02:00
admin d056207884 Update .gitignore 2026-07-07 11:17:45 +02:00
admin 669b4e1308 Add Majoras Mask, update gitignore 2026-07-07 11:16:43 +02:00
admin e0bd0f590b Add colliders for Majoras Mask 2026-07-07 11:04:37 +02:00
adminandClaude Opus 4.8 64eb2c29ef Paint content: update brushes, add DiscordChaos material, tune paint HUD
Refreshed brush atlases (Brushes.psb + hard/soft/square PNGs), new DiscordChaos material + texture, and PaintHudPanel slider range/value tweaks.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-06 22:37:38 +02:00
adminandClaude Opus 4.8 8e13f23237 Add Wall pose: new animation + pose, wire into Player pose list
New Paintman-Wall animation and Pose_Wall asset (authored via the UMotion project) added to the Player's pose list. Player MeshPainter textureSize 1024->512.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-06 22:37:29 +02:00
adminandClaude Opus 4.8 53412a6fb7 Map: further The Room geometry edits (ProBuilder)
Additional ProBuilder mesh work in The Room plus updated ProBuilder shape/select editor settings (Plane shape defaults).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-06 22:37:22 +02:00
adminandClaude Opus 4.8 5a56da3d86 Main scene: hunterCount 1->0, bump network simulator preset
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-06 22:37:22 +02:00
adminandClaude Opus 4.8 f32f22f2b6 Rendering: tune shadows, SSAO and X-ray reveal pass
PC_RPAsset: shadow distance 50->100, retune cascade4 split, cascade border 0. PC_Renderer: rename the X-ray reveal-through-walls render feature/pass tag, SSAO intensity 0.4->0.35 and radius 0.2->0.125.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-06 22:37:13 +02:00
adminandClaude Opus 4.8 f5af0592f9 Project tooling: add Unity Recorder, drop stale PlayMode.meta
Add com.unity.recorder 5.1.6 (manifest + lock, pulls openimageio binding). Remove the now-orphaned Assets/Settings/PlayMode.meta folder asset.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-06 22:37:07 +02:00
adminandClaude Opus 4.8 1fbd66095c Radar ping: anchor sweeps to seek start so they stay in sync with the HUD
RunSeekPhase fired the interval ping from an accumulating countdown that discarded each cycle's frame overshoot and drifted seconds late over a match, while the HUD ping countdown is anchored absolutely to _seekStartTime. Fire on absolute interval boundaries (n*interval from _seekStartTime) instead, sharing the HUD's anchor so the on-screen timer hits 0:00 the same moment the sweep fires. A missed boundary is skipped, never bursted.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-06 22:36:59 +02:00
adminandClaude Opus 4.8 ee01b3b8ab MeshPainter: resample saved paint to avatar resolution on load
Drop the resolution gate in LoadPaintByName/ReadMapPng. A slot saved at any size is now bilinearly resampled per map to the current avatar's textureSize (new ResampleBilinear/Bilerp helpers, running on the stored bytes with no gamma conversion to match downstream consumption), so any painting loads onto any avatar regardless of the size it was saved at.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-06 22:36:53 +02:00
adminandClaude Opus 4.8 5aa1f976d3 Tune match timings and radar ping cadence
hideDuration 90->120, seekDuration 300->240; radar ping interval and lifetime adjustments plus blip fade defaults.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-06 19:49:31 +02:00
adminandClaude Opus 4.8 8ae499d899 Map: expand The Room level geometry (ProBuilder)
Add World Border material, ProBuilder mesh data and updated ProBuilder settings.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-06 19:49:23 +02:00
adminandClaude Opus 4.8 f59f9abcf0 Add Roslyn analyzer plugin
Bundle Microsoft.CodeAnalysis (C#) plus its dependencies under
Assets/Plugins/Roslyn for source-generator / analyzer support.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-06 17:33:54 +02:00
adminandClaude Opus 4.8 21fecdd569 FurShell authoring: drop orphaned scale-influence prop, tune fur X-ray
FurShell.mat: remove the now-orphaned _FurScaleInfluence serialization.
Player.prefab: _xrayFurStrength tuned to ~0 (fur X-ray glow off).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-06 17:31:09 +02:00
adminandClaude Opus 4.8 9d16524ded FurShell: remove scale-influence, curvature scales with player scale
Drop the _FurScaleInfluence blend (fur stays a constant world length at
any avatar size, as tuned to influence 0) and scale the gravity curvature
droop by the avatar world scale (_FurObjScale) instead, so the bend tracks
the player: hider 0.5 => smaller droop, hunter 1.5 => bigger droop.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-06 17:31:05 +02:00
adminandClaude 41d5b87e9e add multiplayer playmode package
Adds com.unity.multiplayer.playmode 2.0.2 (manifest + lock) for local multi-client testing. Serializes the package's generated PlayMode.meta and VirtualProjectsConfig.json.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-07-06 16:35:42 +02:00