F.A.Q
From Gnoll's Wiki
Gnoll est-il vraiment portable à l'heure actuelle? - les captures d'écran sont convaincantes mais avec quelle carte graphique ont été faits les tests? - Gnoll fonctionne-t-il aussi avec des machines modestes équipées d'une carte graphique compatible seulement avec OpenGL 1.2? Je suppose que oui comme vous utilisez Ogre3D. - Etes-vous sûr que le segment n'est pas déjà utilisé?
Can you explain what gnoll brings more than Ogre3D?
Ogre3D is a graphic engine whereas gnoll is a game engine. Gnoll is a layer on top with the gestion of other medias and user interfaces (perpherics,sound,gameplay,...). Then Gnoll is completely data driven. There are not almost of Hardcode except some hack in order to simulate some part which missing. It was also possible to play at some games with only one executable. The différence is only on the data which passed in parameters. I want to do gnoll as similarly as scummvm(one executable which pass the name of directory that contained data), although the sources was open, everyone can use it that they want.
Currently, Gnoll had some bases and we arrive little by little toward fonctionalities more and more high level.
for the moment, we have things like:
-Organisation by message. a component communicates by messages instead of direct call. It permit a weak coupling and a better isolation fonctionnalities/source allows easier to add fonctionnalities.
-The game was cut in module(graphics, sound,...)
- Système d'objets persistent avec attributs dynamiques. Ce sont donc des objets automatiquement (de)sérialisés quels que soient leur source (cela pourrait etre un fichier aussi bien local que distant) dont on peut ajouter/supprimer/modifier les attributs.
Objects system with dynamics attributes. Those are object automaticly (un)serialized //en cour de trad
Le tout est évidemment mis dans un cache afin de gagner en temps de chargement. Le format de sérialisation est de type xml et l'on peut utiliser tout et n'importe quoi comme attribut (hashmap, list, float, etc.). Ces objets sont organises dans des "dépôts" pouvant être aussi bien un répertoire local qu'un répertoire distant ou un fichier zip.
- Construction automatique de paquets rpm grâce au service build.opensuse. Ils fournissent aussi automatiquement un dépôt. Pour le moment seule la distribution Fedora est supportée (opensuse ne marche pas car il faut des depots supplementaires. Ca se bidouille mais je n'ai pas eu le temps de m'y penche)
- Disponibilité d'un dépôt pour OpenSUSE. Par contre il ne supporte pas beaucoup d'architectures ni de version vu que je fais cela sur ma propre machine
- Gestion des sons. On peut donc charger et jouer des sons
- Gestion des niveaux "infinis" (sans temps de chargement visible). C'est une fonctionnalite presque finie de coder. Il ne me manque plus que le dechargement des pages et cela devrait aller, bien que je sens que je vais tout refaire car ce ne me convient pas vraiment. Ce systeme decoupe le monde en une grille dont on ne charge que les elements les plus proches
- Gestion des entrees utilisateurs completement abstraite avec possibilite de les gerer par des regles. On peut donc attribuer n'importe quelle action a n'importe quelle peripherique juste en modifiant un fichier (pour le moment, vu qu'idealement cela sera in game). Il y a aussi la possibilite de creer des regles permettant ainsi de produire certaines actions a partir de combinaisons d'evenements
- Classes diverses permettant de creer des fsm ou manipuler des threads (pool de threads par exemple)
- Systeme rudimentaire de logs
- Utilisation de scons pour la compilation, le deploiement de l'application et generation de la doc doxygen
- Systeme de camera souple et integrant plusieurs types de cameras basees sur des splines, third person, first person ou bien freefly
- Module de temps permettant d'etablir des evenements retardes et/ou recurrents
Qu'en est-il de la gestion des scènes en intérieur ?
Pour le moment il n'y a pas de difference avec le reste. Cela fonctionne donc par pages et des objets contenus dans ces pages
Quid de la gestion de la physique ?
C'est pour bientot ! Surement d'ici 2-3 mois pour un truc de base.