#0 

25-08-2012 21:30:25

bloupbloup
Petit nouveau
Date d'inscription: 25-08-2012
Messages: 3

Objectif

Mon projet serait de créer une API assé complète de développement de jeu simple et rapide. Même si Irrlicht est vraiment simple d'utilisation je pense qu'on peut faire beaucoup plus simple, avec par exemple des classes unitée, terrain...

La première étape serait de créer un moteur de jeux (Sirius Engine) basé en Irrlicht et c++, fournissant des fonctions de haut niveau permettant de créerles éléments d'un jeu sans être noyé dans un code trop volumineux. Il gérera la physique, l'IA, le son... tout se qui est nécessaire a un jeu.

exemple :

Code c++ :


SUnity warrior;
warrior.loadSIRFile("media/sydney.sir");
warrior.add(this);


Ici on charge une unité a partir d'un fichier xml (.sir) et on l’ajoute sur la scène.

La deuxième étape serai de crée un éditeur de monde avec lequel on pourrais crée des scènes (terrain,unité, événement...) puis les sauvegarder pour enfin les utiliser avec Sirius Engine.

Sirius Engine

Pour vous donner une idée de l'organisation de Sirius Engine un petit schéma, un peu brouillon mais j'espère que vous comprenez le principe, il s'agit de tout centralisé dans une seule classe. Pour faire simple la classe application gère le menu et selon ce qu'il retourne lance une scène.




Pour être plus précis, la classe SiriusEngine inclura les autres classes du projet (SiriusScene,SiriusMenu...) et permettra de configurer tout ce qui est (driver,device). La classe SirusScene gérera tout ce qui est en rapport avec la scène (unité,environnement) en sachant que je considère qu'une scene a obligatoirement un seul terrain et un skydome. La classe SiriusMenu permettra de créer les menus du jeu. Et SiriusCore gérera tout ce qui la base de Sirius, comme les types, l'inclusion d'irrlicht et des principaux composants.

Lorsque quelqu'un voudra utiliser SiriusEngine il n'aura qu'a créer une classe Application qui héritera de SirusEngine. Toute les initialisations se feront dans la methode virtuelle « head » et le corp du programme dans la méthode virtuelle « body ». Il ne restera plus qu'à initialiser l'application avec la methode « start » et la lancer avec « run ».

La création d'une scene repose sur le même principe on crée une classe scene1 en incluant « SiriusEngine » et héritant de SirusScene, on initialise avec « head » et ensuite on utilise le « body ».

Extraits de code

SiriusEngine

Code c++ :


#ifndef SIRIUSENGINE_H
#define SIRIUSENGINE_H

#include "SiriusCore.h"
#include "SiriusScene.h"
#include "SiriusMenu.h"


namespace sir
{


    class SiriusEngine
    {

        public:
            SiriusEngine();
            virtual ~SiriusEngine();

        public:
            void setConfig(int screenX,int screenY,int engine);
            void start();
            virtual void head() {};
            virtual void body() {};

        public:
            EngineCore* getEngineCore() {return engineCore;}


        private:
            EngineCore* engineCore;

    };

}

#endif // SIRIUSENGINE_H



SiriusScene

Code c++ :


#ifndef SIRIUSSCENE_H
#define SIRIUSSCENE_H

#include "SiriusCore.h"


namespace sir
{

    class SiriusScene
    {
        public:
            SiriusScene();
            virtual ~SiriusScene();

        public:
            void start(EngineCore* pengineCore);
            void run();
            virtual void head() {};
            virtual void body() {};

        public:
            void loadTerrain(string file);
            void setTerrain();

        public:
            void useCameraFPS();

        public:
            irr::scene::ISceneManager * getSceneManager() {return sceneManager;}
            EngineCore* getEngineCore() {return engineCore;}
            scene::ICameraSceneNode* getCamera() {return  camera;}
            irr::scene::ITerrainSceneNode* getTerrain() {return  terrain;}



        private:
            irr::scene::ISceneManager *sceneManager;
            scene::ICameraSceneNode* camera;
            irr::scene::ITerrainSceneNode* terrain;
            EngineCore* engineCore;
            STerrain sceneTerrain;
            scene::ISceneNode* skybox;



    };

}

#endif // SIRIUSSCENE_H



Main

Code c++ :


#include <iostream>
#include "include/Application.h"

using namespace std;

int main()
{
    Application app;
    app.setConfig(1280,720,OPENGL);
    app.start();

    return 0;
}



Application

Code c++ :


#ifndef APPLICATION_H
#define APPLICATION_H

#include <SiriusEngine.h>
#include "TestLevel.h"

using namespace sir;


class Application: public SiriusEngine
{
    public:
        Application();
        virtual ~Application();
        virtual void body();


    private:
        TestLevel testLevel;

};

#endif // APPLICATION_H



TestLevel

Code c++ :


#ifndef TESTLEVEL_H
#define TESTLEVEL_H

#include <SiriusEngine.h>

using namespace sir;

class TestLevel: public SiriusScene
{
    public:
        TestLevel();
        virtual ~TestLevel();
        virtual void head();
        virtual void body();

    private:
        SUnity warrior;



};

#endif // TESTLEVEL_H



Expériences

Je n'es pas beaucoup, d'expérience pour des projet de groupe cependant, j'ai déja travailler avec une équipe de développement pour un projet de 6 mois dans le cadre de mon BTS IRIST.
J'ai ue plusieurs projet solo pour les étude, siteweb, jeu caml en licence.
J'ai également beaucoup programmer au tout début sur Dark Basic Pro, une expérience assé sympathique je connais la bête maintenant^^
Sinon j'ai installer après une grande bataille ogre... mais j'ai préférer Irrlicht, plus simple et je trouve qu'il se valle quoi qu'en on dise... les graphique sont similaire voir mieux je trouve.
J'ai inclus irrlicht dans Qt pour crée un éditeur (C'est d'ici que vien l'idée de se projet) bien évidemment, j'ai pas ue envie de continuer, car je voulais crée l'engine avant. http://irrlicht.sourceforge.net/forum/v … p;p=268640
J'ai crée pas mal de mini jeux sur dark basic pro qui n'on jamais abouti sauf 1 ou 2.

Et une petite vidéo en bonus tongue (l'organisation du code a un peu changer)
http://www.youtube.com/watch?v=Y_S49474ntk


Conclusion

Je sais que ce projet peut paraître peu un fou, mais j'aime a pensé qu'il est réalisable, je ne suis pas un professionnel de ce genre de choses juste un étudiant en Licence qui se débrouille un peu en c++, Irrlicht et Qt (pour l'éditeur) et qui se dit... why not ?

Je ne sais pas combien de programmeur seront nécessaire, 4 ou 5 je pense. Je recherche plus tot des gens qui connaisse Irrlicht, c++ et vus que je ne m'y connais pas trop: les moteur physique, d'IA ... que l'on peu inclure a Irrlicht bien évidement.

Donc si vous êtes intéressé dite le moi:)

Dernière modification par bloupbloup (26-08-2012 00:35:08)

Hors ligne


#1 

25-08-2012 22:25:18

johnplayer
Habitué
Date d'inscription: 30-09-2007
Messages: 431

Tout d'abord, bienvenu sur le forum.

Ayant moi-même un projet en cours, je ne viens pas pour postuler mais plutôt pour critiquer (de façon constructive bien entendu^^). Tu sais certainement ce que tu veux faire mais si tu veux trouver quelqu'un, il va falloir mettre plus d'explications.

Il faudrait expliquer ton diagramme et l'utilité globale de chacune d'elles. Si tu expliques bien, c'est que c'est clair dans ton esprit et si c'est clair dans ton esprit, ça donnera plus de poids à ton projet. Car il ne faut pas se leurrer, il y a plein qui ont voulu faire des projets mais qui ne savais pas réellement où ils allaient. Un truc intéressant à montrer aussi : ton expérience! Depuis combien de temps utilises-tu Irrlicht? Qu'as-tu fais comme projets avant? Même si tu n'es pas aller au bout et/ou qu'ils paraissent insignifiant, mets-les! Montres pourquoi tu penses pouvoir faire aboutir le projet et comment tu comptes t'y prendre.

Si je devais intégrer une équipe, c'est ces points là que je regarderai. L'impression que j'ai eu en lisant ta présentation, c'est : "Bien, le gars a une idée en tête, il a fait un petit quelque chose au vu de la vidéo MAIS il donne des explications succintes donc s'il ne sait pas expliquer globalement son idée, comment va-t-il faire lorsqu'il devra m'expliquer clairement ce que je dois coder?". C'est un peu violent mais je l'ai ressenti comme ça. Donc la vidéo donne une très bonne explication sur le principe de Sirius Engine mais maintenant explique clairement son fonctionnement (le fameux diagramme) pour montrer que tu sais où tu vas. Et bien sûr, comme je l'ai dit avant, montres que tu as l'expérience nécessaires.

Ah! Combien de gars? Certainement que des programmeurs, donc comment vas-tu gérer et dispatcher le code à implémenter?

Sur ce, bonne chance pour ton projet.

Edit : Il y a un autres trucs qui me chagrine. Tu appelles Sirius Engine un moteur de jeu, mais dans ce cas, qu'en est-il du son, de la physique voir du réseaux. Pour tes entités (soldats et autres), est-ce qu'il y aura une IA (même basique)?

Dernière modification par johnplayer (25-08-2012 22:35:06)


core i7 4970K @ 4GHz - 32GB ddr3 19200(2400MHz) - ssd samsung 840 evo 250GB - GTX1080Ti (4K) - Cooler master storm stryker blanc.
"L'alcool, c'est comme Activia, c'est actif à l'intérieur et ça se voit à l'extérieur."

Hors ligne


#2 

26-08-2012 00:33:24

bloupbloup
Petit nouveau
Date d'inscription: 25-08-2012
Messages: 3

Merci pour ton accueil smile

Alors j'ai écouter tes conseil, et j'ai essayer d'étoffé un peu tu me dira se que tu en pense smile

Dernière modification par bloupbloup (26-08-2012 00:42:02)

Hors ligne


#3 

26-08-2012 08:36:18

johnplayer
Habitué
Date d'inscription: 30-09-2007
Messages: 431

C'est mieux, j'ai réussi à cerner le fonctionnement global de ton Engine.

D'après ce que j'ai compris, tes scènes seront codées en c++, ne serait-il pas mieux de mettre les données de ta scène dans un xml? Tu auras ainsi type de fichier "Scène" pour un futur éditeur. Pareil pour les menus. Tu codes un loader et un exporter pour tes scenes et tes menus. C'est plus modulaire donc plus pratique.


core i7 4970K @ 4GHz - 32GB ddr3 19200(2400MHz) - ssd samsung 840 evo 250GB - GTX1080Ti (4K) - Cooler master storm stryker blanc.
"L'alcool, c'est comme Activia, c'est actif à l'intérieur et ça se voit à l'extérieur."

Hors ligne


#4 

26-08-2012 14:27:08

Copland
Modérateur
Lieu: ZarbiLand
Date d'inscription: 22-09-2006
Messages: 657
Site web

Salut,
L'idée par d'une bonne intention, sauf que je trouve déjà dur d'aboutir un projet de jeu sur Irrlicht au vu de ses nombreuses limites qui retardent sans cesse son développement, alors coder une surcouche générique qui soit assez optimisée pour en faire un pseudo moteur easy to use me parait être de la pure folie....
Après si des mecs sont prêts à te rejoindre et sont vraiment motivés, c'est toujours réalisable, mais préparez-vous à de très long mois de programmation smile.
Quand au loader/exporter, je rejoins l'idée de JohnPlayer, le xml est plus modulaire et te permettra de faire évoluer ton éditeur avec une rétro compatibilité.
Bon courage tout de même.


Config : I5 2400, ATI HD6870 1Go DDR5, 4Go DDR3.
Single Boot : Windows Seven.

Hors ligne


#5 

26-08-2012 14:38:27

tmyke
Administrateur
Date d'inscription: 24-03-2008
Messages: 1025

je rejoins parfaitement Coplan sur les commentaires,

Copland :

mais préparez-vous à de très long mois de programmation


et qui plus est par des mecs bien velus en maitrise des API et prog 3D engine (et ils courent pas les rues...)

mais le projet est louable, donc bon courage.
(je travaille, en tant que client par contre, avec un outil qui y ressemble assez finalement, code accessible et simple, éditeur, framework cool -> ça s’appelle Unity3D)
wink


Force et sagesse...

Hors ligne


#6 

27-08-2012 15:07:04

bloupbloup
Petit nouveau
Date d'inscription: 25-08-2012
Messages: 3

Déja je vous remercis d'avoir pris le temps de lire et de commenter smile

Vous avez peu être raison ce projet est sans doute audacieux mais, je ne pense pas qu'il soit irréalisable! De toute façon je travaille de mon coté dessus même si ca avancera lentement tongue La raison pour laquelle je cherche des gens c'est pour pouvoir partager des connaissances, en effet plus on est nombreux plus chacun peu apporté quelque chose ce qui évite les recherche qui n'en finisse pas sur google^^

Par exemple, je suis en train de réfléchir a un problème qui pourrait sans doute être réglé par une personne en quelque seconde: Je me demande qu'elle format de model 3d serai le mieux pour les personnages, je pense que md2 est de trop basse qualité mais, à ce qui parait c'est galère d'utiliser les animations de fichier x (il me semble avoir lu que le squelette était inversé), et pour le 3ds c'est impossible... ce qui me dérange c'est que j'aurais voulu utiliser des 3ds car ils sont facilement trouvables sur le net^^

Donc même si il  y a des gens qui sont intéressé pour codé une petite partie du moteur de temps en temps sa pourrait aidé... Ou sinon des gens qui n'on pas envie de codé mais avec lesquels je pourrais demandé conseil rapidement pour ne pas butter 3000 ans sur le même problème.

Et oui pour le XML j'ai prévus d’intégrer une fonction pour charger une scène entière, mais je voulais pouvoir faire les deux(coder en dur aussi) smile

Ps: vous connaissez un site qui fournisse des md2 animée?

Dernière modification par bloupbloup (27-08-2012 15:08:36)

Hors ligne


#7 

27-08-2012 15:41:03

tmyke
Administrateur
Date d'inscription: 24-03-2008
Messages: 1025

bloupbloup :

Par exemple, je suis en train de réfléchir a un problème qui pourrait sans doute être réglé par une personne en quelque seconde: Je me demande qu'elle format de model 3d serai le mieux pour les personnages, je pense que md2 est de trop basse qualité mais, à ce qui parait c'est galère d'utiliser les animations de fichier x (il me semble avoir lu que le squelette était inversé), et pour le 3ds c'est impossible... ce qui me dérange c'est que j'aurais voulu utiliser des 3ds car ils sont facilement trouvables sur le net^^


oubli le MD2, facile à implémenter, il est obselète depuis trèéésss longtemps.
Un format qui aujourd'hui fédère la plupart des moteurs (Unity, UDK, GStart, etc...) est le format FBX. Regarde de ce coté... Mon conceil est que si tu dois te faire suer à implémenté un formet, c'est vers celui là qu'il faut lorgner...

bloupbloup :

Donc même si il  y a des gens qui sont intéressé pour codé une petite partie du moteur de temps en temps sa pourrait aidé... Ou sinon des gens qui n'on pas envie de codé mais avec lesquels je pourrais demandé conseil rapidement pour ne pas butter 3000 ans sur le même problème.


Tu peux toujours venir ici, même si tu n'aura pas forcement une réponse rapide.
J'ai codé plusieurs engine3D, donc je peux toujours essayer de t'apporter quelques réponse générales ou éclairage, même si je n'ai pas le temps de rentrer dans les détails....
wink


Force et sagesse...

Hors ligne


#8 

27-08-2012 17:57:57

Magun
SleekThink Producer
Lieu: Punakha
Date d'inscription: 18-11-2007
Messages: 910
Corrections: 2
Site web

je suis entrin de chercher le format fbx, il propose quoi de plus ?

Hors ligne


#9 

27-08-2012 18:45:00

tmyke
Administrateur
Date d'inscription: 24-03-2008
Messages: 1025

C'est un format complet et moderne, static et animation. (c'est Autodesk)
Il est supporté par la plupart des logiciel (3DSMax, Maya, Blender, etc...) et en import il se généralise sur tous les outils.
Il tend à remplacer le format 3DS (qui commence sérieusement à dater).


