Nazara Engine

Moteur de jeu libre en C++14

a marqué ce sujet comme résolu.

On en parle du fait que tu as développé un moteur de jeu utilisable quasiment tout seul ? :)

Phigger

Et que t’a toujours pas reçu un prix Nobel. :D

Urgau

On lui donne un prix Zesteux ? ;)

Pas de grande valeur ni de gros chèque à la fin ;) mais c’est l’intention qui compte (et c’est mérité, ton travail est titanesque Lynix, chapeau bas) !

+12 -0

Salut tout le monde,

Je vous annonce que je serais à l’IRL du groupe 42 (groupe de programmeurs, rien à voir avec l’école) et que vous êtes les bienvenus si vous souhaitez boire un verre.

Cette IRL se déroulera à Paris le samedi 2 septembre, j’arriverai un peu avant midi mais venez quand vous voulez (confirmez juste sur le groupe votre venue pour qu’on puisse organiser le tout).

+1 -0

Hello.

Je vous annonce la sortie de la version 0.4 de Nazara, qui a été particulièrement longue à sortir (huit mois depuis la 0.3) à cause de ce début d’année qui a été assez perturbant pour moi.

Malgré le rythme de développement plus lent qui a été adopté pendant cette période, le moteur a beaucoup évolué et la liste exhaustive des changements aurait juste été trop longue à faire, le changelog de la release (disponible sur GitHub) n’est donc pas exhaustif.

Tout d’abord, grâce au fait que Nazara est utilisé à mon boulot, beaucoup de correctifs ont été appliqués à l’ensemble du moteur (et plus particulièrement au niveau du SDK, de la physique et du réseau).
Ensuite, en terme de fonctionnalité, Nazara supporte maintenant les réflexions de type skybox (les plus simple) avec une partie du code pour gérer les réflexions dynamiques (en temps réel) qui est faite, le scripting supporte les coroutines, Nazara supporte maintenant le protocole ENet pour faire du Reliable-UDP (très utile dans le domaine du jeu vidéo en temps réel), et bien d’autres changements.

Pour la suite du développement, je compte attaquer une mise à jour graphique en commençant par mettre à jour le système de RenderQueue actuel pour le rendre plus performant et plus adapté pour les prochaines évolutions (telles que les réflexions dynamiques et le PBR).

L’écriture de tutoriel va également reprendre, le prochain tutoriel portera certainement sur la mise en place d’une scène 3D basique avec le moteur.

Côté évolution sur le plus long terme, j’ai pour objectif de mettre en place un nouveau module centré sur l’intelligence artificielle (domaine que j’ai eu l’occasion de développer à mon travail), ainsi que des outils graphique poussés (du style éditeur de scène).

Il est largement possible que je me base sur des outils existants (tels que déjà proposé) dans cette optique d’ailleurs.

Un de mes plans actuel est également de me lancer dans un jeu vidéo relativement simple développé avec le moteur de façon open-source, si ça peut intéresser des gens, mais avant d’annoncer une telle chose je préfère être sûr que je vais avoir le temps de le faire (et ne pas trop m’éparpiller dans différents projets).

Voici donc le lien pour télécharger la 0.4 (ou regarder le changelog):

Release 0.4

Une dernière chose, le chat en temps-réel autour de Nazara a récemment migré de Mattermost pour venir sur la communauté NaN pour ceux que ça intéresse :)

Enjoy!

+11 -0

Salut Lynix !
Tout d’abord bien joué pour cette nouvelle version, ça fait plaisir de voir un acharné tel que toi continuer à travailler sur son projet ! ^^

