Character pipeline (tools/): - sketchfab_import.py: search/download via Sketchfab Download API with license/attribution tracking (SKETCHFAB_API_TOKEN) - autorig.py: headless Blender auto-rig — fits a Mixamo-named skeleton to unrigged humanoids, binds automatic weights - merge_animations.py: merges the shared Mixamo-skeleton animation library onto any rigged character, strips root motion, canonical names - pipeline.py: one command chains download -> rig -> animate -> register In-game skin system: - SkinManager autoload reads skins.json (auto-written by the pipeline) - SkinnedPlayerModel rewritten: canonical clips with fallback chains, blend times, speed-scaled locomotion, weapon bone attachment - First-person: full animated body for the owner, head hidden via SkeletonModifier3D; third-person: full model for other players - Skin selector in main menu; skin id synced in multiplayer - Fixed GLBLoader crash (GLTFDocument.get_animation_count doesn't exist) Multiplayer sync overhaul: - Movement is now client-authoritative: the owning peer simulates locally (no input round-trip), server keeps health/kills/death - Remote players interpolate synced_position/velocity with extrapolation and snap-on-teleport - Knockback/impulses routed to the simulating peer Audio: - AudioManager autoload: SFX/Weapons/Footsteps/UI/Music buses, pooled 3D players, variation + pitch randomization, auto-registration from assets/sounds Docs: 3D_ASSET_PIPELINE.md rewritten end-to-end, new ASSET_SOURCES.md (non-procedural animation/map/sound sources) and SOUND_DESIGN.md. Verified with debug/spawn_smoke_test.gd (headless: 24/24 checks pass). Co-Authored-By: Claude Fable 5 <[email protected]>
3.2 KiB
3.2 KiB
Asset Sources — Replacing Procedural Content
Goal: move away from procedurally generated animations, maps, and sounds. Everything below is free for commercial use unless marked otherwise. CC0 = no attribution needed. CC-BY = must credit the author.
Animations
| Source | License | Notes |
|---|---|---|
| Mixamo | Free (Adobe account) | 2500+ humanoid clips, the de-facto standard skeleton this pipeline targets. No API — download clips manually once. |
| Quaternius Universal Animation Library | CC0 | 500+ clips on a Mixamo-compatible rig. Drop straight into assets/characters/animations/. |
| Kenney Character Assets | CC0 | Simple rigged characters + basic clips. |
| Sketchfab (filter: animated + downloadable) | per-model | Many characters ship with their own baked animations; pipeline.py --rigged keeps them. |
Character models
| Source | License | Notes |
|---|---|---|
| Sketchfab downloads | per-model (shown by our search tool) | Primary source — use tools/sketchfab_import.py search. |
| Quaternius | CC0 | Stylized low-poly packs, many pre-rigged. |
| KayKit | CC0 | Character + dungeon packs, rigged, game-ready. |
| PolyPizza | mostly CC0/CC-BY | Searchable low-poly aggregator. |
Maps / environments (replace the procedural arena)
| Source | License | Notes |
|---|---|---|
| Kenney kits (City, Prototype, Platformer) | CC0 | Modular kits — greybox with Prototype textures, dress with City kits. |
| KayKit Dungeon/City packs | CC0 | Modular, snaps to grid, ideal for arena shooters. |
| Sketchfab scenes | per-model | Whole environments exist; check poly counts before importing. |
| ambientCG | CC0 | PBR materials/textures for level surfaces. |
Workflow: block out in Godot with CSG/GridMap for movement flow first, then replace geometry with kit pieces. Movement (wall-run surfaces, slide ramps) should drive layout, not the other way around.
Sounds
See SOUND_DESIGN.md for the full plan. Short list:
| Source | License | Notes |
|---|---|---|
| Sonniss GDC Bundles | Royalty-free | 100+ GB of pro game audio, free, commercial OK. THE first stop. |
| Kenney Audio packs | CC0 | UI, impacts, footsteps, sci-fi weapons. |
| Freesound (filter CC0) | CC0/CC-BY | Searchable; check license per file. |
| BOOM Library free packs | Royalty-free | Cinematic-quality freebies. |
| 99Sounds | Royalty-free | Weapon/impact packs. |
Attribution bookkeeping
- Sketchfab:
tools/sketchfab_import.pywrites<model>.license.jsonnext to every download; the pipeline copies it beside the final skin GLB. - Anything CC-BY (models or sounds) must appear in a credits screen.
Grep for license files before shipping:
ls assets/**/*.license.json.