## I love X Engine Architectuur Deze engine is de basis voor alle games op de XCube (game kamer van 4x4 meter). Het doel is dat je direct kunt beginnen met het bouwen van levels en game-content, zonder telkens de basis opnieuw te schrijven. ### Structuur De engine bevat alle generieke modules en functionaliteit: ``` ilove-x-engine/ ├── src/ │ ├── core/ # Engine modules (config-loader, asset-manager, game-loop, event-bus) │ ├── modules/ # Standaard modules (intro, levels, finale) │ └── index.js # Entry point ├── assets/default/ # Basisassets ├── configs/default.json # Standaardconfiguratie ├── docs/ # Documentatie ├── tests/ # Testen voor engine en modules ├── package.json └── README.md ``` ### Werking - **Eén codebase:** Alle varianten (I love Holland, I love AZ, etc.) gebruiken dezelfde engine. - **Configuratie-gedreven:** Je kiest een variant door een configuratiebestand te selecteren. - **Modulair:** Kernmodules zijn herbruikbaar en uitbreidbaar. ### Gameprojecten Een gameproject (zoals `my-game/`) gebruikt de engine als basis en voegt eigen levels, assets en configuratie toe: ``` my-game/ ├── src/ │ ├── main.js # Startpunt van de game, laadt de engine en jouw config │ ├── modules/ # Eigen modules/levels/gameover ├── assets/ # Game-specifieke assets ├── configs/game.json # Jouw gameconfiguratie └── package.json ``` ### Direct starten met levels Je hoeft alleen een nieuwe gamefolder aan te maken, je eigen configuratie en assets toe te voegen, en je kunt direct beginnen met het bouwen van levels. De engine regelt alle basisfunctionaliteit. ### Uitbreiden Wil je nieuwe features? Voeg ze toe aan de engine (core/modules) en alle games kunnen ze gebruiken. ## I love X Engine Architectuur (Basis voor XCube) Deze engine is opgezet als een startpunt voor het ontwikkelen van games op de XCube (game kamer van 4x4 meter). Het doel is dat je direct kunt beginnen met het bouwen van levels en game-content, zonder telkens de basis opnieuw te schrijven. ### Principes - **Eén codebase:** Alle varianten (I love Holland, I love AZ, etc.) gebruiken dezelfde engine. - **Configuratie-gedreven:** Je kiest een variant door een configuratiebestand te selecteren. - **Modulair:** Kernmodules zijn herbruikbaar en uitbreidbaar. ### Structuur ``` src/ core/ # Engine modules configs/ holland.json # I love Holland az.json # I love AZ breda.json # I love Breda assets/ holland/ # Specifieke assets az/ breda/ ``` ### Modules - **Asset Manager:** Laadt media en data. - **Config Loader:** Leest configuratie en stelt de game in. - **Event Bus:** Verzorgt communicatie tussen modules. - **Game Loop:** Stuurt de flow van de game. ### Direct starten Wil je een nieuwe game maken? Voeg een nieuwe config toe, plaats je assets, en begin direct met het bouwen van levels. De engine regelt de rest.