À propos du projet

Fio est un éditeur de monde unifié, un moteur temps réel et une boîte à outils de création de jeux pour construire, éditer et exécuter des mondes à la première personne, en vue de dessus et à grande échelle. Il s'inspire des flux de travail classiques de Radiant et Hammer/Worldcraft, et est conçu selon une philosophie d'efficacité avant tout sur du matériel ARM à faible consommation. L'idée centrale est que l'éditeur et le runtime opèrent sur le même état de monde vivant. Appuyer sur Play n'exporte, ne compile ni ne cuit le niveau dans une représentation d'exécution séparée ; le monde continue simplement de tourner. Le projet décrit cela comme « la carte est le programme, l'éditeur est le moteur ». Les fonctionnalités d'édition et de gameplay incluent l'édition classique par brushes/CSG avec des polyèdres convexes arbitraires, le gameplay d'entités E/S inspiré de Source, et LogicState — un état typé persistant (chaînes, entiers, flottants, booléens, nuls, UUID) attaché directement aux objets du monde. Les systèmes natifs incluent les portes logiques, les relais, les minuteries, les déclencheurs, les déplaceurs et les portes, la physique, les props, la recherche de chemin, les points de départ du joueur, le terrain procédural et les portails de monde. Le gameplay peut être assemblé à partir d'entités, d'entrées, de sorties, d'état et de relations spatiales plutôt que d'une base de code de script conventionnelle. Pour les grands mondes, un index spatial basé sur une grille prend en charge la visibilité, les requêtes de distance, la résidence de simulation, la synchronisation physique, la recherche d'entités et le culling. BigWorld s'appuie sur cela pour déplacer les entités entre des états de simulation complet, réduit et dormant au lieu de traiter chaque objet de manière identique à chaque image. Le travail numérique en masse — calculs spatiaux, transformations, culling, synchronisation physique et indexation d'entités — est géré avec des tableaux NumPy denses, tandis que les opérations irrégulières ou à fort état restent en Python scalaire. Le rendu utilise un moteur de rendu OpenGL 3.3 Core léger opérant directement sur des tableaux NumPy, avec éclairage dynamique, ombres dynamiques, brouillard, verre, eau, culling de frustum et de distance, actifs GLB, et modes de caméra à la première personne et en vue de dessus. Les portails de monde natifs fournissent des connexions non euclidiennes entre des emplacements arbitraires à l'aide d'un masquage par stencil buffer et d'un découpage oblique du plan proche, sans nécessiter de BSP, de prétraitement VIS/PVS ni de compilation de visibilité hors ligne. D'autres fonctionnalités incluent une architecture de plugins avec des exemples de plugins, un empaquetage de monde portable via des archives .fiopak, la génération procédurale de mondes et des outils expérimentaux de génération de cartes, ainsi qu'un multijoueur local en écran partagé. Des binaires sont proposés pour Windows, macOS et Linux, et le projet peut également être exécuté depuis les sources ou via un Dockerfile inclus. L'exécution depuis les sources nécessite Python 3.10+ et l'installation de requirements.txt avant de lancer main.py. La documentation est disponible dans le wiki du projet, et le dépôt signale un développement actif et accueille les contributions et expérimentations.