Skip to content

Fix/casting bip001 clip urls - #4

Open
MolochDaGod wants to merge 129 commits into
achrefelouafi:mainfrom
MolochDaGod:fix/casting-bip001-clip-urls
Open

MolochDaGod wants to merge 129 commits into
achrefelouafi:mainfrom
MolochDaGod:fix/casting-bip001-clip-urls

Conversation

@MolochDaGod

Copy link
Copy Markdown

No description provided.

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.
MolochDaGod and others added 27 commits August 11, 2026 07:05
- impact-magic-a/b/c from user pokemon-style cries
- playForImpact uses random impact_magic for spell/element hits
- melee residual stays light cast-ramp tick
Fit oriented cylinder from equipped weapon mesh (+0.02 m pad) for tip,
grip, and contact radius. Sample tip trail during swings; fire getsuga,
fire-blur path, and physics residual past blade at hit-frame apex (per
combo hit). Wire rebuild on equip; parry helpers vs volume. Docs + editor
knobs under settings.residual. Extends existing residual/VFX stack only.
- 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.
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.
Stop probing invented bag URLs. Document every live host vs store.
Ignore local QA dumps. Casting is not a second account database.
Catalog JSON: info + Pages.dev, never objectstore.grudge-studio.com/api/v1.
Ignore loose fish extracts and WIP scenery dumps. Ride/summons are on R2
lab/casting; rare fish stay on Vercel until wrangler can put 20MB+.
/api/assets uses Warlords cdn-proxy (CF hotlink Referer).
/api/objectstore rewrites to Pages.dev. Toon kits, icons, and
catalog JSON go through fleetEnv same-origin helpers. Vite proxies
the same map locally. No second player DB.
Open /anims/baked 404s and direct assets.* CORS left the lab stuck
on Loading Western Kingdoms kit. First candidate is the live
same-origin prod pack (idle, cast, walk) on Toon Bip001.
Copilot AI lite review requested due to automatic review settings August 22, 2026 20:18

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟡 Changes recommended

There are concrete correctness/maintenance issues (e.g., generated catalog URL resolution, lockfile version mismatch, tracked Wrangler build artifacts, and small code/encoding problems) that should be addressed before approval.

Once you've addressed the issues Copilot identified, you can request another Copilot review.

Pull request overview

This PR updates the Casting Lab toward the “casting master merge 1.2.0” baseline: it introduces/extends several runtime systems (terrain heightfield + seafloor, linear skillshots + ability pooling, HUD/UI components, SFX hooks), adds an SDK export surface + contract JSON, and adds a Cloudflare Worker Durable Object configuration for weapon-skill drafts.

Changes:

  • Add Cloudflare Worker (Wrangler config + package) for grudge-weapon-skill-drafts Durable Object + supporting SSOT docs.
  • Expand runtime: terrain ground projection helpers, deep-ocean seafloor mesh, postprocessing ordering/fallback, render-layer helpers, motion/combat utilities, and new UI components (cast bar, quick actions, context menu, drop bag).
  • Package/export surface: bump package metadata to 1.2.0, add exports/files, add contract JSON and extensive SSOT documentation.
