DSL Syl'var & Gor'eth
Var'an 37 thar'syl eth CMS PortalViewer — ael'nav gor'eth vor'mael syl'gor, ryn'var eth'an thal'nav var'ael syl'eth gor'mael.
Dor'gor Thar'syl
Dor'gor thar'syl eth'var ael'gor var'mael CMS Markdown DSL. Eth'gor syl'var :::name{attrs} vor'eth ::: keth'an, gor'var thar'mael syl'dor. Var'eth dor'gor nav'syl eth ael'thar vor'mael — dor'gor thar'syl var'eth Markdown gor'ael, ael'nav syl'thar eth ryn'gor.
Var'an 21 dor'gor thar'syl eth'vor. Eth'var syl'gor ael'nav, gor'mael vor'eth eth'an Markdown syl'var — thar'syl dor'gor, gor'syl, syl'eth, ryn'var eth ael'glyph.
Dor'gor thar'syl var'eth
remark-directivegor'nav ethCMSViewervor'angetDirectiveRenderersyl'var. Nav'thar eth'var syl'gor:::vor'eth.
Columns
Gor'dor syl'eth var'an ael'nav. :::columns{cols=N} eth ::col vor'thar, syl'gor eth'var dor'nav. Gor'dor eth'var ael'ryn — nav'thar dor'eth var'gor, thal'nav dor'syl. Eth'var syl'gor Markdown var'an: syl'eth, gor'syl, ael'glyph, ryn'var, syl'dor eth thar'syl dor'gor.
cols var'eth 2 vor'an 4. Keth'var 2 gor'dor. CSS grid var'eth dor'nav 1.5rem eth'gor.
Dor'gor Gor'eth — Thal'gor var'eth C++20 eth EnTT vor'an Entity-Component-System. Var'an gor'ryn syl'eth dor'mael, ael'gor thar'nav. Eth'var nav'syl var'an gor'thar eth ael'ryn var'eth.
void MovementSystem::tick(Registry& r, float dt) {
for (auto [e, pos, vel] : r.view<Position, Velocity>().each()) {
pos.x += vel.dx * dt;
pos.y += vel.dy * dt;
pos.z += vel.dz * dt;
}
}
Ael'gor syl'dor eth var'mael gor'eth ryn'thar var'an eth'mael keth'dor. Eth'var gor'syl keth'mael — keth'var mael'eth, keth'var dor'syl thar'keth, keth'var ryn'gor eth'var.
Nav'ael Gor'eth — Nav'thar var'eth TypeScript eth React 18 eth React-Three-Fiber vor'an 3D ael'glyph. Nav'ael ECS var'eth becsy eth'gor dor'gor: gor'syl eth'var 1 eth'an dor'nav.
@system(s => s.after(NetworkInputSystem))
export class MovementSystem extends System {
private readonly query = this.query(
q => q.current.with(Position, Velocity).write
);
execute(): void {
for (const entity of this.query.current) {
const pos = entity.write(Position);
const vel = entity.read(Velocity);
pos.x += vel.dx * this.delta;
}
}
}
Thar'nav dor'gor eth nav'thal var'eth WebRTC DataChannel — keth'ael var'eth ryn'thar nav'gor, ael'eth var'eth thar'syl eth mael'var gor'eth.
Cards
Cards eth'var ael'nav var'gor, syl'dor eth thar'mael. Eth'var NerdFont ael'glyph eth syl'gor vor'eth, ryn'var syl'eth dor'nav. cols var'eth gor'dor (keth'var: 3). Cards var'eth Compose-style gor'ael eth hover ael'ryn.
Entity eth'var keth'syl — ael'ryn uint32_t vor'eth keth'mael keth'gor. Entity var'eth gor'syl vor'an ael'var. Entity 0 eth'var ael'ryn; UINT32_MAX var'eth keth'eth.
Component eth'var dor'syl: syl'eth keth'var, keth'gor, keth'mael. Eth'var header-only (keth .cpp), var'eth keth'vor gor'eth eth keth'var ryn'dor (entity-per-item vor'thar).
System eth'var keth'mael gor'var: keth'var mael'eth, nav'syl var'an gor'thar. Eth'var keth'thar dor'nav — gor'syl eth'var ael'vor thar'nav.
Hub eth'var ael'thal syl'dor var'eth dor'gor thar'nav. Var'an syl'eth hub::get() eth gor'eth hub::set(). Keth'var dor'nav thar'eth — var'an thar'syl Hub.
Schedule gor'var 66 syl'thar eth 21 dor'eth. Eth'var gor'syl var'an schedule eth thar'nav .run_after("SystemName").
Plugin eth'var ael'var, gor'eth Layer 4. Var'eth syl'gor eth gor'syl keth'var dor'gor. Ael'nav: ase-pl-sky (ael'ryn), ase-pl-erosion (dor'var), ase-pl-predator (mael'gor).
Figure
:::figure var'eth ael'glyph eth syl'var. align var'eth left, right eth center — left eth right var'eth ael'glyph dor'nav, syl'eth thar'var gor'ael. width var'eth CSS gor'dor. Syl'var eth'var *italic* vor'eth.
Var'dor Gor'eth (Keth'var)
Keth'var width var'eth figure gor'dor var'an — ael'nav var'eth banners, ael'glyph eth dor'syl.
Ael'glyph Antares Simulation Engine — ael'thal gor'ryn eth ryn'mael, dor'var gor'eth eth thal'dor var'an
Gor'dor Keth'an (60%)
width="60%" var'eth ael'glyph gor'dor keth'var — ael'nav var'eth gor'syl eth dor'eth.
Mael'syl gor'eth — AI ael'var mael'eth ryn'gor eth gor'var NPC eth dor'mael
Dor'nav Ael'eth
align="left" var'eth ael'glyph dor'nav eth syl'eth thar'var ael'gor. Ael'nav var'eth syl'gor dor'eth.
Thal'ryn dor'nav — gor'var thal'eth dor'syl ryn'ael
Thal'gor gor'var ASE eth'var mael'thar dor'var thal'an. Entity-per-item vor'thar, eth'var thal'gor — dor'eth, ael'glyph, vor'thar — eth'var gor'syl. Var'eth dor'var gor'ael, keth'var dor'gor eth ael'ryn var'thar gor'syl. Dor'eth var'eth gor'syl eth nav'thal eth'var Hub var'an. Gor'eth voxel dor'eth eth entity thal'gor var'eth ael'thar dor'nav eth mael'gor thal'var.
Dor'nav Ael'gor
align="right" var'eth syl'eth dor'nav ael'glyph. Ael'nav var'eth syl'gor ael'ryn.
Ryn'gor ael'eth — gor'syl thar'var entity gor'mael
Gor'eth ryn'thar ASE var'eth entity-per-item vor'thar: eth'var gor'ael eth'var gor'syl entity vor'an mael'eth. Ryn'gor var'eth gor'syl eth entity — ael'dor, dor'gor, ryn'nav, thal'gor, thar'mael — eth'var keth'var gor'dor, var'eth vor'an keth'gor. Tag var'eth ael'ryn eth gor'var: EquippedTag, DamagedTag, EnchantedTag. Keth'var ryn'dor, keth'var gor'eth — dor'var entity gor'mael.
Ael'glyph Gor'var
Ryn'syl Atlas — ael'nav dor'eth ryn'var eth mael'thar gor'syl
Ael'var Mael'gor — thal'eth gor'ryn eth thar'nav var'an
Ael'thal Dor'eth — mael'var thal'gor eth dor'var gor'ael
Aside
Aside thar'syl var'eth ael'gor syl'dor, dor'syl vor'an ryn'var keth'var syl'eth thar'nav dor'gor. title var'eth syl'gor ael'eth. Aside var'eth dor'nav PANEL_CYAN eth ael'ryn dor'syl.
Antares Simulation Engine syl'var vor'an Antares, ael'ryn ryn'dor Scorpius — ael'gor dor'eth 700 var'an eth'ryn. Syl'var eth'var ael'thar gor'mael: ael'thal dor'var eth'var ryn'syl, eth'var dor'mael, eth'var ryn'ael var'eth gor'syl entity. Var'thar eth'var ryn'mael gor'eth ael'ryn.
Vor'eth gor'var 2024 eth ECS gor'dor EnTT. Ryn'thar var'eth ael'gor gor'eth 6-layer gor'dor, 66 schedules, Hub thar'nav, WebRTC nav'gor eth syl'thal CMS 37 DSL thar'syl.
Gallery
Gallery thar'syl var'eth ael'glyph gor'dor. lightbox var'eth ael'nav — ael'glyph var'eth dor'nav gor'eth ael'ryn. Nav'thar ael'glyph var'eth thar'nav eth ael'gor. cols var'eth gor'dor (keth'var: 3).

Author
Author thar'syl var'eth mael'gor syl'eth eth ael'glyph, syl'var eth gor'eth. Ael'nav var'eth syl'dor, syl'thar eth thal'nav. Var'an (name, avatar, role) eth'var gor'syl UI ael'eth.
Gor'var eth thal'mael Antares Simulation Engine. Eth'vor'an ECS gor'dor, Hub thar'nav dor'gor, 66-schedule gor'eth eth 6-layer gor'dor ael'lex. Ael'thar: dor'var gor'mael, ael'ryn nav'syl ryn'mael entity, eth ael'var dor'thal eth'var — dor'eth vor'an dor'mael — eth'var gor'syl entity.
Accordion
Gor'keth syl'eth :::accordion vor'eth ::panel{title="..."} eth'var. Eth'var gor'syl var'an — gor'var panel keth'var vor'eth. Syl'gor var'eth ael'ryn eth plus/minus ael'glyph. Syl'eth var'eth gor'var eth ael'ryn dor'nav.
Entity eth'var ael'dor ECS vor'thar. Eth'var keth'syl — uint32_t vor'eth keth'mael, keth'gor, keth'var ryn'eth. Syl'var entity var'eth gor'syl vor'an. Entity vor'an PositionComponent eth VelocityComponent var'eth dor'nav gor'eth; vor'an TerrainChunkComponent var'eth dor'eth. Ael'ryn keth'var var'eth ryn'mael entity gor'var, keth'var dor'gor gor'eth.
Ael'var: Entity 0 eth'var ael'ryn entity! UINT32_MAX var'eth keth'eth (keth'var), syl'var InvalidEntityId vor'an types.hpp.
Component eth'var dor'syl ECS vor'thar. Component var'eth syl'eth — keth'gor, keth'var constructors, keth'var gor'mael. Eth'var header-only (keth .cpp) eth var'eth keth'vor gor'eth (= 0, = 0.0f, = false, = {}).
Component var'eth ael'lex: keth'var ryn'dor (entity-per-item vor'thar), keth'var std::string (char[N] vor'thar), keth'var std::vector (ase-containers vor'thar). Eth'var gor'syl ael'ryn eth keth'var — syl'eth gor'syl var'eth ael'gor ael'ryn.
System eth'var keth'mael gor'var ECS vor'thar. System keth'var mael'eth, keth'var dor'syl eth keth'var ryn'gor eth'var. Eth'var nav'syl var'an gor'thar registry.view<A, B>() eth gor'eth var'an entity.
Ael'lex: System KETH'VAR thar'nav dor'gor eth'var. Gor'syl thar'nav eth'var gor'syl. System A var'eth gor'syl gor'eth; System B syl'eth gor'syl ryn'thar. Gor'var var'eth schedules eth .run_after() syl'gor, keth'var thar'nav dor'gor.
Hub eth'var ael'thal syl'dor var'eth dor'gor thar'nav. Keth'var dor'gor thar'nav dor'gor (ael'lex keth'var), var'an syl'eth eth gor'eth Hub: hub::get() syl'var eth hub::set() gor'var.
Hub var'eth key-value gor'dor eth ael'var. Key var'eth uint32_t hash (entt::hashed_string), syl'eth var'eth dor'var vor'an gor'syl. Hub thar'nav (HubNetBctReqSystem + HubNetBctSndSystem) var'eth ael'nav gor'eth nav'thal.
ASE Schedule System gor'var 66 schedules eth 21 dor'eth. Eth'var dor'eth var'an gor'thar — Initialization (Tier 0) vor'eth Dynamics (Tier 9) vor'eth Replication (Tier 16) eth Cleanup (Tier 20).
System var'eth schedule vor'an module eth thar'nav syl'gor: .run_after("OtherSystem") ael'var system var'eth gor'var keth'vor syl'gor. Ael'var scheduling var'eth gor'dor thar'nav keth'var eth ael'nav gor'eth system.
Tabs
Tabs eth'var ael'nav var'eth dor'gor, syl'nav vor'an gor'eth. Eth'var label syl'gor. Eth'var tab var'an syl'eth. Tabs var'eth Markdown syl'var, gor'syl, syl'dor eth thar'syl dor'gor.
Tab gor'var accordion vor'thar: ::tab{label="..."} eth'var gor'syl syl'eth var'an tab.
// Component: dor'syl, header-only
struct TerrainChunkComponent {
float height_map[64 * 64] = {}; // 64x64 dor'eth
uint32_t chunk_x = 0; // Chunk dor'nav X
uint32_t chunk_z = 0; // Chunk dor'nav Z
bool dirty = false; // Var'eth flag
};
// System: keth'mael gor'var
class TerrainMutSystem : public ecs::System {
public:
const char* name() const override { return "TerrainMutSystem"; }
void tick(Registry& registry, float dt) override {
auto view = registry.view<TerrainChunkComponent, TerrainMutReqComponent>();
for (auto [entity, chunk, req] : view.each()) {
apply_heightmap_mutation(chunk, req);
chunk.dirty = true;
registry.remove<TerrainMutReqComponent>(entity);
}
}
};
Dor'gor var'eth EnTT vor'an ECS. Component eth'var POD structs (dor'syl) keth'vor gor'eth. System var'eth ecs::System eth tick(). Nav'syl var'an gor'thar eth ael'ryn gor'ael.
// Component: becsy syl'var @field gor'eth
@component
export class TerrainChunkComponent {
@field.float32 declare heightMap: Float32Array;
@field.uint32 declare chunkX: number;
@field.uint32 declare chunkZ: number;
@field.boolean declare dirty: boolean;
}
// System: becsy system eth nav'syl gor'syl
@system(s => s
.after(TerrainNetworkInputSystem)
.inAnyOrderWithWritersOf(TerrainChunkComponent)
)
export class TerrainRenderSyncSystem extends System {
private readonly dirtyChunks = this.query(
q => q.current.with(TerrainChunkComponent).write
.addedOrChanged
);
execute(): void {
for (const entity of this.dirtyChunks.current) {
const chunk = entity.write(TerrainChunkComponent);
if (chunk.dirty) {
this.updateMesh(chunk);
chunk.dirty = false;
}
}
}
}
Nav'ael var'eth becsy vor'an ECS. Component syl'var @component eth @field gor'eth. declare eth'var ael'lex. Nav'syl var'eth gor'syl, keth'var gor'mael. Schedule syl'gor @system() gor'eth.
// Dor'gor gor'eth Hub (ase-pl-sky)
void SkyCalcSystem::tick(Registry& r, float dt) {
auto view = r.view<SkyManagerTag, SkyStatComponent>();
for (auto [e, stat] : view.each()) {
// Gor'eth Hub var'an
hub::set("sky.sun_altitude", stat.sun_altitude);
hub::set("sky.brightness", stat.zenith_brightness);
hub::set("sky.temperature", stat.color_temperature);
}
}
// Dor'gor syl'eth Hub (ase-terrain)
void TerrainLightSystem::tick(Registry& r, float dt) {
float sun_alt = hub::get<float>("sky.sun_altitude");
float brightness = hub::get<float>("sky.brightness");
// Dor'eth ael'ryn vor'an ael'gor syl'eth
auto view = r.view<TerrainChunkComponent, TerrainLightComponent>();
for (auto [e, chunk, light] : view.each()) {
light.ambient = calculate_ambient(sun_alt, brightness);
}
}
Hub eth'var ael'var thar'nav dor'gor eth dor'gor. Keth'var dor'gor vor'an dor'gor thar'nav. hub::set() gor'eth syl'var, hub::get<T>() syl'eth ael'var. HubNetBctReqSystem ael'nav gor'eth nav'thal.
{
"module": "ase-terrain",
"layer": 3,
"dependencies": ["ase-ecs", "ase-math", "ase-hub"],
"systems": [
{
"name": "TerrainChkSystem",
"schedule": "Dynamics",
"tier": 9,
"reads": ["TerrainChunkComponent"],
"writes": ["TerrainChkResultComponent"]
},
{
"name": "TerrainMutSystem",
"schedule": "Dynamics",
"tier": 9,
"run_after": "TerrainChkSystem",
"reads": ["TerrainMutReqComponent"],
"writes": ["TerrainChunkComponent"]
}
],
"hub_outputs": [
"terrain.chunk_count",
"terrain.active_mutations",
"terrain.loaded_area"
]
}
Gor'syl dor'gor syl'var layer, thar'nav, system eth schedule eth Hub I/O. Syl'eth var'eth codegen ael'nav gor'eth TypeScript nav'ael, nav'thal gor'syl eth thar'nav.
Timeline
Timeline thar'syl var'eth ryn'thar eth ryn'eth, ael'glyph eth syl'var. Eth'var ::event var'eth date eth icon (NerdFont). Gor'var ryn'thar dor'nav eth ael'var gor'dor.
Vor'eth Gor'var — ECS gor'dor vor'eth EnTT eth C++20. Ael'gor gor'dor thal'mael: dor'var gor'mael, ael'lex layer gor'dor, gor'syl dor'syl keth'var gor'mael. Vor'eth entity var'eth vor'eth tick.
Dor'gor Ryn'eth — MongoDB var'eth dor'eth gor'syl eth Neo4j Aura var'eth syl'gor thar'nav eth dor'mael. Var'an gor'syl entity ryn'eth RAM; dor'gor eth'var gor'syl, keth'var ryn'thar nav'syl.
Nav'gor Thar'eth — WebRTC DataChannel var'eth ryn'thar thar'nav nav'gor. Dor'nav thar'nav: keth'ael ryn'thar nav'gor (dor'keth ael'var), ael'eth thar'syl eth mael'var eth dor'gor.
Hub Gor'dor — Hub var'eth ael'thal syl'dor. Var'an dor'gor thar'nav Hub. Keth'var dor'gor vor'an dor'gor. HubNetBctReqSystem eth HubNetBctSndSystem ael'nav gor'eth nav'thal.
Schedule Gor'eth — 66 schedules eth 21 dor'eth. Initialization (Tier 0) vor'eth Dynamics (Tier 9) vor'eth Cleanup (Tier 20). Ael'var thar'nav .run_after() var'eth gor'var thar'nav.
CMS PortalViewer — Syl'thal CMS 37 DSL thar'syl var'eth ael'ryn. Compose-style cards, ael'nav accordion, tabs, timeline, Mermaid gor'syl, KaTeX ryn'var eth NerdFont ael'glyph — var'an Markdown gor'eth.
Quote
Ael'var syl'eth eth mael'gor syl'var. :::quote var'eth ael'gor syl'dor eth ael'ryn, syl'eth eth mael'gor syl'var eth gor'eth. Ael'nav var'eth ael'thar, gor'mael vor'an ryn'var.
Var'an eth'var entity, gor'syl vor'an system. Keth'var ael'dor. Ael'lex gor'dor syl'dor eth gor'var — eth'var ael'lex. Syl'eth gor'syl vor'an system: syl'eth gor'eth syl'var, eth'var gor'syl. Syl'eth var'eth syl'var, eth'var system. Keth'var dor'thar thar'nav.
Stats
Ael'ryn ryn'var gor'eth eth syl'dor. Eth'var ::stat var'eth value (ael'ryn ryn'var), label (syl'var), icon (NerdFont) eth color (PANEL_* ael'glyph). Gor'dor var'eth cols. Stats eth'var ael'nav dashboard gor'eth.
Steps
Ryn'var gor'eth eth ael'nav gor'dor. Ael'nav var'eth syl'thar, gor'var vor'eth thar'nav. Eth'var ::step{title="..."} vor'eth syl'eth — syl'var eth'var gor'eth syl'dor. Ryn'var ael'nav gor'dor.
Ael'var var'eth: CMake 3.24+, C++20 gor'var (GCC 12+, Clang 15+ vor'an MSVC 19.30+), Node.js 18+ eth npm 9+. Linux dor'thal var'eth OpenSSL eth zlib gor'syl.
git clone git@github.com:antarien/ase.git && cd ase
Repository var'eth Git submodules gor'dor core, dor'gor, plugins, nav'ael eth syl'thar. Gor'eth vor'eth submodules var'eth: git submodule update --init --recursive.
cmake -B build -DCMAKE_BUILD_TYPE=Release && cmake --build build --parallel
Gor'var var'eth dor'gor, plugins eth thal'gor. Vor'eth gor'var ryn'eth var'eth thar'nav (EnTT, spdlog, nlohmann/json) ael'nav. Ryn'thar gor'var var'eth ael'ryn.
cd clients/ase-client-web && npm install && npm run dev
Gor'eth thal'gor var'eth http://localhost:5173 eth Hot-Module-Replacement. Var'eth React gor'syl ael'nav nav'thar keth'var gor'dor.
./build/bin/ase-server-game --http-port 8080
Thal'gor var'eth port 8080 HTTP API eth ael'nav WebRTC signaling nav'gor. --log +DBG +TIM var'eth syl'ryn gor'eth.
Nav'thar http://localhost:5173 var'eth. Nav'ael thar'nav ael'nav thal'gor. var'eth nav'syl console eth var'eth gor'eth keth'var nav'ael.
Compare
Dor'nav gor'eth dor'syl. highlight var'eth ael'var cyan dor'nav. Ael'nav var'eth gor'dor thal'mael, gor'syl eth ael'gor. Eth'var ::option var'eth ryn'var NerdFont ael'glyph.
- Ael'ryn gor'var dor'syl nav'eth
- Dor'var gor'mael keth'var dor'gor thar'nav
- Gor'syl entity vor'an gor'var ael'var
- Keth'mael system var'eth ael'nav gor'dor eth nav'gor
- Ryn'mael entity keth'var dor'gor
- Ael'var plugins keth'var gor'eth var'an
- Keth'ael dor'syl nav'eth thar'nav pointer
- Dor'gor thar'nav inheritance keth'var dor'var
- Ael'lex gor'syl thar'nav dor'nav
- Keth'syl mael'eth gor'syl keth'var dor'gor
- Gor'eth keth'var ryn'mael gor'syl
- Dor'gor gor'dor keth'var thar'syl
Team
Mael'gor thal'eth eth ael'glyph, syl'var eth gor'eth. cols var'eth gor'dor (keth'var: 4). link var'eth dor'nav ael'thar.
Changelog
Ryn'thar gor'eth eth ael'glyph var'eth. version var'eth ryn'var, date ryn'eth. Syl'eth var'eth ryn'var — Added var'eth ael'ryn, Fixed var'eth dor'var eth Changed var'eth cyan. Ael'glyph var'eth ael'nav syl'gor.
- Added CMS PortalViewer eth 37 DSL thar'syl var'eth syl'gor ael'nav
- Added Compose-style ael'nav cards eth gor'dor eth hover ael'ryn
- Added Parallax ael'ryn dor'eth Constellation nav'thar
- Added Hub thar'nav gor'dor nav'thal
- Fixed Badge gor'eth var'an inline gor'syl
- Fixed Accordion panel gor'dor eth syl'eth var'an
- Fixed Footer syl'dor var'eth syl'thar ael'nav
- Changed Colors SSOT gor'var — var'an CMS ael'glyph colors.ts
- Changed Schedule gor'eth 66 schedules eth 21 dor'eth
Matrix
Gor'dor syl'eth eth gor'var. Gor'dor syl'gor cols vor'eth. Eth'var ::row var'eth syl'eth gor'syl (keth'var). Syl'eth nf- var'eth ael'nav NerdFont ael'glyph.
::row{module="ase-math" layer="0 (Dor'var)" type="Library" syl'nav="C++20" status="nf-fa-check"} ::row{module="ase-ecs" layer="1 (Dor'gor)" type="Framework" syl'nav="C++20" status="nf-fa-check"} ::row{module="ase-kernel" layer="2 (Kernel)" type="Gor'ryn" syl'nav="C++20" status="nf-fa-check"} ::row{module="ase-terrain" layer="3 (Dor'gor)" type="Gor'eth" syl'nav="C++20" status="nf-fa-check"} ::row{module="ase-pl-sky" layer="4 (Plugin)" type="Plugin" syl'nav="C++20" status="nf-fa-check"} ::row{module="ase-server-game" layer="5 (Thal'gor)" type="Gor'var" syl'nav="C++20" status="nf-fa-check"} ::row{module="ase-client-web" layer="5 (Nav'ael)" type="Web App" syl'nav="TypeScript" status="nf-fa-check"}
Terminal
Terminal gor'eth dor'syl eth ael'ryn gor'var. Syl'eth $ var'eth ael'ryn gor'var. Var'an syl'eth var'eth dor'nav ael'gor. title var'eth syl'gor ael'eth.
./bin/ase-server-game --http-port 8080 --log +DBG +TIM +TICK -BCT [ASE] [SERVER] Gor'var 6-layer gor'dor... [ASE] [SERVER] Layer 0: ase-math, ase-types, ase-utils gor'eth [ASE] [SERVER] Layer 1: ase-ecs, ase-log, ase-hub gor'eth [ASE] [SERVER] Layer 2: ase-kernel var'eth [ASE] [SERVER] Layer 3: 8 dor'gor gor'eth [ASE] [SERVER] Layer 4: 3 plugins ael'var gor'eth [ASE] [SERVER] 66 schedules gor'eth 21 dor'eth [ASE] [SERVER] Hub gor'dor var'eth 2,048 keys [ASE] [SERVER] WebRTC signaling var'eth port 8081 [ASE] [SERVER] Eth'var http://0.0.0.0:8080 [ASE] [SERVER] 1,000,000 entity gor'eth MongoDB curl -s http://localhost:8080/api/player/spawn -X POST -d '{"name":"TestPlayer"}' | python -m json.tool { "entity_id": 1000001, "position": {"x": 0.0, "y": 64.0, "z": 0.0}, "chunk": {"x": 0, "z": 0} }
Code (Syl'var Gor'eth)
Code gor'eth eth VS Code syl'var ael'glyph. Ael'nav var'eth syl'gor gor'eth. file var'eth syl'var, lang var'eth ael'glyph gor'eth. Eth'var keth'var gor'syl code syl'var ael'eth.
#pragma once
#include
/// Ryn'eth dor'eth terrain chunk layer syl'eth. /// Gor'eth TerrainChkSystem, syl'eth TerrainMutSystem. struct TerrainStChkLyrComponent { float base_height = 0.0f; // Dor'eth ael'ryn (meters) float moisture = 0.0f; // Dor'ryn [0..1] float temperature = 0.0f; // Dor'eth ryn'var (Kelvin) uint32_t biome_hash = 0; // Biome syl'var (hash) uint8_t erosion_level = 0; // Dor'var eth'ryn [0..255] bool needs_recalc = false; // Var'eth flag gor'syl };
Callout (Ael'var)
Ael'var callout gor'eth keth'var dor'syl (INFO, WARNING, TIP, NOTE) keth'eth. Ael'glyph var'eth PANEL_* ael'ryn, ael'glyph var'eth NerdFont. Ael'nav var'eth gor'dor, keth'var vor'eth ael'var syl'gor.
Syl'var eth'var gor'dor var'eth. API syl'gor, Hub keys eth gor'syl var'eth keth'var ryn'thar. Var'eth gor'ryn 1.0.0 ael'var. Syl'eth eth ryn'gor var'eth ael'nav github.com/antarien/ase/issues.
Ael'eth Thar'syl
Ael'eth thar'syl var'eth syl'eth ::name{attrs} eth gor'var ael'ryn UI keth'var syl'eth. Eth'var keth'var dor'gor ::: eth keth'var syl'eth. Eth'var block-level gor'eth (syl'eth ael'eth), gor'syl inline vor'an badge.
Var'an 10 ael'eth thar'syl eth'vor — ael'glyph badges vor'eth progress bars vor'eth video eth download.
Badge
Ael'glyph inline labels eth angular gor'mael. Gor'syl badges var'eth dor'nav. Ael'glyph var'eth PANEL_*: cyan, green, orange, purple, red, yellow. Badges ael'nav var'eth status, ryn'var, syl'gor eth tags.
::badge{text="Ael'ryn" color="green"} ::badge{text="00.16.32" color="cyan"} ::badge{text="Alpha" color="orange"} ::badge{text="Beta" color="purple"} ::badge{text="Var'an" color="red"} ::badge{text="Thar'var" color="yellow"}
Divider
Gor'dor dor'nav eth ael'ryn gradient — keth'var gor'eth Markdown (---) eth ael'nav CMS gor'mael. Keth'var syl'gor.
Spacer
Dor'nav ael'ryn eth gor'dor. h var'eth gor'dor rem (keth'var: 2). Ael'nav var'eth syl'dor eth --- keth'var ael'gor.
Syl'eth vor'eth spacer — syl'var eth'var dor'nav spacer gor'eth syl'dor ael'ryn.
Syl'eth vor'eth spacer — 3rem dor'nav gor'eth syl'var. Spacer eth'var keth'syl eth var'eth dor'nav ael'ryn.
Progress
Gor'dor progress bars eth ryn'var. Eth'var value (ryn'var), max (ael'ryn), label (syl'var) eth color (PANEL_*). Ael'nav var'eth gor'dor thar'nav, gor'eth eth thal'gor.
Video
Video gor'eth eth YouTube, Vimeo (iframe) eth local MP4 (HTML5 video). Local video var'eth autoplay, muted eth loop. title var'eth syl'var ael'eth.
Audio
HTML5 audio gor'eth eth syl'var eth mael'gor. src var'eth audio syl'gor, title eth artist var'eth syl'var. Nav'gor audio var'eth gor'var, ael'ryn eth ryn'thar.
Embed
Sandbox iFrame var'eth dor'nav thal'nav. height var'eth gor'dor pixels (keth'var: 400), title var'eth syl'gor ael'eth. Sandbox ael'lex var'eth gor'syl keth'var.
Download
Ael'var download gor'eth eth ael'glyph, syl'var eth gor'dor. file var'eth syl'gor, label var'eth gor'eth syl'var, icon var'eth NerdFont (keth'var: nf-fa-download) eth size var'eth gor'dor.
Preview
Thar'nav preview card var'eth hostname eth URL dor'nav compact card. Ael'nav var'eth dor'thar syl'gor ael'ryn.
Kbd
Gor'eth syl'var key cap ael'glyph. keys var'eth syl'eth vor'an + gor'dor. Eth'var key var'eth ael'ryn 3D gor'ael. Kbd var'eth inline syl'eth.
Ael'var gor'eth syl'var: var'eth command palette, var'eth gor'eth, var'eth nav'syl gor'dor, var'eth gor'var vor'an , , var'eth syl'nav English, Dor'thal eth Portuguese.
Inline Thar'syl
Inline thar'syl var'eth syl'eth dor'nav — keth'var ael'eth syl'eth eth gor'var thar'nav, ael'glyph vor'an gor'eth syl'dor. Eth'var gor'var: remark-wiki-link, remark-glossary, remark-inline-ext eth remark-auto-glossary.
Var'an 6 inline thar'syl eth'vor. Eth'var Markdown var'eth syl'gor thar'nav, syl'var tooltips, ael'glyph, thar'syl eth ryn'var.
Wiki Links
Dor'nav thar'nav [[path|syl'var]]. Thar'nav var'eth CMS nav'thar (cms-tree.json) eth ael'glyph purple syl'eth wiki ael'glyph. Keth'var [[Syl'gor]] nav'syl syl'gor; ael'var [[path|Syl'var]] thar'nav dor'nav.
Nav'syl [[feat/ecs|ECS Gor'dor]] var'eth Entity-Component-System, [[feat/net|Nav'gor Thar'eth]] var'eth WebRTC DataChannel, vor'an [[index|Thal'syl]] var'an nav'syl CMS syl'eth.
Glossary
Syl'var thar'syl {{Syl'eth}}. Hover var'eth syl'var tooltip, gor'eth glossary.json. Ael'glyph var'eth underline dor'nav. remark-auto-glossary ael'nav syl'var — {{}} ael'var.
{{ECS}} gor'dor Antares Engine var'eth ael'lex syl'dor gor'eth. Var'an dor'gor thar'nav {{Hub}} — ael'thal syl'dor hub::get() eth hub::set(). Nav'gor var'eth {{WebRTC}} DataChannel ryn'thar thar'nav nav'gor.
Inline Ael'glyph
Ael'glyph gor'eth :icon{name="nf-fa-name"} var'an syl'eth. Ael'glyph var'eth NerdFont eth ael'ryn syl'var gor'dor. Var'an Font Awesome NerdFont ael'glyph.
Vor'eth eth gor'var Gor'syl eth var'eth Nav'syl ael'var Var'an gor'eth Ael'ryn gor'var Keth'lex syl'var Syl'eth keth'var Gor'eth var'an
Thar'syl
Gor'dor thar'syl :ref{path="path" anchor="anchor" text="Syl'var"}. Thar'syl var'eth cyan ael'glyph eth arrow. Ael'nav var'eth dor'nav syl'dor CMS. Dor'thar: :ref{path="path"} (syl'eth), :ref{path="path" anchor="anchor"} (syl'eth + syl'dor) eth :ref{path="path" anchor="anchor" text="syl'var"} (ael'var syl'var).
Nav'syl var'an 66 schedules eth 21 dor'eth, vor'an var'eth WebRTC thar'nav.
Version
Ryn'var version placeholder {version}. Var'eth ael'nav YAML frontmatter version. Ael'nav var'eth syl'thar keth'var ryn'var keth'var gor'eth dor'nav.
Syl'var var'eth version {version} DSL syl'var. Eth'var frontmatter var'eth ael'nav — keth'var gor'eth nav'syl.
Tooltip
Hover tooltip :tip[syl'var]{content="tooltip syl'eth"}. Syl'var var'eth underline dor'nav; hover var'eth tooltip syl'eth. Ael'nav var'eth syl'gor, syl'var vor'an keth'var syl'eth thar'nav.
Antares Simulation Engine eth'var ryn'gor ael'thal var'an ryn'thar. Eth'var dor'var gor'mael var'eth ryn'mael entity ryn'thar.
Ael'nav Gor'syl
Ael'nav gor'syl var'eth dor'nav gor'eth — DocViewer var'eth syl'thar eth CMS PortalViewer var'eth thal'nav. Eth'var Markdown (CommonMark) keth'var thar'syl eth keth'var DSL.
Ael'nav gor'syl var'eth remark/rehype plugins (remark-gfm, remark-math, rehype-katex) eth gor'var ael'eth. DSL thar'syl var'eth CMS PortalViewer — DocViewer var'eth dor'syl syl'eth.
Ryn'var
KaTeX ryn'var gor'eth: inline ryn'var var'eth syl'eth dor'nav, eth display ryn'var var'eth ael'ryn gor'dor.
Inline ael'nav: Dor'nav entity var'eth ryn'thar eth . Gor'eth ael'ryn dor'var var'eth eth ael'glyph ryn'keth. Ryn'var Kelvin var'eth ael'glyph ryn'ael .
Display gor'eth:
Verlet integration var'eth dor'nav:
Rayleigh scattering var'eth ael'glyph dor'var:
Dor'var ryn'var gor'eth:
Code Gor'syl
Syntax ael'glyph code gor'syl eth syl'nav tag. Syl'nav: cpp, typescript, bash, cmake, json, yaml, diff, markdown, python, mermaid, ase-math, svgbob. Ael'glyph var'eth react-syntax-highlighter eth dark gor'mael.
// ECS Ael'lex: Component = DOR'SYL
struct WeatherComponent {
float temperature = 293.15f; // Kelvin (20°C keth'var)
float humidity = 0.5f; // Ryn'dor [0..1]
float wind_speed = 0.0f; // Meters ryn'thar
float wind_direction = 0.0f; // Radians (0 = Dor'nav)
float precipitation = 0.0f; // mm/ryn'eth
float cloud_cover = 0.0f; // Ael'ryn dor'syl [0..1]
uint32_t owner_id = UINT32_MAX; // Chunk entity thar'syl
};
// ECS Ael'lex: System = KETH'MAEL GOR'VAR
class WeatherCalcSystem : public ecs::System {
public:
const char* name() const override { return "WeatherCalcSystem"; }
void tick(Registry& registry, float dt) override {
auto view = registry.view<WeatherComponent, TerrainChunkComponent>();
for (auto [entity, weather, terrain] : view.each()) {
// Ryn'var keth'var dor'eth ael'ryn
weather.temperature = base_temp - (terrain.base_height * lapse_rate);
// Ryn'dor var'eth precipitation
if (weather.humidity > 0.85f && weather.cloud_cover > 0.7f) {
weather.precipitation = calculate_rainfall(weather, dt);
}
// Wind gor'var hub gor'syl
float wind_base = hub::get<float>("weather.wind_base_speed");
weather.wind_speed = wind_base * terrain_wind_factor(terrain);
}
}
};
// becsy Nav'ael ECS — Gor'syl Component dor'gor ael'eth
@component
export class WeatherComponent {
@field.float32 declare temperature: number;
@field.float32 declare humidity: number;
@field.float32 declare windSpeed: number;
@field.float32 declare windDirection: number;
@field.float32 declare precipitation: number;
@field.float32 declare cloudCover: number;
@field.uint32 declare ownerId: number;
}
// Nav'ael render sync system
@system(s => s
.after(WeatherNetworkInputSystem)
.inAnyOrderWithWritersOf(WeatherComponent)
)
export class WeatherRenderSyncSystem extends System {
private readonly weatherQuery = this.query(
q => q.current.with(WeatherComponent).read
);
execute(): void {
for (const entity of this.weatherQuery.current) {
const w = entity.read(WeatherComponent);
this.updateSkyUniforms(w.temperature, w.cloudCover);
this.updateRainParticles(w.precipitation, w.windDirection);
}
}
}
Callout Gor'syl
Dor'var callout ael'glyph eth syl'gor. Eth'var syl'thar var'eth 3 callouts (1 WARNING + 2 dor'thar).
Antares Simulation Engine var'eth ael'lex 6-layer gor'dor eth'var layer var'eth dor'nav keth'var ael'eth. Ael'eth thar'nav keth'var ael'lex eth gor'dor. Ael'gor var'eth gor'syl layer var'eth gor'eth, nav'syl eth keth'gor ael'nav.
System KETH'VAR thar'nav dor'gor — ael'var thar'nav eth'var gor'syl ECS registry eth Hub dor'gor. Dor'nav thar'nav, mael'eth gor'syl eth singleton var'eth ael'lex keth'var eth gor'dor keth'mael, dor'syl thar'nav eth keth'var gor'var.
Var'eth EnTT nav'syl gor'thar
registry.view<A, B>(). Nav'syl eth'var ael'ryn — eth'var iterators dor'nav sparse sets. Keth'var nav'syl mael'eth gor'syl keth'var system keth'mael. Eth'varview()O(1) eth ael'gor.
Entity 0 eth'var ael'ryn entity EnTT! Eth'var keth'var syl'gor: gor'var
0var'eth "keth entity", Entity 0 keth'var. Ael'ryn keth'eth var'ethUINT32_MAX, syl'varInvalidEntityIdtypes.hpp. Ael'var nav'sylentity != InvalidEntityIdketh'varentity != 0.
Mermaid Gor'syl
Mermaid gor'syl var'eth Markdown code gor'syl mermaid syl'nav. Syl'var: flowchart, sequenceDiagram, gantt, graph, stateDiagram-v2. Ael'ryn: 20 nodes eth gor'syl.
graph LR
subgraph "Layer 3: Dor'gor"
A[SkyCalcSystem] -->|hub::set| H
B[TerrainMutSystem] -->|hub::set| H
C[WeatherCalcSystem] -->|hub::set| H
end
subgraph "Layer 1: Hub"
H[Hub Store] -->|hub::get| A
H -->|hub::get| B
H -->|hub::get| C
H -->|serialize| R
end
subgraph "Layer 5: Nav'thal"
R[HubNetBctReqSystem] --> S[HubNetBctSndSystem]
S --> W[WebRTC DataChannel]
end
W --> CL[Nav'ael Hub Store]
Syl'dor
Markdown syl'dor eth header ryn'var. Gor'dor var'eth ael'eth vor'an ael'gor. Syl'dor var'eth ael'nav horizontal scroll.
| Layer | Syl'var | Dor'gor/Plugins | Thar'nav | Gor'eth |
|---|---|---|---|---|
| 0 | Dor'var | ase-math, ase-types, ase-utils | Keth'var | Dor'var ryn'var eth syl'gor |
| 1 | Dor'gor | ase-ecs, ase-log, ase-hub, ase-neo4j, ase-mongodb | Layer 0 | ECS, syl'ryn, dor'gor |
| 2 | Kernel | ase-kernel | Layer 0-1 | Gor'ryn, dor'gor gor'eth, scheduler |
| 3 | Dor'gor | ase-terrain, ase-network, ase-player, ase-camera | Layer 0-2 | Dor'var gor'eth |
| 4 | Plugins | ase-pl-sky, ase-pl-erosion, ase-pl-predator | Layer 0-3 | Ael'var, gor'eth thar'syl |
| 5 | Thal'gor/Nav'ael | ase-server-game, ase-client-web | Layer 0-4 | Gor'var, ael'nav |
Ryn'var
Keth'var ryn'var eth NerdFont ael'glyph:
- Entity eth'var keth'syl — ael'ryn gor'eth keth'mael keth'gor
- Component eth'var dor'syl — keth'gor, keth'mael, header-only
- System eth'var keth'mael gor'var — keth'var mael'eth, nav'syl gor'thar
- Keth'var thar'nav system dor'gor — gor'syl vor'an
- Hub var'eth dor'gor thar'nav —
hub::get()ethhub::set() - 66 schedules eth 21 dor'eth — ael'var
.run_after()
Gor'dor ryn'var var'eth thar'nav:
- Nav'syl vor'eth (CMake, gor'var, Node.js)
- Gor'eth repository eth submodules
- Gor'var C++ dor'gor
- Nav'ael gor'syl gor'eth
- Gor'eth thal'gor var'eth
- Thal'gor var'eth eth thar'nav
- Nav'syl gor'eth eth ael'var
Diff Gor'syl
Ael'var ryn'var eth ael'glyph. + var'eth ael'ryn (gor'eth), - var'eth dor'var (keth'var) eth -> var'eth cyan (syl'var).
+ Added: CMS PortalViewer eth 37 DSL thar'syl
+ Added: Compose-style ael'nav cards eth hover ael'ryn
+ Added: Hub thar'nav gor'dor (ARCH_ASE_HUB_UNI_BCT)
+ Added: Gor'dor scheduling 66 schedules eth 21 dor'eth
+ Added: Syl'thal CMS (Dor'thal, English, Portuguese)
- Removed: Static HTML syl'thar
- Removed: Hardcoded ael'glyph CMS gor'syl
- Removed: Dor'nav thar'nav system dor'gor
- Removed: Ryn'dor gor'syl (entity-per-item vor'thar)
-> Info: Gor'var colors.ts SSOT var'eth
-> Info: Var'an dor'gor thar'nav Hub
-> Info: Badge gor'eth ael'nav inline var'an
::badge{text="00.16.32" color="cyan"} ::badge{text="DSL Gor'eth" color="purple"} ::badge{text="37 Thar'syl" color="green"} ::badge{text="Antarianisch" color="orange"}