Ensuite j’aurais bien voulu savoir si tu tenais une sorte de Roadmap sur les prochaines évolutions à venir. Je pose la question parce qu’il doit surement y avoir des gens comme moi qui se demandent par exemple ou en est le rendu Vulkan, tu en parles brièvement dans tes reviews mais c’est si facile d’en manquer une et de rater l’info. :(

Autre petite question, pendant un temps il était question de faire un "mini éditeur", tu as lâché l’affaire ? (ce qui ne serait pas étonnant quand on sait quelle charge de travail ça peut représenter)

Et une petite dernière pour la fin, j’ai vu que tu utilisais stb_image pour le chargement d’images mais est-ce que Nazara gère les formats moins conventionnels et bien plus adapter au jeu vidéo comme ETC, DXT ou le petit nouveau ASTC ?

+0 -0

Salut Lynix !
Tout d’abord bien joué pour cette nouvelle version, ça fait plaisir de voir un acharné tel que toi continuer à travailler sur son projet ! ^^

Glordim

Salut, et merci !

Ensuite j’aurais bien voulu savoir si tu tenais une sorte de Roadmap sur les prochaines évolutions à venir. Je pose la question parce qu’il doit surement y avoir des gens comme moi qui se demandent par exemple ou en est le rendu Vulkan, tu en parles brièvement dans tes reviews mais c’est si facile d’en manquer une et de rater l’info. :(

Glordim

Je commence à me dire que je devrais tenir un blog tiens :D

Il y a une roadmap sur GitHub mais elle est très peu précise et il faudrait que je la refasse avec des sous-tâches, ou que je passe sur un logiciel peut-être plus adapté.

Concernant Vulkan, ce n’est pas prioritaire pour le moment même si ça m’arrangerait que ça soit fait rapidement (mais c’est assez compliqué à mettre en place malheureusement).

Autre petite question, pendant un temps il était question de faire un "mini éditeur", tu as lâché l’affaire ? (ce qui ne serait pas étonnant quand on sait quelle charge de travail ça peut représenter)

Glordim

Si tu parles de cet outil: Image utilisateur

Alors il est toujours d’actualité, mais pas comme éditeur, simplement comme importateur de modèles (donc beaucoup plus limité et facile à faire).

Et une petite dernière pour la fin, j’ai vu que tu utilisais stb_image pour le chargement d’images mais est-ce que Nazara gère les formats moins conventionnels et bien plus adapter au jeu vidéo comme ETC, DXT ou le petit nouveau ASTC ?

Glordim

Alors Nazara gère le format .dds (et le DXT avec) en théorie, je ne l’ai jamais testé avec des textures compressées par contre.
Les autres seraient une addition intéressante et pas compliquées à introduire, pourquoi pas. ;)

+2 -0

Hello tout le monde, ça fait longtemps qu’il n’y a pas eu de nouvelles ici.

Désolé pour ce long moment silencieux, mais néanmoins productif.

Alors, pour procéder dans l’ordre, il faut savoir qu’une des raisons du silence est que je me suis finalement lancé dans la réalisation d’un jeu vidéo avec Nazara, rassurez-vous cependant, ça ne signifie pas du tout que le moteur n’avance plus, au contraire il mûrit.

En effet je me suis rendu compte en utilisant Nazara à mon boulot depuis l’année dernière qu’il y avait beaucoup de problèmes/bugs qu’il m’était impossible de voir en développant plutôt qu’en utilisant le moteur.

Concevoir un jeu à l’aide du moteur me permet donc de mieux comprendre les éventuels problèmes de celui-ci, et aussi de réaliser un peu l’objectif de base que j’avais, parce qu’à la base si je me suis lancé dans la conception de moteurs de jeux, c’était avant tout pour faire un jeu (ce que je ne recommande à personne :D ).

Concernant le jeu, il s’agit bien évidemment d’Utopia, un jeu de programmation (qui à l’époque était un MMORTS de programmation, si si!).

Donc le principe du jeu est de gérer des combats de vaisseaux spatiaux (et à terme, un empire spatial) où chaque vaisseau est programmé par le joueur et agit indépendamment lors des combats.

Le projet est décrit ici:
https://zestedesavoir.com/forums/sujet/9642/jeu-de-programmation-utopia

Pour revenir au moteur, comme je l’ai dit il avance et notamment la version en cours de développement (la 0.5) inclut énormément de correctifs (Changelog).

Je travaille beaucoup sur les nouvelles render queues en ce moment ainsi que sur l’implémentation Vulkan qui progresse enfin.

Les nouvelles render queues vont apporter la possibilité de faire des widgets plus avancées (avec notamment - enfin - la coupure du rendu aux bordures), qui vont ensuite introduire le concept de layouts (pour éviter de devoir positionner les widgets à la main).

Suite à cela, je vais revenir aux améliorations graphiques du moteur, notamment rajouter un système de compositors pour gérer les effets et post-processes beaucoup plus facilement.

Je vous tiendrais informé dans tous les cas.

J’en profite aussi vite fait pour vous dire que j’ai ouvert un devblog, un blog consacré au développement, où je parlerais donc des avancées de Nazara ou d’Utopia, en plus d’articles plus généraux sur la programmation.

Vous le trouverez ici: https://sirlynixvanfrietjes.be (http://lynix.be fonctionne aussi, au cas où vous trouveriez le nom complet imbitable :-D ).

Des nouvelles soon !

+12 -0

Salut tout le monde !

Aujourd’hui j’apporte la bonne nouvelle: je me refocus sur Nazara (après avoir passé pas mal de temps sur Utopia, même si les projets ont et continueront d’évoluer en parallèle).

La raison à cela c’est qu’après presque six mois de développement (déjà o_O ) sur Utopia, surtout de mise en place et d’avancement technique, j’ai décidé qu’il était temps de faire avancer le côté graphique/audio/GUI (au final, tout ce qui touche surtout à l’expérience utilisateur). Et c’est quelque chose qui demande des modifications moteur que je repoussais depuis longtemps (par exemple le refactor des render queues qui fonctionne parfaitement depuis hier o/).

Et j’ai notamment constaté que j’avançais bien plus rapidement sur Utopia que sur Nazara vis-à-vis de tâches complexes, la raison à cela étant je pense liée fortement aux conditions de travail:

1) Je travaille sur Utopia à un horaire fixe, celui de mes lives Twitch et sous le regard de plusieurs dizaines de spectateurs (ne me laissant pas le loisir de procrastiner).
2) Je travaille sur Nazara sur mon temps libre, en dehors des lives (sauf dans de rares occasions quand il y a un bug ou une feature à intégrer, très liée aux besoins du jeu, telle que le support IPv6).