File summaries
File Description
worker/wrangler.jsonc Wrangler config for the weapon-skill drafts worker + DO bindings/migrations.
worker/package.json Worker-local package/scripts for Wrangler deploy/dev.
worker/.wrangler-dist/README.md Notes about generated worker build output folder.
vite.config.js Vite base/proxy changes + Rapier init warning patch plugin + multi-entry build.
src/world/terrainGround.js Shared ground projection helpers (raycast/plane + height sample).
src/world/Seafloor.js Adds deep-ocean seafloor plane + procedural/loaded sand texture.
src/world/Environment.js Shadow extent now sourced from WORLD scale constants.
src/ui/quickActions.js Defines quick-action catalog + default slot layouts + key legends.
src/ui/itemContextMenu.css Styling for RMB item context menu and slot affordances.
src/ui/glyphs.js Expands element sigils mapping to product element set + legacy aliases.
src/ui/dropBag.css Styling for “DropBag” mini-inventory grid.
src/ui/CastBar.js New under-crosshair cast bar component with ARIA attributes.
src/skillshot/abilities/AbilityManager.js Linear skillshot ability pooling/spawn/update manager.
src/postprocessing/PostProcessing.js Reorders grade/output passes + adds direct-render fallback on failure/disable.
src/effects/GroundDecals.js Adds new decal types + shader branches for FROST and ARC decals.
src/effects/CameraShake.js Reduces default positional/roll shake scaling.
src/core/Renderer.js Updates shadow map type to PCFShadowMap (r185+).
src/core/Layers.js Clarifies layer meaning + adds helper to enable main camera layers.
src/config/meleeAnimSsot.js Adds SSOT URL list for 2H melee idle FBX candidates.
src/config/labAdmin.js Adds query/localStorage-based “lab admin” gating utilities.
src/combat/skillBindings.js Adds persisted hotkey→skill binding storage/utilities.
src/combat/playerActivity.js Adds activity mode/radial definitions (combat/harvest) + tool preferences.
src/combat/pathCastClassify.js Adds path-stroke classifier (aoe/spikes/wall/stream).
src/combat/motionMath.js Adds MM↔metres conversion + dodge distance resolver.
src/combat/hitReaction.js Adds knockback/knockup application helper + hit reaction trigger.
src/character/HandIK.js Adds hand cast-origin helpers + soft aiming overlay on hand bone.
src/character/grudge6Deploy.js Deprecation shim re-exporting toonKitPlay; throws on removed APIs.
src/assets/generatedCatalog.js Adds loader for “three-generator” generated prop catalog + spawn helper.
src/animation/SittingPose.js Extends sitting pose to support Bip001 bone-name mapping.
src/animation/fbxClip.js Adds FBX clip loader + exports of fall/melee SSOT URL lists.
src/abilities/README.md Documents path-cast pool keys and staff-to-pool mapping rules.
src/abilities/AbilityManager.js Maps product elements to pooled ability keys + plays cast SFX.
src/abilities/Ability.js Plays impact SFX on impact/timeout paths.
public/skills/production/t0_sword_practice_slash.json Adds production override scaffold for Practice Slash (mostly nulls/checklist).
public/skills/production/staff_ice_nova.json Adds production override for staff ice nova (delivery/status/aoe/force).
public/skills/production/staff_fire_bolt.json Adds production override scaffold for staff fire bolt (mostly nulls/checklist).
public/models/vfx/rocks/rock-manifest.json Adds manifest describing split rock GLBs + scaling metadata.
public/models/vfx/charge/charge-manifest.json Adds charge mesh manifest metadata.
public/models/vfx/bubbles/bubble-manifest.json Adds bubble pack manifest + runtime guidance.
public/models/vfx/arrows/arrow-manifest.json Adds arrow systems manifest (path/loft) + end events.
public/models/ride/wings/README.md Notes expected wing prefab file layout (placeholders).
public/models/ride/ride.manifest.json Adds ride manifest for hoverboard/windsurf sockets/IK/motion.
public/models/reference/grudgepistolzio/INCOMING_CLIPS.txt Lists incoming pistol animation source filenames.
public/models/generated/rock.manifest.json Generated asset-convert manifest (rock) with local source paths + stats.
public/models/generated/rock.collider.json Generated collider JSON (rock) with capsule/box fields.
public/models/generated/rock_3d_model.manifest.json Generated asset-convert manifest (rock_3d_model).
public/models/generated/rock_3d_model.collider.json Generated collider JSON (rock_3d_model).
public/models/generated/house.manifest.json Generated asset-convert manifest (house).
public/models/generated/house.collider.json Generated collider JSON (house).
public/models/generated/horse.manifest.json Generated asset-convert manifest (horse).
public/models/generated/horse.collider.json Generated collider JSON (horse).
public/models/generated/catalog.json Local generated catalog listing CDN mesh/collider/manifest URLs.
public/models/fish/species/rare/SOURCE.md Source notes for rare fish species meshes (incl. large asset note).
public/models/fish/species/large/SOURCE.md Source notes for large fish species pack.
public/icons/dev-island/CREDIT.txt Credits for dev-island icon pack sources.
public/hud/bars/README.md Notes on bars HUD asset sources and roles.
public/favicon.svg Adds SVG favicon.
public/audio/sfx/README.md Documents skill SFX roles and wiring expectations.
public/api/v1/fishing-catalog.json Adds fishing catalog JSON under public API path.
public/api/v1/casting-master-contract.json Adds casting master contract JSON describing systems/mappings/hosts.
public/api/v1/casting-lab-contract.json Adds casting lab contract JSON (pins, exports, docs list).
public/anims/baked/sword_shield/_melee_combo_manifest.json Adds manifest describing melee combo baked clips.
package.json Bumps version to 1.2.0 + adds exports/files/scripts/deps/peerDeps.
package-lock.json Updates lockfile deps; root version fields still show 1.0.0 (inconsistent).
index.html Updates title/metadata/icons/preconnects and loader copy.
docs/WEAPON_SKILLS_API_SSOT.md Adds SSOT doc for weapon skills API usage rules.
docs/WEAPON_SKILL_DO_SSOT.md Adds SSOT doc for weapon skill Durable Object worker/API.
docs/WEAPON_MESH_COLLIDER_SSOT.md Adds SSOT doc for weapon mesh collider/volume rules.
docs/WEAPON_HAND_SHEATH_SSOT.md Adds SSOT doc for hand attach/sheath policy.
docs/WEAPON_EQUIP_PREFABS_SSOT.md Adds SSOT doc for weapon equip→skills/assets→prefab export.
docs/TRAINING_ROOM_SSOT.md Adds SSOT doc for Training Room/DevIsland map identity and flow.
docs/TERRAIN_PHYSICS_SSOT.md Adds SSOT doc for terrain/water physics + single height API rules.
docs/T0_WEAPONS_SSOT.md Adds SSOT doc for full T0 starter weapon matrix + rules.
docs/T0_TRAINING_SWORD_SSOT.md Adds SSOT doc for Training Sword slot rules and bindings.
docs/T0_STARTERS_WEAPON_SKILLS_SSOT.md Adds SSOT doc for starter magic weapons and binding rules.
docs/T0_APPRENTICE_WAND_SSOT.md Adds SSOT doc for T0 wand slots and lab mapping.
docs/STAFF_NORMAL_ORBS_CHARGE_SSOT.md Adds SSOT doc for staff normal attack orb/charge assets and rules.
docs/SSOT_INDEX.md Adds SSOT index for navigation and contract URL note.
docs/SKILL_DELIVERY_SSOT.md Adds SSOT doc for delivery patterns/projectiles/physics rules.
docs/SKILL_AUTHORING_STUDIO_SSOT.md Adds SSOT doc for VFX/skill authoring studio pipeline.
docs/SESSION_STATE_SSOT.md Adds SSOT doc for session/tweak state ownership and gates.
docs/ROLL_GHOST_RIDER_SSOT.md Adds SSOT doc for roll clip sources and rules.
docs/PREFAB_SCAFFOLD_CONTROL_SSOT.md Adds SSOT doc for prefab scaffold control/generation boundaries.
docs/play-stack/t0-wand.play-stack.json Adds play-stack checklist JSON for t0-wand.
docs/play-stack/t0-sword.play-stack.json Adds play-stack checklist JSON for t0-sword.
docs/play-stack/t0-gun.play-stack.json Adds play-stack checklist JSON for t0-gun.
docs/PISTOL_ANIM_SSOT.md Adds SSOT doc for pistol animation sources/roles/wiring.
docs/MELEE_COMBO_SSOT.md Adds SSOT doc for melee combo clip selection and rules.
docs/MASTERY_SYSTEMS_SSOT.md Adds SSOT doc for mastery system roadmap and confirmation gates.
docs/MAIN_PANEL_INVENTORY_SSOT.md Adds SSOT doc for inventory/paperdoll UI behaviors and files.
docs/LINEAR_SKILLSHOT_SSOT.md Adds SSOT doc for linear skillshot integration and keymap.
docs/JUMP_AIR_SSOT.md Adds SSOT doc for jump/double-jump/flip behavior.
docs/ISLAND_WATER_SEAFLOOR_SSOT.md Adds SSOT doc for island bathymetry/water/seafloor layering.
docs/ISLAND_STAGE_SSOT.md Adds SSOT doc for island stage hard rules and systems.
docs/GAMEPLAY_UX_GATES_SSOT.md Adds SSOT doc for gameplay/UX gating checks and camera/feet rules.
docs/FALL_LOCOMOTION_SSOT.md Adds SSOT doc for fall/jump locomotion clips and state machine.
docs/ENGINE_DEPLOY_SSOT.md Adds SSOT doc for engine ownership, deploy flow, pins, and hard bans.
docs/ELEMENT_PRESENTATION_SSOT.md Adds SSOT doc for element presentation mapping and knobs.
docs/ELEMENT_ATTACK_MESHES_SSOT.md Adds SSOT doc for element attack meshes and split rules.
docs/DEVNODE_SSOT.md Adds SSOT doc for /devnode authoring surface and export format.
docs/CRAFTPIX_HUD_SSOT.md Adds SSOT doc for CraftPix HUD asset usage and cast bar wiring.
docs/CASTING_SDK_EXPORT_SSOT.md Adds SSOT doc for SDK export surface and intended consumers.
docs/CASTING_MASTER_MERGE.md Adds SSOT doc summarizing the master merge version 1.2.0.
docs/CASTING_DNS_FIX.md Adds DNS fix runbook for casting.grudge-studio.com.
docs/BACK_SLOT_MOBILITY_SSOT.md Adds SSOT doc for back-slot mobility items (windsurf/wings/etc).
devnode.html Adds DevNode authoring page shell and UI layout.
.gitignore Expands ignores for Vercel/env files and large/local/regen assets.
Review details
  • Files reviewed: 84/728 changed files
  • Comments generated: 5
  • Review effort level: Lite

💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

Comment on lines +56 to 60
if (!element) return;
const key = abilityKeyForElement(element);
if (!ABILITY_TYPES[key]) return;
this.selected = ELEMENTS.includes(element) ? element : element;
}
Comment on lines +47 to +58
function absolutize(meshUrl, catalogUrl) {
if (!meshUrl) return meshUrl;
if (/^https?:\/\//i.test(meshUrl)) return meshUrl;
if (meshUrl.startsWith('./') || meshUrl.startsWith('/')) {
try {
return new URL(meshUrl, window.location.href).href;
} catch {
return meshUrl;
}
}
return meshUrl;
}
Comment thread src/character/HandIK.js
Comment on lines +3 to +6
const _handWorld = new Vector3();
const _parentWorld = new Vector3();
const _toTarget = new Vector3();
const _from = new Vector3();
@@ -0,0 +1,4 @@
Dev-island icon pack
- Dreamland Minerals (see source License.txt)
- Retro Inventory (Retr3o) � see pack Read Me
Comment thread package.json
Comment on lines +3 to +5
"version": "1.2.0",
"private": true,
"description": "Avatar-inspired elemental bending sandbox built with Three.js, custom GLSL and a real-time VFX editor.",
"description": "Grudge Studio casting + DRC combat — three@0.185, Rapier CCT, production weapon skills, three-layer terrain, shared glTF pipeline. · casting master merge 1.2.0",
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants