California gets roads, traffic, and a car to follow
This commit is contained in:
@@ -0,0 +1,92 @@
|
||||
# Asset intake research
|
||||
|
||||
Tera can learn from an open-source asset without turning that project into a
|
||||
dependency. The default is to internalise the capability: identify the smallest
|
||||
useful visual rule, rebuild it against Tera's contracts, and keep the result
|
||||
code-only and deterministic. Copy source only when a rewrite would add no value,
|
||||
and copy no binary art into `src/**`.
|
||||
|
||||
This review was performed on 2026-08-11 for the first office exteriors.
|
||||
|
||||
## California corridor vehicle
|
||||
|
||||
The black corridor vehicle is an original procedural Three.js asset authored in
|
||||
`src/assets/vehicles/modelX.ts`. An AI-generated image was used only as a
|
||||
non-shipping art-direction reference for stance, surface hierarchy, camera
|
||||
distance, and late-afternoon contrast. No pixels, mesh, logo, texture, or source
|
||||
file from that reference is distributed by Tera. The implementation is an
|
||||
unbadged code-generated crossover with two explicit detail tiers, shared
|
||||
geometry/material cloning, named wheel joints, and deterministic tests.
|
||||
|
||||
The corridor route pack is also hand-authored. Its nodes are coarse simulation
|
||||
waypoints, not navigation data, and each segment records its own provenance and
|
||||
fitness note in `src/transport/california.ts`. I-5 is presented honestly with
|
||||
its I-580 and I-80 connection into San Francisco.
|
||||
|
||||
## Actor set
|
||||
|
||||
The customizable humanoid, anonymous office dog, and anonymous Tera crow under
|
||||
`src/assets/actors/` are original procedural TypeScript. They use no downloaded
|
||||
mesh, texture, rig, animation, logo, or motion-capture data. Each asset exposes
|
||||
named pose joints, metre-scale metrics, shared-resource cloning, and explicit
|
||||
disposal so a later presence layer can animate many actors without changing the
|
||||
asset or ownership contracts. A caller may provide a face texture to the
|
||||
humanoid, but that texture remains caller-owned and is never bundled by core.
|
||||
|
||||
## Sources assessed
|
||||
|
||||
| Source | Licence and useful part | Decision for Tera |
|
||||
| --- | --- | --- |
|
||||
| [BasicProceduralBuilding](https://github.com/achrefelouafi/BasicProceduralBuilding/tree/f97984d1c2e5fae484a6c7d0dc01f721c117a6ba) | MIT. A façade grid classifies ground, window, corner, and roof cells, then instances pieces from a Blender-authored GLB kit. | Keep the façade grammar. Do not import the GLB, its coordinate conversion, or its per-kit-mesh runtime. Tera's office glyph implementation is original code at map scale. |
|
||||
| [KayKit City Builder Bits 1.0](https://github.com/KayKit-Game-Assets/KayKit-City-Builder-Bits-1.0/tree/63976910ca04d16f0fc531b9c614244be8128713) | CC0 low-poly city pieces in GLTF, OBJ, and FBX, with a shared texture atlas. | Good silhouette reference and a viable source for a future optional art pack. Do not place its binaries in core `src/**`; core remains code-only. |
|
||||
| [img2threejs](https://github.com/img2threejs/img2threejs) | Apache-2.0 procedural Three.js reconstruction code. | Workflow reference only. Its image-to-scene problem is broader than office exteriors. |
|
||||
| [Claude-of-Duty](https://github.com/mshumer/Claude-of-Duty) | MIT, code-generated materials and modular Three.js buildings. | Reference for generated-material and browser-QA techniques. It is too large and game-specific to copy wholesale. |
|
||||
| [Khronos glTF Sample Assets](https://github.com/KhronosGroup/glTF-Sample-Assets/blob/main/Models/Models.md) | A useful interoperability corpus, but every model has its own licence. | Test fixtures only after checking the individual asset's licence; it is not one uniformly reusable art library. |
|
||||
| [pmndrs market](https://github.com/pmndrs/market) | CC0 asset registry and delivery tooling. | Discovery source, not a runtime dependency. Tera does not need an asset API to draw three map glyphs. |
|
||||
| [open-source-3D-assets](https://github.com/ToxSam/open-source-3D-assets) | A catalogue of downloadable assets with licences recorded per entry. | Discovery source only; verify the original file and licence before any intake. |
|
||||
|
||||
## Pilot decision: office buildings on the city board
|
||||
|
||||
The reusable idea from BasicProceduralBuilding is its grammar, not its kit.
|
||||
At Tera's city scale, one-metre modules are usually sub-pixel. Recreating them
|
||||
as individual geometry would spend triangles and draw calls on information the
|
||||
camera cannot retain. The Tera-native implementation therefore uses:
|
||||
|
||||
- a small serialisable `BuildingGlyph` on the existing generic `Marker` type;
|
||||
- pure layouts for tower, hangar, courtyard, and block silhouettes;
|
||||
- one instanced window mesh per destination, plus a few solid shell pieces;
|
||||
- seeded façade variation, so reloads never reshuffle the skyline;
|
||||
- reserved city footprints, so the stable glyph supersedes an anonymous block
|
||||
or a coarser hand-authored landmark at the same address instead of nesting;
|
||||
- the existing marker raycaster and office-open path, so no office semantics
|
||||
enter the engine.
|
||||
|
||||
No third-party source or binary asset was copied for this pilot, so no new
|
||||
third-party attribution is required in `NOTICE`. The links above record the
|
||||
research provenance and the implementation comments record the design lineage.
|
||||
|
||||
## Intake rules
|
||||
|
||||
Before copying any future asset or source file:
|
||||
|
||||
1. Pin the upstream URL and commit, and record exactly which files are copied.
|
||||
2. Prefer CC0 for artistic output. Apache-2.0, MIT, and BSD code can be used only
|
||||
with their required licence and notice text preserved. A Tera rewrite does
|
||||
not erase upstream authorship when source was actually copied.
|
||||
3. Do not intake unlicensed work, non-commercial licences, share-alike content,
|
||||
logos, trademarks, or scraped map/imagery data.
|
||||
4. Keep binary art out of `src/**`. A future optional art pack belongs behind a
|
||||
registry or self-hosted `/art/*` URL and must keep its own provenance ledger.
|
||||
5. Copy the smallest coherent part, translate it to Tera's data and disposal
|
||||
conventions, add deterministic tests, and verify it in the GPU browser.
|
||||
6. Update `NOTICE` in the same change whenever copied source or bundled art has
|
||||
an attribution or licence-preservation requirement.
|
||||
|
||||
## Useful next targets
|
||||
|
||||
The office catalogue already covers the common furniture. The most valuable
|
||||
remaining procedural pieces are circulation and place-making rather than more
|
||||
chairs: a stair/landing asset for multi-storey packs, a kitchen island/service
|
||||
counter, and a small exterior plaza kit (planters, bollards, and benches). Each
|
||||
is simple enough to author in Tera's metre-based asset registry; use a CC0 kit
|
||||
such as KayKit as shape reference only when it materially improves the result.
|
||||
Reference in New Issue
Block a user