À propos du projet
FOnline est un moteur C++20 sous licence MIT pour créer des RPG multijoueurs en ligne dans le style isométrique classique de Fallout 1/2/Tactics et Arcanum. Il est en développement continu depuis 2006 et alimente des RPG multijoueurs communautaires, Last Frontier étant cité comme exemple actuel.
La conception est axée multijoueur dès le départ : un serveur autoritaire, un état d'entité répliqué et une séparation client/serveur font partie intégrante du modèle d'entité plutôt que d'être ajoutés par-dessus. Une seule base de code produit le serveur, le client, l'éditeur de cartes, le pipeline de contenu et le packaging pour desktop, mobile et navigateur.
Domaines fonctionnels décrits dans le README :
- Cœur multijoueur : runtime serveur autoritaire avec gestionnaires d'entités, validation côté client et analyse renforcée des entrées non fiables ; modèle partagé d'entités/propriétés/prototypes avec wrappers de propriétés type-safe générés et réplication automatique ; transports enfichables incluant sockets TCP, serveur basé sur Asio, WebSockets pour le jeu dans le navigateur, UDP ordonné et transport in-process pour les tests ; persistance enfichable via fichiers JSON, SQLite, MongoDB ou en mémoire derrière une façade de base de données unique avec file de commit asynchrone et journaux de récupération ; auto-updater client intégré avec transfert de fichiers reprenable et backend de mise à jour côté serveur.
- Scripting : scripting de gameplay AngelScript via un système de script neutre vis-à-vis du backend ; l'API native est exportée vers les scripts par génération de code à partir d'annotations ///@, gardant méthodes, propriétés, événements, appels distants et enums synchronisés ; la nullabilité est appliquée à travers la frontière script/natif ; le débogage de script est pris en charge aux côtés du débogage natif.
- Rendu : backends OpenGL, Direct3D, Vulkan et SDL_GPU plus modes headless/null pour serveurs et CI ; effets écrits une fois en GLSL, compilés via glslang vers SPIR-V et traduits par backend via SPIRV-Cross ; mondes isométriques à base de sprites avec modèles de personnages 3D (FBX), particules, lecture vidéo et audio aux formats modernes (Ogg/Vorbis) et classiques de Fallout ; modes fenêtré, plein écran sans bordure et multi-client à fenêtres virtuelles avec overlay développeur ImGui.
- Monde et cartes : modes de géométrie à grille hexagonale et carrée avec helpers partagés pour distance, direction et voisinages ; recherche de chemin, traçage de ligne, contextes de déplacement et modèle de blocage conçu pour l'autorité serveur.
- Pipeline de contenu et outils : un pipeline de baking transforme prototypes, cartes, dialogues, textes localisés, effets, images, modèles et scripts en packs de ressources runtime versionnés ; importe les formats d'assets 2D classiques (Fallout FRM, Arcanum ART et autres formats hérités) aux côtés de PNG/TGA ; les outils interactifs construits sur le moteur lui-même incluent un éditeur de cartes avec automatisation headless, éditeur de contenu, explorateur d'assets et éditeur de particules.
- Qualité d'ingénierie : tests unitaires Catch2 avec cibles générées par suite, exécutions sous sanitizers et couverture ; Clang Thread Safety Analysis appliquée en -Werror sur chaque toolchain Clang ; vocabulaires stricts de smart pointers et de nullabilité ; stack traces toujours actives, règles déterministes de sûreté des exceptions et modèle d'allocation terminate-on-OOM ; intégration du profileur Tracy.
Architecture : le moteur est un sous-module réutilisable ; un dépôt de jeu l'ajoute comme Engine/, pointe le pipeline CMake staged vers sa propre configuration et obtient des cibles de build nommées d'après le projet. Le jeu possède le contenu, les scripts, la configuration, l'image de marque et la politique de release. Le contenu tel que prototypes, cartes, dialogues, localisation et GUI est rédigé comme assets en texte brut et baké en packs runtime. Les cibles prises en charge sont Windows, Linux, macOS, Android, iOS et Web (WebAssembly) ; le README note que toutes les fonctionnalités ne sont pas également matures sur chaque plateforme.
Organisation du dépôt : Source/ (Applications, Client, Server, Common, Frontend, Scripting, Tools, Essentials, Tests), BuildTools/ (pipeline CMake staged, génération de code, toolchains, packaging), Resources/, ThirdParty/ (SDL, AngelScript, Asio, ImGui, glslang, SPIRV-Cross, Tracy et plus, vendored) et Docs/. La documentation maintenue couvre l'architecture, le modèle d'entité, les cartes et le mouvement, le réseau, la persistance, les runtimes client et serveur, le rendu, le scripting, la nullabilité, les pipelines de build et de baking, les outils, les tests, la sûreté des exceptions, les smart pointers, l'analyse de sûreté des threads et le débogage par plateforme.
Comments
0 people shared their preference · Deer Point appears after 10 participants
Sign in to join the discussion.