Nazara Engine

Moteur de jeu libre en C++14

a marqué ce sujet comme résolu.

Joyeux Noël à tous !

Quelques images en plus de la nouvelle fonctionnalité, qui montrent qu’on peut quand même avoir de très beaux rendus à l’aide du moteur !

Image utilisateur
Image utilisateur
Image utilisateur

Que vous soyez ou non en famille, je vous souhaite de belles fêtes de fin d’années et rendez-vous en 2017 !

+14 -0

Hello,

Aujourd’hui sort la version 0.3 de Nazara, assez en retard.

Au programme, le retour du Frustum Culling (ce qui n’est pas visible à l’écran n’est pas rendu), pas mal de refactor, des corrections de bug, une nouvelle démo (présentée plus haut), et aussi les débuts de la GUI. (changelog complet plus bas) :)

Les performances ont été améliorées notamment grâce au retour d’un algorithme de frustum-culling cache-friendly (fonctionnalité disparue depuis l’intégration de l’ECS), vous n’avez rien à faire pour en bénéficier. Et à côté de ça les débuts de l’interface graphique de haut-niveau sont apparus.

1
2
3
4
5
6
    Ndk::Canvas canvas(world.CreateHandle(), window.GetEventHandler(), window.GetCursorController().CreateHandle());
    canvas.SetSize(Nz::Vector2f(window.GetSize()));

    Ndk::TextAreaWidget* textArea = canvas.Add<Ndk::TextAreaWidget>();
    textArea->SetSize({300.f, 150.f});
    textArea->Center();

Exemple ici avec un TextAreaWidget qui vous permet d’écrire du texte assez naturellement (ce qui est quelque chose de très chiant à faire, je tiens à le préciser :D , il existe aussi un LabelWidget (affichage de texte simple) et un ButtonWidget (pour cliquer).

Pour l’instant ça ne casse pas trois pattes à un canard, mais ça devrait rapidement devenir intéressant ! :)

En ce moment, je travaille sur beaucoup de fonctionnalités en même temps, comme un AST de shaders pour générer du code (afin de générer du GLSL pour OpenGL et du SPIR-V pour Vulkan), la transformation de la console pour utiliser les widgets, l’intégration d’ENet dans le moteur (http://enet.bespin.org, pour remplacer mes classes de RUdp), des loop-points pour l’audio, le support du Reflection Mapping (dont j’ai déjà publié des screenshots), et bien sûr le support de Vulkan.

Mes objectifs pour la suite sont de moderniser les RenderQueue du moteur (qui sont assez dégueulasse par rapport à ce qu’on pourrait en faire), rajouter du clipping aux widgets (pas une tâche aisée), intégrer le Reflection Mapping et le Light Scattering dans la branche master (j’avais prévu de le faire avant de sortir la 0.3, mais j’ai préféré ne pas alourdir la release encore plus), aussi intégrer (ne serait-ce que partiellement) les AST de shader, la console en widgets et ENet dans le module réseau.

Changelog et binaires:

Nazara Engine - Release 0.3

N’hésitez pas à rejoindre le Mattermost pour suivre l’actualité du moteur en temps réel ! ;) (et puis plus simplement si vous cherchez un groupe de discussion de programmeurs, ça marche aussi !)

Edit: Pour des raisons de connexion moisie, les binaires Windows ne seront disponibles que d’ici une petite demi-heure :D

+8 -0

Salut tout le monde !

Cette fois-ci, un bulletin d’information un peu plus personnel mais quand même assez lié à l’évolution de Nazara.

Pour ceux qui n’ont pas suivi, il y a un peu moins de deux ans, alors que j’étais en plein milieu de mes études en Belgique, un de mes amis français de longue date est venu me proposer de travailler dans son entreprise axée sur le jeu vidéo, située à Tours.
Les études ne m’ayant jamais réellement passionné, j’ai décidé (après quelques temps de réflexion) de sauter le pas et de me lancer dans la vie active en déménageant en France.

J’ai alors découvert les joies de l’administration française*, des RIB, des bières à six euros** et d’une base de code colossale mais absolument dégueulasse*** au sein de ma nouvelle entreprise.
Cela a évidemment eu un impact sur le temps que j’avais à consacrer à Nazara, mais j’ai continué, sans vraiment perdre de ma motivation.
Tout récemment j’ai changé de travail, je travaille désormais à Lyon (toujours dans le secteur du jeu vidéo) dans une jeune startup. Et les choses deviennent intéressantes :)

*: Entre la banque me réclamant un logement en France pour ouvrir un compte et les propriétaires me demandant un chèque français pour avoir un logement.
**: Ça et les frites françaises me font quand même regretter ma Belgique natale ! :D
***: Cela valait aussi pour la coding-style :D

