1
0
This repository has been archived on 2026-08-25. You can view files and clone it. You cannot open issues or pull requests or push a commit.
Files
tera/ASSET_RESEARCH.md
T

6.4 KiB

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 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 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 Apache-2.0 procedural Three.js reconstruction code. Workflow reference only. Its image-to-scene problem is broader than office exteriors.
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 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 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 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.