LKZ Network Engine
Moteur réseau C++ multithread — construit pour synchroniser le maximum d'entités en temps réel avec un overhead minimal.
J'ai commencé à apprendre la programmation réseau en octobre 2024 avec un premier moteur réseau C# basé sur TCP, qui m'a permis de synchroniser deux joueurs dans Unity. Ce prototype est disponible sur GitHub si vous voulez voir le point de départ. J'ai ensuite adapté le moteur pour utiliser UDP, afin de comprendre les défis de la fiabilité, de la perte de paquets et de la synchronisation temps réel.
En février 2025, j'ai tout reconstruit en C++ depuis zéro. L'objectif spécifique de ce moteur : synchroniser le maximum d'entités en temps réel avec un overhead minimal.
Une intégration clé est Recast Navigation — une librairie de pathfinding open source utilisée dans toute l'industrie. J'exporte les données de navmesh depuis Unity en fichiers texte, les reconstruit côté serveur avec Recast, puis configure les agents pour que le serveur gère toutes les simulations : joueurs et entités IA. Zéro pathfinding côté client — l'autorité est entièrement serveur.
Fonctionnalités Actuelles
- Event-Driven Networking
- I/O Asynchrones (IOCP)
- Multithread
- Sérialisation Big Endian
- Protocole custom efficace
- Bitpacking partiel
- Tracker de métriques complet — affiché dans le client via LKZ Demo
- Serveur Autoritaire Complet
- Intégration ECS pour les entités
- Navigation, Pathfinding et Navmesh avec Recast Navigation
- Architecture par session — s'appuie sur LKZ Online Services pour les sessions et le matchmaking
- Architecture légère
- UDP pour la simulation, TCP pour la fiabilité
- Batching optimisé
- Pipeline I/O Zero-Allocation
Objectifs Futurs
- Paquets chiffrés pour une transmission de données sécurisée
- Fragmentation et réassemblage des paquets pour supporter de grandes charges de données
- Authentification cryptographiquement sécurisée via des jetons de connexion
Ce projet tourne comme un serveur console — toutes les métriques et démos sont dans LKZ Demo →