En effet, la particularité de mon nouveau travail est que j’ai pu y joindre une autre de mes passions: Nazara est utilisé dans le développement du jeu que nous faisons, oui vous avez bien lu, Nazara est utilisé de façon professionnelle.

Après avoir bataillé pendant tant d’années, je suis fier de pouvoir le dire, en plus de ça le jeu est en bonne voie.
Bon après, Nazara n’est pas utilisé pour l’affichage (du moins du point de vue du joueur), un autre moteur plus connu (Unity) se charge de ça, Nazara étant principalement utilisé pour faire tourner le serveur.

Je n’ai pas le droit de vous en dire plus concernant le jeu actuellement, mais vous pouvez compter sur moi pour vous tenir informé dès que possible.

Concernant le développement du moteur, cela signifie que j’ai le droit de travailler sur Nazara durant mes heures de boulot lorsqu’il s’agit d’une fonctionnalité allant dans le sens de mon entreprise.

Vous vous posez aussi certainement la question de savoir comment ça va se passer au niveau des droits: Nazara est et restera libre, ça n’a jamais été remis en question.
La seule chose qui va changer est que le nom de mon entreprise peut apparaître au niveau des contributions, mais au niveau du repo public, la propriété reste celle du projet. À côté de ça néanmoins, Nazara a été forké de façon privée et il est probable que certaines modifications soient faites pour ne rester qu’à ce niveau, ou que d’autres mettent un peu de temps à passer du fork privé vers le repo public (ça ne devrait concerner que les ajouts de fonctionnalités ou modifications liées à l’entreprise, les bugsfixes et optimisations passeront vers le repo public).

Tout ça pour dire que ça y est, Nazara est utilisé dans l’industrie du jeu vidéo, c’est un premier pas. :) J’ai aussi pu remarquer que vous étiez de plus en plus nombreux à vouloir contribuer et/ou utiliser Nazara, et je vous en remercie !

Sans vous, je n’aurai jamais eu la volonté d’aller jusque là, et c’est loin d’être fini :)

+30 -0

J’avais déjà vus ton moteur sur OC, et le travail est juste ouf, bravo ! Je serais ravis de l’utiliser à l’occas ! J’avais pas eux trop le courage d’explorer le post sur OC vus le bazar total que c’est et les trolls a gogo mais là j’ai lus plus attentivement :)

Et surtout merci à toi de participer et d’ajouter ta (GROSSE) pierre à l’édifice qu’est l’open source !

Hello, petit bulletin de news écrit depuis mon téléphone, et donc assez court.

Le moteur avance toujours, et ce sur deux fronts, le premier c’est la partie qui concerne mon boulot (la plupart des commits de Master actuellement), le second concerne le rendu, j’ai pas mal avancé sur la partie chiante concernant les réflexions dynamiques et ça devrait arriver assez vite (pour la 0.4, avec le light scattering d’integré aussi).

Pour l’instant tout avance au ralenti je ne vous le cache pas, je parcours 1200km par semaine en train entre Tours et Lyon et je n’ai pas énormément de temps (ou volonté) actuellement, ça devrait revenir à la normale dès que je serais un peu plus installé (d’ici deux semaines déjà !).

Dans un tout autre registre, on compte organiser une IRL pour le Groupe #42, dont le bon quart des membres vient des topics de Nazara, c’est donc assez naturellement que je vous en parle ici.

Ainsi, si vous désirez prendre un verre avec d’autres programmeurs passionnés, n’hésitez pas à vous manifester, la première question pour le moment est la ville où cette IRL sera organisée, nous avons trois villes en vue : Nantes, Paris et Lyon.

Si vous venez d’un autre coin, n’hésitez pas à vous manifester !

Pour ma part je pense organiser une IRL dans chacune de ces villes (et d’autre si la demande est assez forte), on irait discuter, boire un verre et pourquoi pas manger (ça dépend du nombre de personnes).

Du côté de la date, ça risque de s’éparpiller entre le mois d’avril-mai jusqu’à juin-juillet, selon mes propres disponibilités (déménagement en vue !).

Du coup voilà, n’hésitez pas à vous manifester si vous voulez participer, que ce soit par MP, sur le groupe ou même ici pour encourager d’autres participants :)

+5 -0

Salut a tous!

Je regarde ce projet de loin depuis pas mal de temps, et je me demande s’il est facile pour un debutant en rendu 3d de l’utiliser (je cherche en ce moment un moteur 3D bien documente et facile d’utilisation)

De plus je me demande s’il fait des rendus d’un qualite comparable a Orgre3D ou d’autres moteurs existants..

Merci!

+0 -0

Hello, désolé de ne répondre que maintenant.

Oui il est assez facile à utiliser, même au stade actuel il faut un peu chercher dans l’interface du moteur pour savoir comment faire des choses un peu plus poussées que simplement afficher des modèles/sprites.
Le côté bien documenté n’y est pas, il y a une documentation et elle couvre pas mal de classes mais pas encore l’entièreté du moteur malheureusement.

