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/NOTICE
T
karti e41c90fe8d Real weather, real aircraft, a heightfield off the main thread, and instruments
Three things that were built and never connected, connected.

**The weather was already there.** `observe()` has always taken a
`WeatherObservation` and `main.ts` has always passed null, so the cloud,
precipitation, visibility and marine-layer paths in atmosphere.ts had never run
outside a test. The server already shipped NWS, met.no and Open-Meteo, all
configured off. What was actually missing was that a single TERA_ORIGIN_LAT/LNG
served one metro and lied to the other — so weather and traffic are per-region
now, derived from the city's own bounds, and the Bay Area gets its fog while
Long Beach gets its own sky. The route takes ?city= or a validated ?lat=&lng=
and refuses to become an open geocoding proxy for the planet.

**The heightfield moved to a Worker.** 2.3 s of blocked main thread at boot, and
another ~950 ms of point-in-polygon on top of it: the park mask is filled in the
worker now, and block placement samples four corners and only runs the exact
test on a cell that straddles an edge — 8 buildings differ out of 185,036.
createScene is async and takes a Stage as a consequence, and there is a
main-thread fallback because "clone it and it works" has no exception clause.

**Spaces is a chunk you fetch when you reach for the door**, not one everybody
downloads. Same for the godmode tools. The entry chunk is 722 kB rather than
772; three.js is most of what is left and splitting it is a different job.

**Godmode is an instrument panel now** rather than one slider: the date and the
season, not just the hour, so the Meeus moon and the sun's seasonal arc become
visible instead of merely correct; a weather override that says on screen when
it is lying; a frame-time and draw-call readout; and a pose editor that emits a
paste-ready Chapter block, which is the thing that makes adding New York cheap.

Two blockers the review caught:

  - Every city switch leaked 8 GPU textures — one of them a 2048x2048 shadow map
    — and ~10.5 shader programs, and deleteTexture had never been called once in
    the app's lifetime. The renderer was being built per scene; it belongs to the
    canvas, for the life of the page.
  - An upstream fetch that threw rather than returning null skipped the cache
    stamp, so the TTL — the only rate limit on outbound calls — collapsed to one
    upstream request per inbound request, and the caller got a 500.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-06 03:25:31 -07:00

130 lines
5.6 KiB
Plaintext

Tera — the map view of Lumbridge Simulate
Copyright 2026 Lumbridge Corp.
This product includes software developed at Lumbridge Corp.
Licensed under the Apache License, Version 2.0 (see LICENSE).
ORIGIN AND ORIGINALITY
----------------------
Tera's city view was inspired by the interaction model of two prior works —
Levels.fyi Atlas, and Nutlope's NYC AI Atlas (https://github.com/Nutlope/
nyc-ai-atlas), which itself credits Levels.fyi. What was taken is the *idea*:
a left-hand chapter legend, animated camera flights into map areas, clickable
place labels, and ambient motion in the scene.
No code, geometry, or asset from either work is present here. Tera's renderer,
its terrain system, its block-lattice building placement, and every coordinate
in every city pack were written from scratch. The two projects do not even
share a subject: the NYC atlas renders hand-traced Manhattan on flat ground,
and Tera's premise is relief — a city you cannot read without its section.
Stating this plainly matters, because at the time of writing the NYC AI Atlas
repository carries no LICENSE file. Absent a licence grant, the default is that
no rights are given, so nothing from it could have been reused even had we
wanted to. Attribution here is courtesy toward a good idea, not a licence
obligation.
GEOGRAPHIC DATA
---------------
All geography in src/cities/ is original expression, traced by hand.
It is deliberately NOT derived from OpenStreetMap. OSM data — including
coordinates returned by Nominatim geocoding — is licensed under the Open
Database License (ODbL), whose share-alike terms would attach to any derivative
database and cannot be reconciled with the permissive licence above.
Where real elevation data is used in future, it will come from USGS/SRTM
sources, which are United States government works in the public domain.
Where addresses are geocoded to coordinates and those coordinates are then
served publicly, the geocoder is the US Census Geocoder
(geocoding.geo.census.gov), a United States government work in the public
domain. This is a licence requirement rather than a preference: publishing a
snapshot of OSM-derived coordinates is Public Use of a Derivative Database under
ODbL and carries share-alike obligations no matter where the rows are stored.
Commercial geocoders are not an escape either — Google, Mapbox and HERE all
restrict storing and redistributing the coordinates they return.
Every such row carries a provenance field, and rows whose provenance is not on
the non-ODbL allowlist are refused at publication time.
TRADEMARKS
----------
This repository contains no third-party logos, wordmarks, or brand assets.
Organisation logos displayed by applications built on Tera are fetched at
runtime and are never redistributed as part of this project. All trademarks,
service marks, and trade names are the property of their respective owners.
Any use is nominative — to identify the organisation referred to — and does not
imply affiliation with or endorsement by the trademark holder.
ARTISTIC OUTPUT (src/assets/)
-----------------------------
The material under src/assets/ is source code and is licensed under Apache 2.0
along with the rest of this repository. In addition, the copyright holders of
that material dedicate the artistic output it generates — meshes, geometry and
textures produced by running it — to the public domain under CC0 1.0.
This repository is therefore NOT uniformly Apache-2.0, and that is deliberate:
it means a mesh generated from this library can be used in another project
without carrying a NOTICE obligation into it. See src/assets/LICENSE-ART for the
dedication and CONTRIBUTING.md for the inbound grant that keeps it true.
THIRD-PARTY DEPENDENCIES
------------------------
three.js — MIT License — Copyright (c) 2010-2026 three.js authors
https://github.com/mrdoob/three.js
Build tooling (Vite, TypeScript, esbuild) is a development dependency only and
is not redistributed in built output.
AIRCRAFT DATA
-------------
The flight sources shipped in this repository are a simulator (original work)
and clients for open community ADS-B feeds. No commercial aviation data
provider's data is included or redistributed, and no client for a provider
whose terms prohibit such use is present.
No aircraft position is committed to this repository; the community feeds are
fetched at runtime by a deployment that has been configured to use one. Where
adsb.lol answers, the API attaches the credit line that feed asks for and the
browser displays it in the shortcuts card alongside the weather credits below.
WEATHER DATA
------------
No weather observation is committed to this repository either. The default
build observes nothing at all and models the sky locally, and the shipped
sources are all opt-in.
Two of them carry an attribution obligation, and it is met at runtime rather
than here, because which one applies is a property of the deployment and not of
the source:
- MET Norway (met.no) — CC BY 4.0
- Open-Meteo.com — CC BY 4.0
The API emits the credit line each of them asks for in the `attribution` array
on the weather body, and the browser displays whatever it is sent, for as long
as that source is what is on screen. See `server/src/weather/` for the strings
and `renderCredits` in `src/main.ts` for where they land. A deployment that
turns one of these on and strips the credit is the party in breach, not this
repository — but the plumbing to comply ships working, on purpose.
The US National Weather Service (api.weather.gov) is a United States government
work in the public domain and carries no such obligation, which is why it sends
no attribution array; claiming one would be inventing a licence term.