Eine Engine für lebendige Welten - kein Spiel, sondern die Simulation, auf der Spiele laufen. Hier bootet sie in echt: sieben Prozesse, vier Tiers, Dutzende Module live.
Alles ist Entity./Alles ist verbunden./Alles ist simuliert.
ASE simuliert Individuen, keine Durchschnitte - jedes Blatt, jeder Wurm, jedes Bakterium ist eine vollwertige Entity. Skalierung ist kein Regler, den man schiebt; sie ist die Form der Architektur.








Das Gründungsaxiom von ASE ist eine Architektur, kein Slogan: Alles ist verbunden, alles ist Entity, alles ist simuliert. Pure ECS macht aus diesem Axiom etwas, das eine CPU tatsächlich fahren kann.
Jedes Component trägt einen Status in seiner VERSION-Registry - und der ist nicht behauptet, sondern automatisch aus der Commit-Zahl des Components abgeleitet. Genau hier steht ASE heute, kein Versprechen.
seed → poc → init → core → feat → refine wird automatisch aus der Commit-Zahl jedes Components berechnet; alpha · beta · stable werden von Hand gesetzt. Klick einen Status an um exakt zu sehen, welche Components dort sitzen - direkt aus den VERSION-Registries.
Jedes Modul lebt in einem Graphen. Klick unten eine Kachel an - der Live-Graph verdrahtet sich neu auf die echte Downstream-Kette des Moduls, direkt aus den Causality-Docs der Engine.
Kein Skript hat das geschrieben. Die Kette unten ist, was der Output eines Moduls mit jedem Modul downstream macht - weil sie einen Graphen teilen.
ASE teilt seine Laufzeit in vier Planes - Engine, Replica, World und Reasoning - damit ein Simulations-Crash, ein Lifecycle-Kommando und ein LLM-Call einander nie blockieren können. Der Schnitt ist nicht kosmetisch; er ist, wie die Engine beobachtbar und skalierbar bleibt.
Weil der Browser an der Replica hängt und nicht an der World, kann ASE das Compute hinter einer Region verschieben, teilen und mergen - ein Topic-Subscription-Handoff - während der Spieler weiterläuft. Die Nahtlosigkeit ist kein Trick; sie fällt aus der Topologie.
ase-codegen parst das C++-Backend und generiert den becsy-Client - Components, Systeme und Konstanten - in 1:1-Parität. Dieselbe deterministische Logik läuft dann auf dem Server und in deinem Browser - genau das lässt den Wire einen Seed verschicken statt eines Bildes.
class AtmoSimPrsChgSystem
: public ecs::System {
void tick(Registry& r, float dt) {
auto v = r.view<AtmoStPrsChgComponent,
AtmoStPrsBaseComponent>();
for (auto [e, chg, base] : v.each()) {
chg.timer_s += dt;
if (chg.timer_s >= 60.0f)
chg.delta = std::min(base.p, MAX_P);
}
}
};
@system(s => s.after(AtmoSimPrsAltSystem)
.inAnyOrderWithWritersOf(AtmoStPrsChgComponent))
export class AtmoSimPrsChgSystem extends System {
private readonly query = this.query(q => q.current
.with(AtmoStPrsChgComponent).write
.with(AtmoStPrsBaseComponent).read);
execute(): void {
const dt = this.delta;
for (const e of this.query.current) {
const chg = e.write(AtmoStPrsChgComponent);
const base = e.read(AtmoStPrsBaseComponent);
chg.timer_s += dt;
if (chg.timer_s >= 60.0)
chg.delta = Math.min(base.p, MAX_P);
}
}
}
registry.view<A,B>()→this.query(q => q.with(A).with(B))view.each()→query.currentstd::min / std::sin→Math.min / Math.sinfloat x = 0.0f→let x: number = 0.0float-Feld→@field.float32constexpr PI→const PI · importiert (SSOT)Zwei handgeschriebene Engines driften auseinander, sobald jemand einen Bug nur auf einer Seite fixt. Also schreibt ASE nie zwei: Die Logik wird einmal in C++ verfasst, und der TypeScript-Zwilling wird daraus transpiliert . Eine Logik auf beiden Seiten lässt den Browser die Welt aus einem Seed nachrechnen , statt das Bild zu streamen, durch einen Latenz-Spike vorhersagen, ohne zu stottern, und am Server eingerastet bleiben. Es driftet trotzdem - Floating-Point und Prediction tun das immer -, aber der autoritative Server zieht ihn zurück mit winzigen Deltas, so wie NTP eine Quarzuhr gegen eine Atomreferenz diszipliniert. Dieselbe Logik hält den Drift klein und die Korrektur winzig.
Components und deterministische Systeme, die auf Server und Client mit identischen Feldern existieren. State, der rendern muss - Position, Druck, Gesundheit. Die transpilierten Systeme leben hier.
Buffer, Forderes, Broadcast, Persistenz und Hub-Zugriff. Sie bleiben in C++ und queren nie den Wire - der Client trägt nichts vom Gewicht des Servers.
NetworkInput-, RenderSync- und EntityExport-Systeme, die der Codegen für dich schreibt - die Plumbing, die Netzwerkdaten ins ECS einspielt und nach React synct.
float to @field.float32, uint32_t to @field.uint32. Ändere ein Feld in C++, und der Client-Typ formt sich beim Regenerieren neu.ASEs Reasoning-Edge-Daemon fährt die CLI, die du ohnehin bezahlst - die schwere Iterationslast beim Bau eines LLM-getriebenen MMORPGs bleibt während der Entwicklung ein fixes Monatsabo, keine getaktete API-Rechnung.
In ASE ist ein Skill keine Markdown-Datei und kein registrierter Microservice. Er ist eine ECS-Entity, zur Laufzeit aus einem deklarativen Manifest geboren und von einer Query aufgegriffen - dasselbe Alles-kann-nichts-muss-Prinzip, auf Reasoning ausgedehnt.
id: lore-consistency-checker subscriptions: [ DialogueIntent, LoreState ] reads: [ CharacterMemory, WorldFacts ] writes: [ AnomalyIntent ] # nichts außerhalb davon ist erlaubt work_type: reasoning_heavy # ein Bedarf, kein Modellname cost_layer: game communication_pattern: standard memory: [ episodic, semantic, procedural ] quota: { usd, rate, concurrency, … } # 10 Achsen, geprüft vor dem Spend
Das Reasoning-Tier gatet jeden LLM-Call hinter zehn orthogonalen Quota-Achsen. Ein prompt-injizierter oder durchdrehender Skill kann keine Rechnung auftürmen, weil der Spend nie beginnt. Indie-freundliche Caps sind eine Eigenschaft der Architektur, kein Versprechen.
Anti-Cheat ist ein eingebauter Reasoning-Use-Case mit einer dreistufigen Autoritätshierarchie, die in Irreversibilität eskaliert - und davor haltmacht, je ein LLM allein einen Spieler bannen zu lassen.
Jedes MMO kämpft gegen dieselbe Fäulnis: Bot-Farming, Exploits, Griefing, gedupte Items, galoppierende Inflation. EVE Online, World of Warcraft, Star Citizen: Jede langlebige Welt hat sie öffentlich bekämpft, und die Lektion wiederholt sich. Enforcement, nach Launch angeschraubt, kommt zu spät; die Ökonomie ist schon vergiftet, der Wipe folgt, die Spieler gehen. ASE ist gegen diese Geschichte gebaut ab Stunde eins, mit drei Jahrzehnten MMO-Erfahrung in die Architektur eingefaltet: Erkennung, Quarantäne und menschlich signierte Sanktionen sind Engine-Primitive, kein Post-Launch-Patch.
Das sind keine Features von ASE - das sind Welten, die MIT ihr gebaut werden. Aetheria ist der Beweis im Entstehen, so wie Fortnite Unreal beweist. Mythisch an der Oberfläche, mechanisch darunter.
Die Engine ist kein Monolith - sie ist ein Stern unabhängiger L3-Module, die Outputs schreiben und einander über einen Communication Hub lesen, mit null direkter Kopplung. Jedes L3-Modul im Baum unten - jedes mit eigenem Marker, mit seiner echten Reife.
ASE ist in strikten Schichten gebaut, L0 bis L5 - und die Linie zwischen Engine und Spiel läuft mitten durch sie. Engine-Entwickler besitzen L0–L3; du baust dein Spiel in L4 und L5 und siehst nichts außer dem ase-sdk-Header.
ASE ist scharf fokussiert, und es lohnt sich, ehrlich zu sagen, wer heute darauf bauen sollte - und wer nicht. Komplementär by Design, nicht kompetitiv.





Wir onboarden Solo-Entwickler und kleine Studios in Wellen - lass deine Adresse da, und wir senden ein Signal, wenn deine Welle öffnet. Kein Spam, keine Karte, keine Verpflichtung.