Du coup, afin d’avancer sur des tâches complexes de Nazara, j’ai décidé de dédié un de mes deux jours de stream au développement du moteur, notamment à ce qui est en lien avec l’expérience utilisateur.

Je vous propose donc de me retrouver, pendant une période indéterminée (d’un ou deux mois) le mercredi soir à partir de 18h15 en train de streamer le développement de Nazara sur ma chaîne twitch, à partir de ce soir. (Le stream du samedi/dimanche reste pour sa part consacré au développement d’Utopia.)

À très vite !

+3 -0

Hello! Pour être au courant il te suffit de me suivre sur Twitch, je l’annonce en général la veille. Sinon de toute façon c’est régulier (toujours le mercredi à 18h15, toujours le week-end à 14h30).

La prochaine session est demain à 18h15, où je vais bosser sur des effets en post process et un peu sur vulkan :)

+1 -0

Coucou.

Ça faisait longtemps que je n’avais pas posté de mise à jour concernant le moteur, et ça fait bien longtemps que je devais le faire mais je repoussais le moment, sans vous mentir, par pure fainéantise.

Alors pour commencer, mon nouveau travail m’a beaucoup occupé ces derniers temps, cela fait quelques mois que nous sommes en rush (avec des heures sup quotidiennes du coup) pour sortir notre jeu et cela a beaucoup affecté mon envie de programmer en rentrant du boulot malheureusement.

Mais tout ça se termine bientôt (j’ai l’impression d’écrire ces mots pour la quinzième fois).

Alors depuis que je me suis mis à faire des jeux avec Nazara, ce dernier avance au ralenti (et selon les besoins des jeux en question), mais il continue d’avancer heureusement.

Pour ce qui est d'Utopia (le premier vrai jeu que j’ai fait avec le moteur), l’avancement à atteint un prototype jouable où je me suis aperçu que l’idée qui avait été explorée n’était pas amusante, le scripting trop complexe, trop de facteurs à prendre en compte. J’ai donc décidé de mettre en pause le développement le temps de simplifier l’idée pour ensuite mieux y revenir (Voici tout de même une vidéo de ce que ça pouvait donner vers le milieu du développement).

