#0 

16-12-2010 03:15:06

mmorpglefilm
Abonné
Lieu: la galaxie UDFy-38135539
Date d'inscription: 18-05-2010
Messages: 162
Site web

Bonsoir, comme ce soir je ne savais pas quoi faire est j'avais pas envie de dormir j'ai eu l'idée créer un moteur de jeu (comme irrlicht...), j'ai regardé le code source d'irrlicht mais à chaque fois je copiais tout un fichier, puis il manquait telle fonction, je copiais cette fonction...y en manque une autre et ainsi de suite.....bon je sais...je n'arriverai jamais à en faire une fonctionnelle comme irrlicht, mais ça serait amusant de savoir comment ça marche, et je pourrais peut-être mieux comprendre irrlicht et le C++ tant qu'on y est....alors je voudrais savoir si il existe un tutoriel sur internet pour savoir comment créer ou au moins quelque chose comme....une belle fenêtre noire comme sur la TNT !!!

Merci de m'aider.

Hors ligne


#1 

16-12-2010 11:47:03

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

je n'est pas l'âme a écrire donc dsl si je manque de tact ... bref
dans un premier temps il faudrais savoir les api que tu souhait utiliser, opengl ou directx, linux ou windows, librairie graphique ( wxwidget, qt, ... ) ?

pose toi déjà c'est question, après regarde les doc des api ou de tuto comme http://nehe.gamedev.net/ ... il y a aussi des code d'exemple pour l’intégration a certaine plateforme comme win32 ou x11/xf86 une fois que tu a ton context opengl/directx tu fait se que tu veut ...

Hors ligne


#2 

16-12-2010 18:46:54

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

Salut mmorpglefilm.

tout d'abord, il ne faut pas confondre moteur de jeux et moteur3D. Cela parait un peu bête, mais il y a une
nuance qu'il faut bien comprendre. Irrlicht est un moteur 3D, cela veut dire qu'il ne s'occupe en gros que de
la partie rendu graphique. Un moteur de jeux t'offre l'ensemble des fonctions pour la prog d'un jeux, c'est à
dire le rendu 3D mais aussi la gestion physique, le son et music, la partie réseau, etc.. le tout intégré au
sein d'un ensemble le plus homogène possible. Par exemple NeoAxis ou encore Unity3D pour ne citer qu'eux.

En suite, la programmation d'un moteur3D n'a rien d'évident. Mais si ton approche est avant tout pédagogique,
alors pourquoi pas. Par contre chercher à partir sur un moteur existant n'est pas à mon sens la bonne approche.
Il existe une foule de tuto dans ce domaine, comme par exemple ici:
http://loulou.developpez.com/tutoriels/moteur3d/

Attention, cela demande déjà un niveau correcte en prog en générale et en C++ en particulier.

Je pense comme le souligne Magun, que commencer par te former à la mise en oeuvre de code de base simple sur
une des API graphique existante serait une meilleurs façon de débuter dans ce monde. Les tuto NeHe pour ce qui
est d'OpenGL sont effectivement très bon, et pour DirectX tu n'auras aucun mal à trouver ton bonheur sur la toile
aussi . Garde à l'esprit de toujours commencer par le début, ne pas bruler les étapes, sinon tu sera vite décourager,
surtout à ce niveau là wink


Force et sagesse...

Hors ligne


#3 

17-12-2010 00:01:52

mmorpglefilm
Abonné
Lieu: la galaxie UDFy-38135539
Date d'inscription: 18-05-2010
Messages: 162
Site web

Merci de vos réponses, mais je ne comprend pas très bien...irrlicht n'est qu'en fait une partie d'un moteur de jeu, c'est ça ?

Si je veux créer un moteur de jeu, il faut par exemple : opengl pour la partie graphique, irrklang pour le son, newton pour la physique etc....
Ce sont comme des extensions, ou des outils pour réaliser un jeu. (je me trompe pas là ?)

Dernière modification par mmorpglefilm (17-12-2010 00:02:07)

Hors ligne


#4 

17-12-2010 10:03:06

TUpac
Habitué
Date d'inscription: 08-09-2009
Messages: 387
Corrections: 1

