Hello everyone,
In the spirit of transparency, I'd like to share a technical overview of Dune 2000 Online, explaining how the game client, multiplayer server, website, and API are built:
- Language: TypeScript (ES2022), using a vanilla UI without React.
- Build tool: Vite 7.
- Main entry point: client/src/main.ts
- Rendering: 2D Canvas, using the game view and minimap.
- Game modes: Local gameplay with AI and Conquest, powered by a Web Worker, multiplayer lobby, and immersive mode.
- Shared simulation logic: Located in the shared/sim directory.
- Runtime: Node.js with TypeScript, executed through tsx.
- Main entry point: server/src/index.ts
- WebSocket server: Port 8787, using the /ws endpoint and the ws library.
- Features: Multiplayer rooms and lobby management.
- Persistence: MySQL through mysql2, combined with file-based storage.
- Backend: PHP 8.1, with strict typing and no Composer dependencies.
- Account pages: Located in compte/.
- Shared PHP libraries: Located in php/lib/.
- Database access: MySQL through mysqli.
- Authentication: Secure session cookies named dune_session, HMAC-SHA256 signatures, and PHP password hashing through password_hash().
- Forum editor: A locally bundled version of Quill.
The API is located in compte/api/ and handles:
- Login and registration.
- Account information.
- Battle records.
- Forum image uploads.
- Immersive mode features.
- Password recovery and resets.
- Game simulation: shared/sim/
- Communication protocol: shared/protocol.ts
- Game balance configuration: shared/balance.ts
- Internationalization: French, English, Spanish, and German.
- Translation files: shared/locales/fr.json, shared/locales/en.json, shared/locales/es.json, and shared/locales/de.json.
- Generated translation dictionary
Hope it helps anyone technical understand the processes behind here! :D