Quant aux rendus, hé bien ça dépend beaucoup de toi, Nazara te laissant utiliser tes propres effets si tu le désires, malgré le fait qu’il y en ait moins de base qu’OGRE (je pense), je pense que c’est tout de même plus facile à utiliser.

Il y a aussi que Nazara est un moteur de jeu, pas un moteur de rendu, de fait il fait plus de choses qu’OGRE3D (qui n’a pas cette vocation), je pense au réseau, la physique, l’audio, etc…

+1 -0

Bonsoir,

Puis-je demander de l’aide pour un bête problème de compilation ?

(je vais ici continuer comme si on m’avait dit oui) : Je tente de compiler le main.cpp de l’exemple le plus basique fourni avec la release 0.3 de Nazara (j’ai pris la version linux_x64, et je suis sous Ubuntu 16.04 LTS).

Quand je lance le programme, voici le log produit par Nazara :

1
2
3
4
5
6
Initialized: Core
Initialized: Lua module
Initialized: Noise module
Initialized: Physics2D module
Initialized: Physics3D module
Segmentation fault (core dumped)

Et je sais pas trop où chercher la raison de l’erreur, et je ne maîtrise pas assez bien gdb pour trouver l’erreur. Des idées ?

+1 -0

Tu compiles bien en Debug ?

Tente ces commandes pour en savoir plus:

1
2
3
4
5
6
7
`gdb ./TonExemple`
** Dans gdb: **
> run
** Moment du segfault **
> list
> backtrace
> quit

Et poste le résultat si tu veux bien, ça semble venir de l’initialisation du module utilitaire (responsable du fenêtrage).

+0 -0

Non, j’ai compilé sans debug, mais ça n’a rien changé en ajoutant l’option -g (je compile avec gcc à propos)

Voici ce que me ce que gdb me dit :

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
Program received signal SIGSEGV, Segmentation fault.
strlen () at ../sysdeps/x86_64/strlen.S:106
106 ../sysdeps/x86_64/strlen.S: No such file or directory.
(gdb) list
101 in ../sysdeps/x86_64/strlen.S
(gdb) backtrace
#0  strlen () at ../sysdeps/x86_64/strlen.S:106
#1  0x00007ffff39646c1 in ?? ()
   from /usr/lib/x86_64-linux-gnu/libxcb-cursor.so.0
#2  0x00007ffff3965179 in xcb_cursor_load_cursor ()
   from /usr/lib/x86_64-linux-gnu/libxcb-cursor.so.0
#3  0x00007ffff6afbde6 in Nz::CursorImpl::Create (this=0x62d100, 
    cursor=Nz::SystemCursor_None)
    at ../../../src/Nazara/Utility/X11/CursorImpl.cpp:168
#4  0x00007ffff6a3f28a in Nz::Cursor::Create (
    this=0x7ffff6dead50 <Nz::Cursor::s_systemCursors+720>, 
    cursor=Nz::SystemCursor_None) at ../../../src/Nazara/Utility/Cursor.cpp:55
#5  0x00007ffff6a3f396 in Nz::Cursor::Initialize ()
    at ../../../src/Nazara/Utility/Cursor.cpp:73
#6  0x00007ffff6aea064 in Nz::Utility::Initialize ()
    at ../../../src/Nazara/Utility/Utility.cpp:116
#7  0x00007ffff74c493a in Ndk::Sdk::Initialize ()
    at ../../../SDK/src/NDK/Sdk.cpp:77
#8  0x00007ffff72810e6 in Ndk::Application::Application (this=0x7fffffffdd40)
    at ../../../SDK/include/NDK/Application.inl:33
#9  0x00007ffff727c81d in Ndk::Application::Application (this=0x7fffffffdd40, 
    argc=1, argv=0x7fffffffdef8) at ../../../SDK/src/NDK/Application.cpp:38
#10 0x0000000000404fe9 in main (argc=1, argv=0x7fffffffdef8) at main.cpp:18
+2 -0

C’est un bug connu et résolu sur la branche master (la prochaine version). Du coup je te recommande de cloner le repository ou télécharger un snapshot de master et de le compiler à la main (les instructions sont sur le wiki).
J’aurais bien sorti la 0.3.1 pour corriger ça mais je n’ai pas d’ordinateur assez puissant pour ça avant la semaine prochaine, donc c’est plus simple si tu compiles à la main :/

+1 -0

J’ai lu que nazara utilise les .md5 pour l’animation squelettale est ce que nazara peut lancer des animation préenregistrés (sous la forme de fichier .md5anim je crois ) ?? EDIT : apparemment oui ( selon l’example github ) mais quelle sorte de fichiers ??

