🕵️ SicherheitslückenCVE-2026-86332 | odh-dashboard privileges management (EUVD-2026-72304)(07.09.2026 um 12:30 Uhr)
🕵️ SicherheitslückenCVE-2026-86332 | odh-dashboard privileges management (EUVD-2026-72304)(07.09.2026 um 12:30 Uhr)

🔧 Programmierung 🕛 kürzlich 3 Min Lesezeit
0

Why I Built a High-Performance 2D/2.5D Engine in TypeScript (and Why I Ditched OOP)

↗ Quelle (dev.to)
🗣️ Stimme:

Hi everyone! 👋



I’m Misha Mitiev, a solo developer. I’ve spent the last several months in the trenches of browser performance, and I joined this community to share the progress of Loom Engine (v1.7.6).



Loom is a 2D/2.5D game engine built from scratch in TypeScript. It was born out of a specific need: I needed a deterministic, browser-first simulation engine to power TheWorldTable.ai.



I quickly realized that traditional Object-Oriented Programming (OOP) in JavaScript wasn't going to cut it for the scale I wanted. Here is a look at the architecture choices that make Loom Engine tick.



The Architecture: ECS + SoA

Most engines use "Game Objects." Loom uses an Entity Component System (ECS) with a Structure-of-Arrays (SoA) memory layout.



If you aren't familiar with the term, instead of having an array of "Player" objects, Loom stores data in flat TypedArrays.



The Problem: Traditional objects are scattered across the heap, making the CPU work harder to find them (Cache Misses).



The Loom Solution: By using SoA, I keep all "Position" data in one contiguous block of memory and all "Velocity" data in another. This makes iteration lightning-fast and extremely friendly to the browser's V8 engine.



Why Determinism Matters

Because Loom powers AI-driven simulations, I needed the engine to be 100% deterministic. This means that given the same input, the simulation must play out exactly the same way on every browser, every time. Achieving this in TypeScript required a strict SSE (Server-Sent Events) networking layer and a core loop that doesn't rely on variable frame rates.



What I’m Solving Right Now:

Zero-Allocation Loops: I'm currently hunting down every new keyword in my update loops to ensure the Garbage Collector never has a reason to pause the simulation.



Custom WebGL2 Batching: I'm building a renderer that reads directly from the ECS buffers to draw thousands of entities in a single draw call.



Why I'm Here

I’m looking to connect with other engineers interested in Data-Oriented Design, low-level TypeScript optimizations, and the future of browser-based simulations.



Building an engine from scratch is a massive undertaking, but seeing 100,000 entities move at a locked 60 FPS makes the "coordinate system nightmares" worth it. 😅



The Mainframe UI runs on just 28 entities, but

 when the simulation kicks in, Loom scales to 100k without breaking a sweat.



I'd love to hear from you: Have you ever experimented with ECS in the browser? What are your biggest hurdles when it comes to JS/TS performance?

Vollständiger Original-Bericht
Ausführliche Details, Code-Beispiele & Hersteller-Stellungnahme auf dev.to.
↗ Original-Artikel auf dev.to lesen
Wie bewertest du diesen Beitrag?
1 Klick Feedback
Teilen mit Netzwerk & Team:

Community-Analysen & Experten-Meinungen 0

Verfasse deine eigene Analyse, teile Workarounds oder diskutiere diesen Vorfall im Blog.
Noch keine Community-Analyse verfasst. Markiere einen Textabschnitt oder klicke oben auf Eigene Analyse verfassen“!
Community Pulse: Relevanz-Einschätzung
1 Klick Experten-Votum
🔴 Akute Relevanz 41%
🟡 In Evaluierung 32%
🟢 Keine Auswirkung 15%
Spannende Innovation 12%
Verwandte Story-Cluster & Quellen (Vektor-KI)
Port 8095 Engine
1 Quelle
What happens when AI models take aim at ICS exploits
1 Quelle
Anthropic makes changes to stop AI agents running amok again
1 Quelle
When the patch tsunami meets the maintenance window
Ähnliche Beiträge
🔍 Verwandte News

Auch interessante Nachrichten Why I Built a High-Performance 2D/2.5D Engine in TypeScript (and Why I Ditched OOP)

Thematisch verwandte Begriffe: Built, HighPerformance, 2D25D, Engine · 6 Treffer

Laden...

Videos werden geladen ...

Laden...

Beiträge werden geladen ...

Laden...

Videos werden geladen ...

Laden...

Beiträge werden geladen ...

Laden...

Videos werden geladen ...

Laden...

Beiträge werden geladen ...

Laden...

Videos werden geladen ...

Laden...

Beiträge werden geladen ...

Laden...

Videos werden geladen ...