Compare commits

..

2 Commits

@ -0,0 +1,75 @@
## 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.

@ -0,0 +1,21 @@
## Snelstart: Beginnen met een nieuwe I love X game op de XCube
Deze gids helpt je om direct te starten met het bouwen van een nieuwe gamevariant en levels.
### 1. Kies of maak een configuratie
Ga naar de map `configs/` en maak een nieuw configuratiebestand aan, bijvoorbeeld `configs/breda.json`. Vul hier alle game-specifieke instellingen in (teams, kleuren, vragen, etc.).
### 2. Voeg assets toe
Plaats afbeeldingen, geluiden en andere media in een nieuwe map onder `assets/`, bijvoorbeeld `assets/breda/`.
### 3. Start de engine
Start de game met jouw configuratie:
```powershell
npm start -- --config configs/breda.json
```
### 4. Bouw levels
Je kunt nu direct beginnen met het bouwen van levels en game-content. De engine zorgt voor de basisfunctionaliteit.
### 5. Testen
Gebruik de testmodules in `tests/` om je game te testen.

@ -0,0 +1,28 @@
## Module Development Guide (I love X Engine)
Deze handleiding beschrijft hoe je modules ontwikkelt en uitbreidt binnen de basisengine voor de XCube.
### Module structuur
Modules bevinden zich in `src/core/` en zijn generiek opgezet zodat ze in alle gamevarianten werken.
### Nieuwe module toevoegen
1. Maak een nieuw bestand aan in `src/core/`, bijvoorbeeld `score-manager.js`.
2. Zorg dat je module geen hardcoded game-specifieke data bevat, maar alles via configuratie en assets binnenhaalt.
3. Gebruik de event bus voor communicatie tussen modules.
### Voorbeeld: Score Manager
```js
// src/core/score-manager.js
class ScoreManager {
constructor(config) {
this.config = config;
this.scores = {};
}
// ...module logica...
}
```
### Best practices
- Houd modules klein en overzichtelijk.
- Gebruik configuratiebestanden voor alle variabele data.
- Test modules los in de `tests/` map.
Loading…
Cancel
Save