Force et sagesse...

Hors ligne


#10 

27-08-2012 20:05:00

Copland
Modérateur
Lieu: ZarbiLand
Date d'inscription: 22-09-2006
Messages: 657
Site web

Config : I5 2400, ATI HD6870 1Go DDR5, 4Go DDR3.
Single Boot : Windows Seven.

Hors ligne


#11 

27-08-2012 20:20:42

Copland
Modérateur
Lieu: ZarbiLand
Date d'inscription: 22-09-2006
Messages: 657
Site web

Sans ça, il reste le modèle B3D format natif de Blitz3D que je trouve particulièrement bien et simple.
On trouve de bon convertisseur du fbx vers B3D donc à voir non ?



Il en jete se modèle, vous savez d'ou il l'a piqué le mec ?


Config : I5 2400, ATI HD6870 1Go DDR5, 4Go DDR3.
Single Boot : Windows Seven.

Hors ligne


#12 

28-08-2012 07:26:14

tmyke
Administrateur
Date d'inscription: 24-03-2008
Messages: 1025

Copland :

Sans ça, il reste le modèle B3D format natif de Blitz3D que je trouve particulièrement bien et simple.


Le format B3D est certainement le meilleurs format actuellement supporté par Irrlicht.
Par contre sont seul défaut est qu'il n'évolue plus vraiment, et qu'il sera donc lui aussi de moins en moins présent dans les tools et donc sa pérennité est très compromise.
Même si il est quasi absent du monde des graphistes et modelers, il reste encore assez présent dans le milieu de la création amateur de game3D.