Dans le tuto 1 du wiki il y a une erreur dans le code on récupère le nodeComp avec sprEntity.AddComponent<Nz::NodeComponent>(); puis on le recupere une 2eme fois avec getComponent

+0 -0

J’ai lu que nazara utilise les .md5 pour l’animation squelettale est ce que nazara peut lancer des animation préenregistrés (sous la forme de fichier .md5anim je crois ) ?? EDIT : apparemment oui ( selon l’example github ) mais quelle sorte de fichiers ??

Dans le tuto 1 du wiki il y a une erreur dans le code on récupère le nodeComp avec sprEntity.AddComponent<Nz::NodeComponent>(); puis on le recupere une 2eme fois avec getComponent

faymon

Mince j’avais totalement raté ton message.

La réponse est oui, Nazara supporte les animations sous format .md5anim

Quant à l’erreur, ce n’en est pas une, mais effectivement ça pourrait être amélioré :)

Hello tout le monde, ça fait longtemps que je n’ai pas donné de nouvelles, et il y a matière à dire ! :D

Tout d’abord, je ne suis pas mort et le projet non plus, malgré un ralentissement assez prononcé ces sept derniers mois, dû à mon nouveau travail et mon déménagement en attente.

Pour résumer la situation, en janvier j’ai eu un nouveau travail sur Lyon (je vivais à Tours jusqu’à présent) que j’ai pu négocier pour travailler partiellement depuis chez moi, impliquant néanmoins des aller-retour assez fréquents entre les deux villes (j’en suis à environ 32 000 km parcourus en TGV depuis ! :lol: ).

Cependant, je passais pas mal de temps par semaine avec mon vieil ordinateur portable (celui sur lequel j’avais décidé de faire Utopia, c’est dire) sans accès à mon ordinateur de travail actuel et il accumulait pas mal de fatigue, rendant mon travail dessus assez compliqué (c’est donc tout naturellement que j’ai profité de ces derniers mois pour jouer sur ce que mon ordinateur portable faisait tourner, des jeux comme Factorio, Startopia, Evil Genius, Giants: Citizen Kabuto, etc.).

Et le temps a passé, je travaillais occasionnellement sur Nazara, et le plus souvent depuis mon nouveau travail pour ajouter/corriger des fonctionnalités liées au projet sur lequel je travaille professionnellement.

Mais au mois de juillet, mon déménagement s’est enfin produit et je réside maintenant sur Lyon, ordinateur fixe à disposition et connexion internet en VDSL (ceux qui ont la fibre, faites comme si vous n’aviez rien vu…).

Tout ça pour dire que le développement de Nazara va de nouveau reprendre, mais que ne sais pas encore quoi choisir en terme de priorité.

À savoir que dans ma liste j’ai:

  • Les améliorations graphiques (notamment le PBR, les réflexions temps-réel).
  • Le nouveau renderer (Arrivée de Vulkan).
  • La génération des shaders par AST.
  • La suite des tutoriels.
  • Les widgets !
  • Wayland sur Linux.
  • Support mobile ?
  • Support manettes.
  • Le développement d’un jeu, bordel.

Retour sur ce dernier point, le fait de voir que Nazara est utilisable et fonctionne même plutôt bien au travail me donne envie de me lancer dans un jeu utilisant complètement le moteur, comme c’était le but au départ, et force est de constater que malgré que huit années soient passées, Utopia reste toujours un projet que j’ai à coeur.

Seulement voilà, j’ai tout de même un peu gagné en sagesse depuis et je comprends bien que l’objectif initial du projet (celui de 2009) avec toutes ces fonctionnalités est simplement irréalisable pour une personne (ou même une dizaine en fait).
Cela fait quelques années maintenant que j’en suis venu à cette conclusion, et que j’ai prévu de simplifier au maximum l’idée de départ et d’étendre par la suite vers ce qui soit réalisable, l’idée de départ étant bien sûr de faire un jeu de combat de vaisseaux spatiaux fonctionnant en réseau avec la possibilité de scripter les vaisseaux pour leur donner une IA propre.

Mais s’il y a quelque chose que le développement m’a aussi fait comprendre, c’est l’importance des contributions externes, ce sont elles qui ont apporté le début d’une documentation, quelques tutoriels sur le wiki, le support de Linux.

Et j’aime à penser que plus de gens encore seraient motivés à contribuer sur un jeu.

Tout ça pour vous dire qu’actuellement j’envisage de démarrer le projet de façon open-source et ouverte aux contributions, s’il y a des intéressés n’hésitez pas à vous manifester.

En quelques mots, je reprends enfin le développement de façon active et je voudrais votre avis sur mes plans futurs, sur ce qui vous intéresserait (tant au niveau du moteur lui-même que d’un jeu développé avec).

Merci de votre soutien au long de ces années !

+14 -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