J’ai donc décidé de commencer un second jeu dont l’idée me tenait à coeur, plus simple (en tout cas sur papier) et pas destiné à des programmeurs pour le coup (ce qui a l’avantage d’augmenter le public cible d’environ 9 millions de %), un projet de jeu 2D, une espèce de mélange entre teeworld et GMod. Burg’war.

L'une des premières images du projet
L'une des premières images du projet

Le concept est simple : c’est un jeu sandbox déguisé sous des airs de jeu de combat, tout le côté gameplay est entièrement scripté en Lua et ouvert à la modification. Envie de rajouter une nouvelle arme ? Allez-y. Envie de faire un mode de jeu qui soit la course à celui qui empile des objets le plus haut possible avant qu’ils ne tombent ? Go. Envie de faire un remake de Portal 2 en 2D ? Pourquoi pas.

Bon évidemment on est encore un peu loin de ces possibilités mais vous voyez le délire, et évidemment ce jeu est conçu avec Nazara.

Pour revenir sur le moteur, il y a eu beaucoup de changements dernièrement, avec notamment le support du text outlining :

Ainsi que du côté des widgets le support du line wrap (le saut de ligne automatique) et des scrollbar :

À côté de ça, le RichText arrive (la possibilité pour un texte d’alterner le style, la couleur, la police, la taille de chaque lettre) :

(Ok, c’est moche mais ça illustre les capacités).

Cette fonctionnalité se trouve pour l’instant sur sa branche à part et demande encore quelques petits avancement pour être mergée, mais après deux ans dans les cartons cette fonctionnalité (tout de même assez utile) arrive enfin.

D’autres changements vont arriver avant la sortie de la 0.5 comme par exemple je pense la disparition de la classe Nz::String (au bénéfice de fonctions libres pouvant fonctionner avec std::string), et l’intégration de la SDL2 comme backend (rendant le moteur compatible avec macOS et potentiellement Android et iOS dans la foulée, du moins techniquement. C’est aussi une façon d’améliorer le support Linux pour le fenêtrage).

Et last but not least, la refonte des matériaux devrait également arriver avec la 0.5.

Je vous avais mis un screenshot du PBR (technique d’éclairage moderne basée sur des propriétés réalistes des matériaux) partiellement implémenté dans Nazara :

Seulement ce screenshot avait été fait en modifiant le shader du phong lighting, le moteur continuait de son côté à considérer que tous les matériaux étaient basés sur du phong lighting. La grosse mise à jour des matériaux casse ce principe en rendant le tout totalement personnalisable, c’est-à-dire que vous pourrez faire vos matériaux comme bon vous semble et y associer autant de textures et de données (variables uniformes) autres que vous voudrez. C’est aussi l’occasion de passer à des uniform buffer objects au lieu des variables uniformes simples, améliorant la performance et surtout rendant le tout compatible avec par exemple Vulkan (ça a été un gros point de blocage pour la branche Vulkan).

Côté personnel j’ai commencé à m’intéresser au langage Rust, qui ma foi est un langage extrêmement intéressant. Je ne vais évidemment pas me mettre à réécrire mes projets en Rust, mais certains de mes futurs projets risquent d’être écrits dans ce langage, à suivre en tout cas.

Voilà, en résumé le moteur avance, plus lentement en ce moment à cause de mon boulot et de mes autres projets qui me prennent pas mal de temps, mais il avance quand même. :D

Au fait, pour ceux que ça peut intéresser pas mal de nouveaux articles sont sortis sur mon dev blog (à l’adresse https://sirlynixvanfrietjes.be ou https://lynix.be) et je continue évidemment les lives Twitch sur la programmation (notamment de Nazara).

Oh au fait, si vous souhaitez suivre les nouvelles autour de mes projets un peu plus fréquemment je dispose d’un serveur Discord où vous retrouverez les dernières nouvelles ainsi que les notifications (désactivables) pour mes lives sur un sujet particulier.

Bises.

+13 -0
Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte