Fable/client pass 1 - #3
Open
MolochDaGod wants to merge 131 commits into
Open
MolochDaGod wants to merge 131 commits into
MolochDaGod wants to merge 131 commits into
Conversation
Remove Standing Idle.fbx and local albedo; load WK_Characters.glb + atlas from assets.grudge-studio.com and Bip001 magic idle/cast JSON from Open. Add bakeClip rematch, Bip001-aware SittingPose, vercel.json, and fleet README.
Production GLTFLoader+DRACO+Meshopt and SkeletonUtils.clone for grudge6 kits. EquipmentManager mesh visibility + CDN gear presets (mage default). Magic cast loops while abilities fly; F weapon attack; HandIK cast aim; I inventory panel for slot variants and ability output sliders.
Map footL/footR, sailRail/boom grips from IK reference graph into ride.manifest.json. HoverboardRide loads SI package; RideIK plants Bip001 feet on deck and hands on boom after mixer. Walk mode banks L-R on path.
Add DrcCombatController + skill kit (1-4) reusing AbilityManager VFX and Bip001 one-shots. Q toggles equip/combat; combat uses WASD gait and TPS follow with OrbitControls disabled. requestOneShot + setGait on character.
Scaffold PhysicsWorld (SI capsule, fixed 1/60) for combat WASD. Port vfxgrudge.puter.site catalog into VfxDirector multi-layer deploy; bind skills 1-4 cast/impact and Alt+VBFGTC sandbox previews to ability host.
Load CDN catalog with local fallback; spawn generated rock in scene. Synced public/models/generated from lab bake publish.
- CharacterController: body-only Box3, unit fit, atlas rebind, idle sample re-ground, pelvis center, diagnoseLook
- EquipmentManager: armor-first loadout, WK mesh classify, body fail-safe
- Renderer: PCFShadowMap (r185+); favicon.svg + vercel rewrite for /favicon.ico
- Rapier: vite transform wraps embedded wasm init as { module_or_path }; positional enableAutostep
- App: gate generated props behind ?props=1 for clean Toon RTS boot
- Add grudge6SSOT stone paths + loadoutToMeshIds - Add grudge6Deploy (fit while full kit visible, body-only atlas, feet/pelvis) - CharacterController: deploy → body atlas → mesh_ids → re-ground → idle sample - EquipmentManager.applyMeshIds for exact CDN mesh names - Keep production GLB SI bake (~1.8 m); stop equip-before-scale and weapon atlas splash
Toon RTS modular GLBs ship ~14 disconnected skeletons per kit. Without unifySkeletons, baked Bip001 clips only drive one bone tree and the rest deform into a bag-blob. Port fleet unifySkeletons + stronger bone rematch.
- unifySkeletons now prunes orphan Bip001 bones so mixer binds canon skeleton - CharacterController: no SittingPose/RideIK/soft HandIK; equip-then-deploy - Boot into DRC combat (TPS, WASD, 1-4 skills, F strike); ride only ?ride=1 - HUD action bar with cooldown sweep + stamina
- Document BIP001_CORE_BONES (18) + validate after unify - EquipmentManager: catalog utility, hideUtility default, setCarryVisuals only for bag/wood - loadoutToMeshIds never adds xtra unless carry; archer preset drops quiver - Equip UI slots drop bag/quiver
Root cause of bag-blob: wardrobe left visible / multi-body match. Port Open applyGearPreset + fitCharacterHeight + normalizeSkinned order: unify → hide ALL kit meshes → exclusive mesh_ids → identity scale → fit 1.8 → art-forward → restore materials (atlas only if maps missing).
diagnoseLook referenced countSkeletons after import purge (ReferenceError). validateBip001Bones now matches space/underscore/case; soft-gate weak bip001.
… spawn. EquipmentManager constructor was hideAll() after exclusive equip → zero visible meshes. preserveVisibility, re-assert mesh_ids, WORLD+CONTACT layers, placeAt origin, Rapier feet sync, CameraRig.snapToCharacter for combat TPS.
- fitCharacterHeight: if native 1.2–3.5m keep scale 1 (convert already SI); stop 12m→0.15x - bodyBox uses non-precise bounds (precise multi-skin inflated height) - EquipmentManager catalog no longer forces units_ invisible when preserveVisibility - Re-equip assert + spawn/TPS/physics from prior commit
- elementWeaponSkills: cast/travel/impact map for fire/water/earth/wind/arcane - DRC bar uses element phases; ?arcane=1 for purple storm tree - Aligns with Warlords staffFire/Ice/Nature/Storm/staff
Primary play mesh is toon-rts-characters. Candidate load, exclusive mesh_ids for author names, single mixer, keep embedded maps, art-forward once.
Two-bone post-mixer feet/hands on manifest grips, walk mode path priority, always load windsurf package, and yield DRC while riding.
Drop races-bake play fallback, refuse non-Toon kits, skip art-forward on Toon play meshes, and use mesh_ids loadout A that every race kit has.
README lists play CDN kits and public ride package. HUD blurb and Vercel cache for models/ride/*.
Open magic/standing idle has no Hand bones so Toon rest hands look broken while cast looks formed. Load prod standing-idle first (same bone set as cast).
Character attaches to windsurf seat so bank/bob stick; RideIK refreshes sockets each frame; Rapier capsule teleports to deck; speed-scaled ride shake; DRC yields while mounted.
Correct camera-relative right vector so A is left and D is right. Rapier vertical velocity for Space jump and air double-jump; S+Space on second jump does reverse dash + procedural backflip. Bind magic standing-jump clip.
Central worldScale.js expands fog, ground, physics, shadows ~50%. Real water plane with wave normals and env fresnel under the stage island. Honest yardstick for Toon 1.8–2.0 m players.
- applyLoadout after kit deploy so multipack weapons/armor stay hidden - Tighten mesh_id match (no short endsWith false positives) - bakedClipUrls: assets prod/Open CDN before same-origin 404s (faster boot) - craftpix/bars CSS urls absolute/CDN (fix /assets/ui 404 from CSS base) - water normals: three.js example first (fleet waternormals missing)
- Ship public/anim/melee/2hand-idle.fbx (author D:\Games\Models\2hand Idle.fbx) - Bind as sword_shield idle before baked S&S idle (FBX rematch Bip001)
CSS vars must use https absolute urls — relative ./ui resolved against /assets/*.css as /assets/ui/* 404. Water: never hit fleet 403 CORS hosts; ship public/textures/waternormals.jpg and prefer jsDelivr fallback.
Gate spatial player contact in _onProjectileHit and SkillStatusSystem.applyHit: invuln and weapon-cylinder parry cancel damage/status/knockback. Success consumes the C parry window. Docs: WEAPON_MESH_COLLIDER_SSOT + README.
- Island meadow colors (not void floorColor) + fill light/fog - Spell cast defaults to cast_ramp; cast_chant only blood/void ids - CraftPix same-origin /ui/craftpix (CDN CORS was failing) - Clarify LAYER vs TERRAIN_LAYER L0-L3 vs HTML overhead dummies - Single camera WORLD+VFX; docs ENGINE_DEPLOY_SSOT + deploy:prod
uMMORPG-shaped pipeline: Skill · Delivery (linear/over/under/aura) · VFX · Samples · Knobs (lil-gui docked) · Export. SSOT map + samples for meshes. No second combat engine — hosts existing Editor + effectPrefab + skillDelivery.
- Stop WORLD map-scale from overwriting camera distance (~14m → keep 5.5–6m) - Spawn feet on terrain sample (not y=0); ground aim ring on sample Y - CameraRig: TPS shoulder snap, applyGameplayMode combat vs builder - Soft-look reduced so mouse owns orbit; Orbit off in TPS - gameplayGates.js boot report → window.__gameplayGates
Review: 2D dgrudge-fishing-game is scaffold-only; adopt bar UI assets + Cute Fish pack stats + Animated Fish Bundle GLBs. Controls: RMB aim, LMB lure, S/RMB snag, wheel reel/slack, LMB/RMB zone. Prefabs poles/lures/fish/docks.
…tical Wire rod T0-T5 stats, fishing harvest tree (incl. nautical speed), and SWG-style RGB meal buffs into fight/cast/XP. Freeride multiplies nautical from tree + blue meals + rod. Main Panel Professions Fishing tab is live.
… tree Add species/large from Animated Fish Bundle zip (1) with clean names. lengthM water scale longer-than-tall. Rod maxSizeRank + lure sizeClass/value. Skill tree size unlocks. No asset root clutter.
…emove double ground
Resolve App.js rebase: drop missing HomeIslandScenery (white/snow), use IslandTown on heightfield. Seafloor sand plane, weld horizon islands, remove double ground when HF on, restore labAdmin module for build.
Add WeaponSheathRuntime: reparent hand WeaponAttach to hip/back on walk/run/sprint/air/mobility and mount/freeride; unsheath for idle, combat, cast, equip, dismount. Hold-pose residual only while drawn. Document hand-bone best practices SSOT.
Weapon lab (F4): live SI length readout, scale/yaw/pitch, import GLB, assign modelUrl, equip on hand. Terrain: continuous shore slope slow-then-sharp to -5m shelf weld, deepen to -50m ocean floor; heightfield physics under water; deep seafloor plane.
Add pulbo/aetherwing/glow_whale/ocean_creature (ocean_creature local only >100MB). Passive form or mount on aetherwing catch. Leviathan strikes on passive titans. Dock T1 anywhere, T2/T3 own claim flag.
Passive water back-slot (Poly by Google). waterBuffs on SSOT; DrcCombatController applies swim mul + oxygen. Bag seed + paperdoll accept fin/shark.
… cam, MM dash bounce WeaponMeshAttach: PCA grip frame (axis/grip/tip from geometry, same convention as weaponMeshCollider), hand-bone world-scale compensation (Bip001 ~2.7x was making every attach giant), grip end via pivot rule + per-kind silhouette, registry grip override (weapon.grip from ObjectStore prefab) replaces the localStorage-only lab tune as the shipping path. CameraRig: focus FOV (62) with sprint override; fixed shoulder basis — old vector was up x forward (LEFT), so shoulderSide=1 rode the left shoulder; Conan-style focus framing (dist 4.6, shoulder 1.0 right, softLockLookFocus 0.32). MM: dodge 840/340/300 MM, roll 3.6m, slide 5.2m, dashBounceVy grounded hop through Rapier CCT jump on dodge/roll impulses. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…skills LinearAbilty adoption: skills are scripts (catalog row + production override), any item is a source. New itemGrantedSkills.js resolves grantsSkills from paperdoll gear/relic slots (equip-map row or skills/production/<itemId>.json), compiles through the SAME production pipeline (compileProductionWeaponSkill → productionToDrcSkill), and rides the equipped tree at slots 4+ with grantSource tags. Never invents ids — grants must resolve in master-weaponSkills byId. Docs: ITEM_GRANTED_SKILLS_SSOT.md with the LinearAbilty → client adoption map. Verified in-app: t0-wand slots 0-2 + relic-granted xbow_heavy_bolt at slot 4. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
settings.controls.combatMouseLook (default on): focus (crosshair + LMB attack + soft lock) auto-engages at boot and on entering combat mode, first canvas click re-acquires pointer lock, and a UI guard in the update loop frees the cursor whenever a panel opens (inventory/showcase/admin/editor/ radials) then resumes mouse-look when the last one closes. RMB toggle still exits to the free cursor. The old hard line — mouse-look only behind an RMB focus toggle, LMB attack only in focus — is now opt-out instead of default. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…e packs gltfPipeline: THREE.Cache on + loadSharedGlbScene(url) — per-URL parse cache with one retry and SkeletonUtils clone per call (re-equip 1567ms → 60ms). WeaponMeshAttach consumes it and skips disposal of cache-shared scenes. Mouse management: warlordsCursors.js stays the single cursor owner — removed the static `cursor: crosshair` CSS on the canvas and the duplicate direct canvas 'none' write in App. Uploaded the full ui/warlords-dev tree (pirate cursor pack + inventory shells + button atlas) to R2 so the preferCdn path resolves (was 404). biomeAssetPacks.js: curated D1-registry pack prefixes + verified exemplar keys for biome deployments (trees/stones/ore/flora/fish/sky/land) with CDN url helper — registry counts baked in. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Added beautiful linear attack effect specs (ice lance, lightning, fire slash, earth spike, water stream) riding on unified elementalLinearCast + SkillProjectileSystem pipeline. New files: - src/api/linearAttackEffects.js: curated specs per element (mesh url, speed, gravity, travelEffectId, impactEffectId) — consumed by planElementalLinearCast Changes: - elementalLinearCast.js: import linearAttackEffectForElement, attach beautyEffect to plans, ensure pack() always includes it - vfxCatalog.js: added 10 new effect IDs (ice_lance_trail/shatter, lightning_bolt_arc/chain, fire_slash_trail/burn, earth_spike_trail/erupt, water_stream_flow/splash) with tags and descriptions Audit result: zero duplication. One skill → one compile path → one delivery pattern. No forks, no missing pieces. Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
Camera was adding shoulder offset to the look-target, causing it to aim at a point up-right instead of the center chest. Now: - Look target: chest only (anchor + targetHeight) - Camera position: spherical arc + shoulder offset (rides right) Result: proper over-the-shoulder framing with centered aim while mounted on the right shoulder. Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
Created PointerLockManager for clean lock/unlock flow: - RMB down (focus on) → request lock - RMB up → exit lock - Focus toggle OFF → force unlock Replaced manual requestPointerLock retry logic with event-driven lock/unlock tied to actual user gesture (RMB). Properly handles browser policy delays and lock-state visibility via isLocked flag. Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
MolochDaGod
force-pushed
the
fable/client-pass-1
branch
from
August 24, 2026 16:53
d66b542 to
198f2aa
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
No description provided.