Oui c'est ça. Tu peux même remplacer opengl par irrlicht, tu économisera des siècles de codage.
Sinon je dois dire que je suis ravis de revoir tmyke ici et je lui met un +1 pour le lien vers les tutos de loulou (c'est le must)


"Si vous ne partagez pas votre stabilité avec les pauvres, les pauvres partageront leur instabilité avec vous."

Hors ligne


#5 

17-12-2010 17:00:10

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

TUpac :

Sinon je dois dire que je suis ravis de revoir tmyke ici et je lui met un +1 pour le lien vers les tutos de loulou (c'est le must)


Merci TUpac, cela me fait plaisir de venir de nouveau ici de temps en temps, même si je ne code plus vraiment avec Irrlicht en ce moment wink

mmorpglefilm :

Si je veux créer un moteur de jeu, il faut par exemple : opengl pour la partie graphique, irrklang pour le son, newton pour la physique etc....


Oui, c'est un peu cela, comme le dit TUpac.

Maintenant, il faut éclaircir le but que tu poursuis. Veux tu te lancer dans la réalisation d'un moteur en passant
par une prog plutôt bas niveau, avec pour objectif de t'initier à la prog 3D, ou cherches tu à te doter d'outil pour
la création d'un projet bien précis ? L'approche est n'est pas la même suivant le cas...


Force et sagesse...

Hors ligne


#6 

17-12-2010 20:14:29

mmorpglefilm
Abonné
Lieu: la galaxie UDFy-38135539
Date d'inscription: 18-05-2010
Messages: 162
Site web

Plutôt du bas niveaux....je n'est pas vraiment de but précis, juste une idée d'un jeu dons je ne pense pas être capable de la créer...

Hors ligne


#7 

17-12-2010 20:49:21

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

Plutôt bas niveau donc, pour apprendre, et par la suite si tu t'en sort, faire une petite création de jeux si j'ai bien compris.

Avant de te lancer dans l'aventure, je serais tenté de t'orienter vers ce FAQ http://jeux.developpez.com/faq/3d/,
plutôt bien fait, essaie de la lire en entier, une cela fait, tu auras quelques bases théoriques et alors si tu es toujours motivé,
tu pourras commencer à te former sur l'une des deux API disponible sous windows wink


Force et sagesse...

Hors ligne


#8 

18-12-2010 16:23:09

mmorpglefilm
Abonné
Lieu: la galaxie UDFy-38135539
Date d'inscription: 18-05-2010
Messages: 162
Site web

J'ai commencer le tutoriel que tu ma dit de faire tmyke, toute l'après midi je les passer à faire le gestionnaire de log, et j'ai eu une erreur totalement incompréhensible (si un peut quand même) dans le log :

C:\Users\a\Desktop\azdazed\LogGes.h|58|error: no matching function for call to `std::basic_ofstream<char, std::char_traits<char> >::basic_ofstream(const std::basic_string<char, std::char_traits<char>, std::allocator<char> >&)'|

Je sais se que sa veux dire mes le reste....(exemple "std::basic_ofstream<char, std::char_traits<char>...."), j'en est pas la moindre idée...

l'erreur est sur cette ligne là :

CLoggerFile(const std::string& Filename = "Output.log") : m_File(Filename)
{
     ILogger::SetLogger(new CLoggerFile("Out.log"));
}


Je sais que c'est difficile mes si qu'elle qu'un pourrait m'aider sa serrait gentil...

Hors ligne


#9 

18-12-2010 17:03:48

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

il ne te manquerait pas un header par hasard ?


Force et sagesse...

Hors ligne


#10 

18-12-2010 23:01:36

TUpac
Habitué
Date d'inscription: 08-09-2009
Messages: 387
Corrections: 1

<fstream>


"Si vous ne partagez pas votre stabilité avec les pauvres, les pauvres partageront leur instabilité avec vous."

Hors ligne


#11 

19-12-2010 11:36:06

mmorpglefilm
Abonné
Lieu: la galaxie UDFy-38135539
Date d'inscription: 18-05-2010
Messages: 162
Site web

Le fichier est bien inclut est sa fais toujours la même erreur.

Hors ligne


#12 

19-12-2010 12:03:54

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

ton code est dans un headler ou le cpp ? car la syntaxe << constructeur(const std::string& Filename = "Output.log") >> n'est accessible que pour la déclaration de la fonction ...

Hors ligne


#13 

19-12-2010 12:10:00

mmorpglefilm
Abonné
Lieu: la galaxie UDFy-38135539
Date d'inscription: 18-05-2010
Messages: 162
Site web

La fonctions est d'un headler, les déclarations sont dans un CPP.
La ligne :
CLoggerFile(const std::string& Filename = "Output.log") : m_File(Filename)
{
     ILogger::SetLogger(new CLoggerFile("Out.log"));
}

Se trouve dans un healder.

Hors ligne


#14 

20-12-2010 14:57:03

TUpac
Habitué
Date d'inscription: 08-09-2009
Messages: 387
Corrections: 1

On dit ni headler ni healder mais simplement header.

mmorpglefilm :

La fonctions est d'un headler, les déclarations sont dans un CPP.


Je pense qu'il y'a confusion, les déclaration sont bien dans un header (.h) et le corp de la fonction dans un cpp.
Sinon, peutêtre une piste: Filename est une référence et je ne pense pas que tu puisse lui attribuer une valeur comme tu le fais ... m'enfin pas sur ...
essaye : CLoggerFile(const std::string& Filename) simplement pour voir ...


"Si vous ne partagez pas votre stabilité avec les pauvres, les pauvres partageront leur instabilité avec vous."

Hors ligne


#15 

20-12-2010 16:31:06

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

Non TUpac la syntax est correct mais tout dépendant si c'est la déclaration qui est dans le headler ou la fonction elle même ...
la déclaration le suporte mais pas la function

étant donner qu'il nous dit que les ligne situe dans le headler, je supose que c'est la déclaration, bref ! dans ce cas c'est le type de m_File qui n'a pas de constructeur adapter a std::string où n'autre cher ami ne fait pas la diference entre la fonction et sa déclaration smile

@mmorpglefilm: tu parle d'une ligne ... oui ok mais tu nous en donne 3, donc essaye de ne garde que le n'écessaire et compile, car franchement la on doit décomposer a ta place, sans pouvoir compiler !
     donc ma question est: est ce que cela viens de "CLggerFile(const std::string Filename = "Output.log)", "m_File(Filename) ou "ILogger::SetLogger(new CLoggerFile("Out.log"));"

du plus question logique que se passerat'il quand tu fait apelle a ILogger::SetLogger(new CLoggerFile("Out.log")); ? ne serais t'il pas plus judicieux de faire un ILogger::SetLogger(this); ?
car escuse moi mais même en ne connaisant pas la fonction SetLogger, je voie que tu par dans une coquille smile

new CLoggerFile fait apelle a SetLogger qui lui fait apelle a new CLoggerFile qui feras apelle à ?

Dernière modification par Magun (20-12-2010 17:31:32)

Hors ligne


#16 

21-12-2010 00:28:43

mmorpglefilm
Abonné
Lieu: la galaxie UDFy-38135539
Date d'inscription: 18-05-2010
Messages: 162
Site web

"La fonctions est d'un headler, les déclarations sont dans un CPP.", je me suis un peut tromper.

Ah non se n'est pas sur c'est ligne c'est sur c'ette là :

std::ofstream m_File;

Je crois (pas sur du tous) qu'on ne peut pas convertire les ofstream en string, voici le constructeur entier :

Code:

class CLoggerFile : public ILogger      //!Dans un fichier
    {
        public :

        CLoggerFile(const std::string& Filename = "Output.log") : m_File(Filename)
        {
            ILogger::SetLogger(new CLoggerFile("Out.log"));
        }

        private :

        virtual void Write(const std::string& Message)
        {
            m_File << Message;
        }

        std::ofstream m_File;
    };

Sinon je vais essayiez se que vous m'avez dit de faire.

Ou autrement si je n'est aucune solution je vais supprimer se constructeur, car d'habitude je n'utilise jamais cette fonctions qui permait juste de détecter les erreurs et de les écrire dans un fichier...

Dernière modification par mmorpglefilm (21-12-2010 01:29:28)

Hors ligne


#17 

21-12-2010 02:25:37

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

ofstream ne supporte probablement pas la surchage pour std::string mais en tout cas l'utilisant je sais que ofstream a une surcharge pour "const char*"
du coup tu peut faire << CLoggerFile(const std::string& Filename = "Output.log") : m_File(Filename.c_str()) >>
et si sa ne marche pas oublie le :m_File(...)... et essaye un apelle << m_File.open(Filename.c_str(), std::bin|std::out); >> (un truc dans le genre...) dans ton contructeur

tu peut tanter ifstream aussi qui gère la lecture et l'écriture la où ofstream n'a un acess quand écriture !

Hors ligne


#18 

24-12-2010 00:41:45

mmorpglefilm
Abonné
Lieu: la galaxie UDFy-38135539
Date d'inscription: 18-05-2010
Messages: 162
Site web

mes qu'elle mongol !!!!!

La seul chose que j'ai oublier c'est c_str() après le Filename.......bon je commence le gestionnaires de mémoire...la aussi sa va être dur !

Mes bon en même temps c'est pas étonnent.

Hors ligne


#19 

24-12-2010 10:17:17

TUpac
Habitué
Date d'inscription: 08-09-2009
Messages: 387
Corrections: 1

lol ça arrive même aux vétérans, y'a pas de honte à avoir.


"Si vous ne partagez pas votre stabilité avec les pauvres, les pauvres partageront leur instabilité avec vous."

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
881 membres
1427 sujets
11117 messages
Dernier membre inscrit: Bidule
11 invités en ligne
Aucun membre connecté
RSS Feed