Copland :

On trouve de bon convertisseur du fbx vers B3D donc à voir non ?


oui, mais quand on bosse sur un projet qui comporte pas mal d'asset, faire des conversions permanentes de format de modeles, c'est un peu lourd, surtout quand les transformation sont parfois aléatoire. wink


Copland :

Il en jete se modèle, vous savez d'ou il l'a piqué le mec ?


non, le mec l'a fait lui même lol
Mais il est bien chouette smile


Force et sagesse...

Hors ligne


#13 

02-09-2012 10:09:12

johnplayer
Habitué
Date d'inscription: 30-09-2007
Messages: 431

J'ai repensé à ce projet en fait, je pense qu'il serait plus judicieux de faire une classe pour scripter Irrlicht. Tu peux après créer un éditeur de script. Pour le rendre "plus simple" comme c'était ton but tu peux créer des fonctions préprogrammées pour réalisées une série d'action genre :

Code c++ :


void addObjetStatique(stringw pathmesh, stringw pathtexture, vector3df position...)
{
     /// création du node
     /// importation du mesh
     /// application de la texture
...
}



Et dans le fichier script tu mets cette ligne:

addObjetStatique("pathmesh", "pathtexture", vector3df(0.0f)...)

Au final, ton code ton jeu dans un script et comme dans l'exemple cité au-dessus tu écris une ligne au lieu de plusieurs donc tu gagnes en temps et en facilité de codage. Ensuite tu créés des loaders xml et tu peux encore simplifié la chose. Il faut juste mettre à jour la classe de script à chaque nouvelle version d'Irrlicht.


core i7 4970K @ 4GHz - 32GB ddr3 19200(2400MHz) - ssd samsung 840 evo 250GB - GTX1080Ti (4K) - Cooler master storm stryker blanc.
"L'alcool, c'est comme Activia, c'est actif à l'intérieur et ça se voit à l'extérieur."

Hors ligne


Options Liens officiels Caractéristiques Statistiques Communauté
Corrections
irrlicht
irrklang
irredit
irrxml
xhtml 1.0
css 2.1
Propulsé par FluxBB
Traduit par FluxBB.fr
883 membres
1429 sujets
11121 messages
Dernier membre inscrit: Saidov17
70 invités en ligne
Aucun membre connecté
RSS Feed