Auteur Sujet: Créer un jeu, comment s'y prendre?  (Lu 10825 fois)

0 Membres et 1 Invité sur ce sujet

Hors ligne Chao

  • Héros
  • *
  • Messages: 6 047
  • /人 ◕ ‿‿ ◕ 人\
Créer un jeu, comment s'y prendre?
« le: 22 février 2014 à 01:47 »
Tout d'abord, bonjour tout le monde :).

J'aimerai me lancer dans la création d'un jeu 2D et j'aimerai recevoir des avis en ce qui concerne la méthode de procéder.
Pour commencer voici un peu d'information sur mon baggage technique

Je suis en dernier trimeste de ma technique d'intégration multimédia. C'est quoi ça? En bref c'est une technique qui regroupe divers aspects du monde du multimédia. Nous avons fais du web, de la vidéo, du design, de la 3D, de l'animation 2D/3D, des jeux Flash et 3D, de la scénarisation et j'en passe.
En ce moment je me spécialise en programmation, intégration et design web.
J'ai des bonnes connaissances en PHP ainsi qu'en ActionScript 3 et je considère que je sais utiliser, à un niveau convenable, les fondements de la POO.

J'ai envie de me tenter à la création d'un jeu sans utiliser de moteur prémaché (RPG MAKER, Game Maker, Unity3D, etc) et c'est là que je me pose quelques questions.

Quel langage(s) devrais-je utiliser?
J'ai lu que le C++ est excellent pour la création de jeux vidéo mais qu'il est difficile à apprendre convenablement comme premier langage de programmation. Ayant déja de l'expérience dans certains langages utilisant la POO (JS avec BackbonesJS, PHP, AS3, un peu de Java et de Ruby) je suppose que je pourrais m'en sortir donc j'ai commencé à m'y mettre doucement.

Comment dois-je m'organiser?
Je n'ai jamais utilisé un langage de bas niveau auparavant et créer un jeu avec Flash ou Unity 3D, c'est un monde complètement différent qu'en C++.
Je commence comment? Je sais qu'il n'y a pas un point précis par où commencer et que je vais devoir commencer quelque part un jour ou l'autre, mais par quoi est-il généralement conseiller de commencer quand on bâtit un jeu à partir de zéro?

Si vous avez des librairies / langages / tutoriaux / conseils / etc. à me proposer, n'hésitez surtout pas :).

Merci et bonne soirée.

Hors ligne yoshi04

  • Conseiller J-A
  • Sheikah
  • *
  • Messages: 3 625
  • I can't hug every cat
Re : Créer un jeu, comment s'y prendre?
« Réponse #1 le: 22 février 2014 à 07:57 »
Je suis en dernier trimeste de ma technique d'intégration multimédia. C'est quoi ça? En bref c'est une technique qui regroupe divers aspects du monde du multimédia. Nous avons fais du web, de la vidéo, du design, de la 3D, de l'animation 2D/3D, des jeux Flash et 3D, de la scénarisation et j'en passe.

Est-ce que tu pourrais détailler ce que tu entends par 2D & 3D?

Citer
En ce moment je me spécialise en programmation, intégration et design web.
J'ai des bonnes connaissances en PHP ainsi qu'en ActionScript 3 et je considère que je sais utiliser, à un niveau convenable, les fondements de la POO.
J'ai envie de me tenter à la création d'un jeu sans utiliser de moteur prémaché (RPG MAKER, Game Maker, Unity3D, etc) et c'est là que je me pose quelques questions.

Quel langage(s) devrais-je utiliser?
J'ai lu que le C++ est excellent pour la création de jeux vidéo mais qu'il est difficile à apprendre convenablement comme premier langage de programmation. Ayant déja de l'expérience dans certains langages utilisant la POO (JS avec BackbonesJS, PHP, AS3, un peu de Java et de Ruby) je suppose que je pourrais m'en sortir donc j'ai commencé à m'y mettre doucement.

Comment dois-je m'organiser?
Je n'ai jamais utilisé un langage de bas niveau auparavant et créer un jeu avec Flash ou Unity 3D, c'est un monde complètement différent qu'en C++.
Je commence comment? Je sais qu'il n'y a pas un point précis par où commencer et que je vais devoir commencer quelque part un jour ou l'autre, mais par quoi est-il généralement conseiller de commencer quand on bâtit un jeu à partir de zéro?

Si vous avez des librairies / langages / tutoriaux / conseils / etc. à me proposer, n'hésitez surtout pas :).

Vu que tu débutes, tu as sans doute envie de commencer par quelque chose de simple. Si tu as envie de rester avec des éléments qui te seront familiers et éviter l'aventure C++ qui est longue et périlleuse, tu peux opter pour des outils/languages peu plus haut niveau.

AS3 est quelque part en train de mourir, il y a des alternatives intéressantes que tu pourrais considérer notamment HaxeLang qui a une syntaxe similaire à PHP/AS3, est multi-platform et semble plutôt puissant et mature.

Sinon tu peux également opter pour le très fameux Unity. Malgrès son apparence "pré-maché"/drag&drop interface etc., ça reste tout de même assez générique et accessible. Tu peux coder les scripts en Javascript, et la communauté est très active, tu ne manqueras pas de tutoriels et ressources.

Hors ligne Christopho

  • Administrateur
  • Héros
  • *
  • Messages: 6 224
  • Mymy, je t'aime :)
    • Solarus-Games
Re : Créer un jeu, comment s'y prendre?
« Réponse #2 le: 22 février 2014 à 08:30 »
En effet, le C++ est à éviter vu le temps d'apprentissage nécessaire.
Il existe d'autres langages à la fois puissants et faciles à apprendre, par exemple le Lua qui est très utilisé pour les jeux.
Je te conseille le framework LÖVE (https://love2d.org/) qui permet de créer son jeu en Lua. Il fournit tout ce qu'il faut pour afficher des images, jouer des musiques, etc.
Chaîne Twitch : diffusion en direct de sessions de développement de Solarus, de création de jeux, de parties de jeux vidéo.
Chaîne YouTube : replays des diffusions en direct, tutos Solarus
Compte Twitter : pour être au courant des nouveautés
Chat Discord : pour discuter en direct avec la communauté Solarus

Hors ligne Chao

  • Héros
  • *
  • Messages: 6 047
  • /人 ◕ ‿‿ ◕ 人\
Re : Re : Créer un jeu, comment s'y prendre?
« Réponse #3 le: 22 février 2014 à 15:15 »
Est-ce que tu pourrais détailler ce que tu entends par 2D & 3D?

Je crois que c'est assez clair, j'ai besoin d'expliquer la différence entre la 2D et la 3D?
J'ai developé des petits jeux 2D en AS3 et des jeux 3D avec Unity (Dont un complet et sympa que je présenterai peut-être dans un futur plus ou moins proche :mrgreen:).

Sinon tu peux également opter pour le très fameux Unity. Malgrès son apparence "pré-maché"/drag&drop interface etc., ça reste tout de même assez générique et accessible. Tu peux coder les scripts en Javascript, et la communauté est très active, tu ne manqueras pas de tutoriels et ressources.

J'ai utiliser Unity pendant plus d'un an et je dois dire que je déteste le truc.
La gestion des collision et des GUI par le moteur est affreuse et c'est peu dire.

En effet, le C++ est à éviter vu le temps d'apprentissage nécessaire.
Il existe d'autres langages à la fois puissants et faciles à apprendre, par exemple le Lua qui est très utilisé pour les jeux.
Je te conseille le framework LÖVE (https://love2d.org/) qui permet de créer son jeu en Lua. Il fournit tout ce qu'il faut pour afficher des images, jouer des musiques, etc.

Parfait, ça semble sympa, je vais aller voir ca :).
Je vais tout de même continuer mon apprentissage du C++ mais pour culture personelle et commencer par des trucs beaucoup plus simple qu'un jeu.

Hors ligne Morwenn

  • Sheikah
  • *
  • Messages: 3 272
  • And so what?
    • morwenn29 - YouTube
Re : Créer un jeu, comment s'y prendre?
« Réponse #4 le: 22 février 2014 à 18:33 »
S'il faut évoquer le C++, j'aurai plusieurs conseils à donner : déjà, le langage est immense et a plein de recoins étranges et de subtilités. Même après l'avoir utilisé pendant des années, tu peux toujours avoir des surprises, sans compter les comportements qui changent parfois d'un langage à l'autre. En plus, tu ne feras pas grand-chose avec juste sa bibliothèque standard (qui a elle aussi son lot de trucs subtils et parfois étranges), il faudra de toute évidence utiliser une autre bibliothèque derrière pour développer des jeux vidéos. De ce point de vue-là, il y a de plus en plus de monde à se pencher vers SFML2 ; ça peut être un bon choix.

Pour ce qui est du C++, j'ai souvent un gros problème avec les tutoriels : la plupart abordent le C++ comme une extension du C. Du coup, on retrouve énormément de code C dans les exemples, tandis qu'on apprend au fur et à mesure et n'utiliser la partie C que lorsqu'il est nécessaire. Si tu veux vraiment apprendre le C++, je te conseille de commencer directement par la dernière norme en date, le C++11 (à peu près supporté par les compilateurs GCC, Clang et Microsoft Visual Studio). Cette norme ajoute pas mal de trucs intéressants au langage et à la bibliothèque standard, par exemple les smart pointers, des trucs qui évitent d'avoir à gérer manuellement la mémoire quand on utilise des pointeurs, ça permet d'éviter énormément de problèmes. Cela dit, je ne sais pas s'il existe des déjà des tutoriels qui permettent d'apprendre directement le C++11 sans passer par la case C. Au pire, si tu as besoin d'aide, je pourrai toujours t'aider^^

Bref. Pour ce qui est du développement de jeux vidéo, tu devrais plutôt t'orienter vers Python ou Lua : c'est plus abordable et moins rempli de détails à la con :P

Hors ligne Chao

  • Héros
  • *
  • Messages: 6 047
  • /人 ◕ ‿‿ ◕ 人\
Re : Créer un jeu, comment s'y prendre?
« Réponse #5 le: 22 février 2014 à 19:47 »
Je vois, je vais abandonner complêtement l'idée de faire un jeu en C++ et essayer de me concentrer sur Lua (ainsi que Löve après passé un peu de temps avec Lua) pour le moment. Je suis toujours ouvers aux suggestions de langage / librairies qui se mixerait bien avec Lua/Löve pour le développement de jeu 2D.

Sinon autre que le langage utilisé, vous avez des conseils sur comment structurer un jeu? Je sais que tous les chemins mènent à Rome mais il doit tout de même y en avoir des plus simples que d'autre. :)



Hors ligne yoshi04

  • Conseiller J-A
  • Sheikah
  • *
  • Messages: 3 625
  • I can't hug every cat
Re : Re : Re : Créer un jeu, comment s'y prendre?
« Réponse #6 le: 22 février 2014 à 20:18 »
Est-ce que tu pourrais détailler ce que tu entends par 2D & 3D?

Je crois que c'est assez clair, j'ai besoin d'expliquer la différence entre la 2D et la 3D?
J'ai developé des petits jeux 2D en AS3 et des jeux 3D avec Unity (Dont un complet et sympa que je présenterai peut-être dans un futur plus ou moins proche :mrgreen:).

J'aurais du préciser "tes connaissances". Mais je pense que tu réponds à peu près à la question.

Löve est sympa, j'avais oublié de le mentionner, merci Chris ^^

Autre chose que tu peux faire si tu souhaites continuer à produire pour le web: Javascript + HTML5. Il y a tout un tas de bibliothèques qui font usage de l'API HTML5#canvas ou WebGL (je pense notamment à ThreeJS).

Hors ligne Wouf

  • Hylien
  • *
  • Messages: 1 120
  • C'est la faim !
Re : Créer un jeu, comment s'y prendre?
« Réponse #7 le: 22 février 2014 à 20:55 »
Si tu veux vraiment apprendre le C++, je te conseille de commencer directement par la dernière norme en date, le C++11 (à peu près supporté par les compilateurs GCC, Clang et Microsoft Visual Studio). Cette norme ajoute pas mal de trucs intéressants au langage et à la bibliothèque standard, par exemple les smart pointers, des trucs qui évitent d'avoir à gérer manuellement la mémoire quand on utilise des pointeurs, ça permet d'éviter énormément de problèmes. Cela dit, je ne sais pas s'il existe des déjà des tutoriels qui permettent d'apprendre directement le C++11 sans passer par la case C. Au pire, si tu as besoin d'aide, je pourrai toujours t'aider ^^
(Chao, tu peux directement sauter au paragraphe suivant ;) )
J'adore vraiment cette norme, mais force est de constater que le monde du travail peine à l'adopter, en particulier dans le domaine du jeu vidéo sur console (encore 3 à 4 bonnes années sans, parraît-il). Les toolchains consoles nécessitent une version modifiée du compilateur et se basent en général sur une version antérieure à l'apparition des premières features C++11. La nouvelle génération de consoles n'y échappe pas. Même la ps4 qui se vante d'avoir choisi Llvm/Clang, entre-autres pour son support irréprochable du c++11, utilise la version 2.8 ... Or le support de la nouvelle norme a commencé avec la 2.9 :mrgreen: THE CAKE IS A LIE
iOS la supporte depuis sa dernière version apparemment et Android un peu plus (basé sur gcc, support un peu moins bon que llvm/clang). Quant au trio desktop (win, mac, nux), c'est bon aussi :)

Chao : Effectivement, le C++ est un peu dur à approcher. Surtout dans le monde du dev console qui nécessite une compréhension poussée des méchanismes cachés derrière les abstractions du langage (on se réduit même à un sous ensemble suffisamment performant du langage). Unity est certes plus facile d'accès avec ses langages de script C# et Javascript, ainsi que son éditeur intégré, mais c'est loin d'être la panacée comme tu le soulignes d'ailleurs: vm -> lenteurs, bogues, prix version pro grimpant de version en version et j'en passe!
Au final, un petit framework de scripting comme python2/pygame ou lua/love2d fait l'affaire. Je suis d'accord avec ce qui a été dit plus haut :) Et s'il ne disposent pas d'éditeurs intégrés, d'excellents outils extérieurs tels que Tiled peuvent les remplacer ^^

PS: En France/Belgique, on parle d'infographie pour les compétences que tu cites.
« Modifié: 22 février 2014 à 21:02 par Wouf »
Marre des pavés ? Marchez dans la boue!
ハハ、あなたは私の罠に落ちた!

Hors ligne vlag67

  • Subrosien
  • *
  • Messages: 233
Re : Créer un jeu, comment s'y prendre?
« Réponse #8 le: 22 février 2014 à 23:38 »
Citer
Même après l'avoir utilisé pendant des années, tu peux toujours avoir des surprises, sans compter les comportements qui changent parfois d'un langage à l'autre.

Je n'ai pas la prétention d'avoir une grande maitrise du langage, mais effectivement, pour ce que j'en sais la vie du programmeur a 3 cycles. Au début t'as l'impression de progresser à une vitesse folle, ensuite tu stagnes pendant un long, long moment, puis tout te parait limpide, tu reprogresses et réintegre de nouveaux concepts très rapidement et en nombre à nouveau. :)

Citer
la plupart abordent le C++ comme une extension du C. Du coup, on retrouve énormément de code C dans les exemples, tandis qu'on apprend au fur et à mesure et n'utiliser la partie C que lorsqu'il est nécessaire.

En même temps historiquement c'est ce qu'il est. J'ajoute qu'on peut faire de l'OO en C, et manipuler la mémoire avec des langage de 4e génération, même si c'est pas vraiment très pratique ;)
Certes les spécifications sont différentes du C au C++ mais tu peux difficilement réinventer la roue, les 2 sont quasi-identiques si tu sors du très bas niveau et des syntaxes OO/générisation propre au C++.
Je t'accorde qu'ils ne sont pas destinés au même usage cela dit.

Citer
Si tu veux vraiment apprendre le C++, je te conseille de commencer directement par la dernière norme en date, le C++11 (à peu près supporté par les compilateurs GCC, Clang et Microsoft Visual Studio). Cette norme ajoute pas mal de trucs intéressants au langage et à la bibliothèque standard, par exemple les smart pointers, des trucs qui évitent d'avoir à gérer manuellement la mémoire quand on utilise des pointeurs, ça permet d'éviter énormément de problèmes.
Bof, j'ai pas regardé en détail mais boost faisait déjà très bien une grosse partie des nouvelles features du C++11 que j'ai pu voir, depuis longtemps. De toute façon grosso-merdo ça reste des concepts avancés, et c'est pas l'outil qui va faire le programme. Done is better than perfect comme dirait l'autre :)


Pour finir je plussoie, Love2D est vraiment un bon framework, plus bas niveau qu'Unity et sans GUI évidemment mais je supposes que c'est ce que tu cherches. Tu peux partir dessus les yeux fermés :)
« Modifié: 22 février 2014 à 23:56 par vlag67 »

Hors ligne Morwenn

  • Sheikah
  • *
  • Messages: 3 272
  • And so what?
    • morwenn29 - YouTube
Re : Re : Créer un jeu, comment s'y prendre?
« Réponse #9 le: 23 février 2014 à 02:33 »
En même temps historiquement c'est ce qu'il est. J'ajoute qu'on peut faire de l'OO en C, et manipuler la mémoire avec des langage de 4e génération, même si c'est pas vraiment très pratique ;)
Certes les spécifications sont différentes du C au C++ mais tu peux difficilement réinventer la roue, les 2 sont quasi-identiques si tu sors du très bas niveau et des syntaxes OO/générisation propre au C++.
Je t'accorde qu'ils ne sont pas destinés au même usage cela dit.
Concrètement, si tu codes en C++ dit « moderne », tu n'utiliseras rien de la bibliothèque standard C, ou presque, tu ne gèreras pas la mémoire à la main, et tu éviteras au maximum les pointeurs, ainsi que pas mal d'éléments du C utilisées pour le bas niveau. J'ai tendance à ne presque plus rien utiliser du C au final, à part les structures logiques et la partie irremplaçable du préprocesseur (includes, X-macros, etc...).

Bof, j'ai pas regardé en détail mais boost faisait déjà très bien une grosse partie des nouvelles features du C++11 que j'ai pu voir, depuis longtemps. De toute façon grosso-merdo ça reste des concepts avancés, et c'est pas l'outil qui va faire le programme. Done is better than perfect comme dirait l'autre :)
Boost simule la partie bibliothèque standard, et il le fait à vrai dire plutôt bien, c'est vrai. Mais ce que je voulais dire, c'est qu'il y a quelques ajouts simples au langage qui le rendent plus simple d'utilisation pour presque n'importe qui. Je pense par exemple à la boucle foreach, aux std::initializer_list, à auto, aux lambdas, à la syntaxe d'initialisation uniforme pour tout (adieu le most vexing parse /o/), à nullptr ainsi qu'aux mots-clefs override et final qui permettent d'exprimer clairement son intention. Tous ces trucs-là rendent quand même le langage bien plus simple à utiliser qu'il ne l'était^^

Après, en tant que grand amateur de programmation générique, j'adore l'ajout des templates variadiques, des alias template et des arguments par défaut pour les fonctions templates. J'accueille à bras ouverts les variables templates du C++14, et j'attends toujours les concepts ! Et je dois dire que les macros variadiques piquées au C99 permettent de faire des trucs assez drôles, mais ça devient sale :ninja:

Hors ligne Christopho

  • Administrateur
  • Héros
  • *
  • Messages: 6 224
  • Mymy, je t'aime :)
    • Solarus-Games
Re : Créer un jeu, comment s'y prendre?
« Réponse #10 le: 23 février 2014 à 11:26 »
+1 Morwenn. Quand on apprend le C++ en connaissant le C, le plus dur est d'oublier ses habitudes du C : ne plus utiliser, sauf dans des cas bien particuliers, de char*, de pointeurs, de macros ou d'arrays.

Les programmeurs C++ qui viennent du C ont tendance à polluer le code avec les habitudes dangereuses du C.
Chaîne Twitch : diffusion en direct de sessions de développement de Solarus, de création de jeux, de parties de jeux vidéo.
Chaîne YouTube : replays des diffusions en direct, tutos Solarus
Compte Twitter : pour être au courant des nouveautés
Chat Discord : pour discuter en direct avec la communauté Solarus

Hors ligne Wouf

  • Hylien
  • *
  • Messages: 1 120
  • C'est la faim !
Re : Créer un jeu, comment s'y prendre?
« Réponse #11 le: 23 février 2014 à 18:30 »
(suite du hs, tu peux passer ce message Chao ;))
Et les développeurs C++ qui ne viennent pas du C à polluer le code qui a essentiellement pour but la performance (consoles par ex) :mrgreen:

Le problème est autre : un programmeur qui se contente de conserver les mêmes habitudes d'un langage à un autre est un piètre programmeur. La même remarque s'applique pour un même langage appliqué à des domaines différents ^^

Edit : même d'une norme à l'autre. Il y a fort à parier que de nombreux programmeurs C++ continueront encore avec la norme 98 d'ici 5 ans. De la même manière qu'aujourd'hui certains programmeurs C++ n'utilisent pas encore les ajouts tels que les templates et les exceptions. Ce qui est parfois légitime pour certains domaines d'application, mais pas dans la plupart des cas.
« Modifié: 23 février 2014 à 18:41 par Wouf »
Marre des pavés ? Marchez dans la boue!
ハハ、あなたは私の罠に落ちた!

Hors ligne vlag67

  • Subrosien
  • *
  • Messages: 233
Re : Créer un jeu, comment s'y prendre?
« Réponse #12 le: 23 février 2014 à 20:40 »
Citer
un programmeur qui se contente de conserver les mêmes habitudes d'un langage à un autre est un piètre programmeur.

C'est peut-être un poil radical. La conception, l'ingénierie et l'optimisation sont trois domaines très différent. Tu peux être très doué conceptuellement parlant et choisir des techno pas adaptées ou faire une réalisation simpliste.
A la limite je serais d'accord de dire ça pour passer de l'ASM au C ou du Lua au PHP par exemple, là ou les domaines d'application sont différent en fait, ce qui rejoint la suite de ta phrase, mais bon pour passer du Java au C# on va pas me dire qu'il faut revoir drastiquement toute sa logique. ^_^
Si c'était vrai, Notch et beaucoup d'autre seraient de piètres programmeurs.

Pour moi le "problème" est plutôt lié à ton approche globale de l'informatique. Si tu estimes que t'es assez bon (pour pas dire un dieu), que ton approche est la bonne et donc que tu connais toutes les subtilités et que t'as plus besoin de progresser/te tenir au courant des nouveautés/comprendre les entrailles de ce que t'utilises, là t'es un piètre programmeur.
Si t'as une approche plus humble, que tu estimes qu'on peux apprendre tous les jours (et surtout de visions opposées aux tiennes) et que tu expérimentes dans la mesure du possible, là tu es bon (ou va rapidement le devenir).
Je parle bien de l'approche personnelle hein, pas dans la vie sociale où là tu peux troller comme un porc sur tes idéaux sans forcément être mauvais. :)

Au cas ou, le "tu" est impersonnel et ce paragraphe n'est pas une vérité absolue, bien sur.  ^_^
« Modifié: 23 février 2014 à 20:46 par vlag67 »

Hors ligne Wouf

  • Hylien
  • *
  • Messages: 1 120
  • C'est la faim !
Re : Créer un jeu, comment s'y prendre?
« Réponse #13 le: 23 février 2014 à 23:04 »
(toujours hs pour Chao)
Non, je ne trouve pas que ce soit un poil radical. Le C# et le Java ont des philosophies, des conventions et des implications différentes, et ce même en restant dans le paradigme orienté objet. Apprendre un nouveau langage ne se borne pas à la simple traduction des instructions. Un bel exemple entre le C++ et le Java est que pour ce dernier, toutes les méthodes sont virtuelles par défaut (et je reste dans l'orienté objet) et on s'en tappe un peu ; alors qu'en C++, c'est l'inverse car les performances sont prioritaires, ce qui force la réflexion "est-ce nécessaire dans mon cas". On peut certes "castrer" ses méthodes en Java en espérant qu'une optimisation soit faite, mais ce n'est pas une priorité dans ce langage. Et chaque choix est cohérent puisqu'il reste fidèle à la philosophie présente depuis la conception du langage considéré.
D'autres exemples ? La visibilité protected qui est également package en Java. La hiérarchie des namespaces en C++. En parlant de namespaces, l'habitude de déclarer un court alias plutôt que d'importer le package comme en Java, afin de préserver des collisions de nom sans se tapper le nom complet à ralonge.
Je m'y connais moins en C#, mais entre le Java et le C#/C++ : de nombreuses exceptions sont obligatoires en Java (checked exceptions) et la convention pousse à les utiliser, ce qui n'est pas le cas pour les 2 autres langages (autre philosophie). En C++, on différentie les allocations statiques et dynamiques d'objets sur la pile, pas en Java (sauf types de base et référence). Je pourrais aussi citer les appels de constructeurs d'une même classe entre-eux (pré C++11).

Ou l'absence de bloc finally en C++ puisque j'ai un lien sous la main :
http://cpp.developpez.com/faq/cpp/?page=exceptions#EXCEPTIONS_finally
Citer
Mais il ne s'agit là que d'une traduction en C++ d'une approche issue d'un autre langage. Or, quand on programme dans un langage, il convient de le faire selon les concepts propres à ce langage, et non avec ceux d'un autre. L'approche C++ à ce problème consiste à encapsuler cette gestion au sein d'un objet qui s'assurera dans son destructeur de la bonne libération de la ressource qu'il gère. Ainsi, on est assuré de ne pas avoir de fuite même en cas d'exception, tout en ayant une écriture plus légère car le bloc try...catch devient inutile dans ce cas.
Si tu ne trouves pas que Developpez.com soit la meilleure des sources, on retrouve des propos similaires dans des tas de livres. Je l'ai d'ailleurs relu récemment dans "The C++ programming language", un livre de l'auteur du C++.

En revanche, là où suis d'accord avec toi, c'est en amont, depuis l'analyse du problème jusque la conception abstraite ; ce qui peut d'ailleurs se faire en UML. Ensuite, lorsqu'on passe à l'implémentation proprement dite, spécifique au langage, il importe de se mettre dans la peau du langage choisi et de faire des choix d'implémentation propre à ce dernier.

Des exemples de visions radicales, tu peux en trouver à la pelle dans les threads de Linus Torvald ou même de Richard Stallman. Au delà du troll, c'est de l'extrêmisme :ninja:

Si c'était vrai, Notch et beaucoup d'autre seraient de piètres programmeurs.
Et qui te dit qu'il n'a pas eu besoin de changer ses habitudes et qu'il n'a rencontré aucun problème ? ;)
Notch n'a pas écrit qu'un seul jeu, c'est un fou furieux du making et ça ne m'étonnerait pas qu'il se soit déjà essayé aux autres langages, et donc un peu imprégné de leurs philosophies. Car comme tu le dis un peu plus loin, un bon programmeur a un esprit ouvert, ne se croit pas accompli ... Et ne croit pas non plus que son langage de prédilection l'est. Un programmeur ouvert s'essaie à des tas de langages et n'exclue pas l'idée de trouver mieux ailleurs :) (pour un même domaine d'application). Ou peut être aussi qu'il a fait appel à une autre personne de son studio pour l'aider dans la migration de langage ... Ca je ne sais pas.

Pour moi le "problème" est plutôt lié à ton approche globale de l'informatique. Si tu estimes que t'es assez bon (pour pas dire un dieu), que ton approche est la bonne et donc que tu connais toutes les subtilités et que t'as plus besoin de progresser/te tenir au courant des nouveautés/comprendre les entrailles de ce que t'utilises, là t'es un piètre programmeur.
Si t'as une approche plus humble, que tu estimes qu'on peux apprendre tous les jours (et surtout de visions opposées aux tiennes) et que tu expérimentes dans la mesure du possible, là tu es bon (ou va rapidement le devenir).
On est d'accord, et ça s'applique même à toute connaissance et compétence ;)

Je parle bien de l'approche personnelle hein, pas dans la vie sociale où là tu peux troller comme un porc sur tes idéaux sans forcément être mauvais.  :)
Tutafé, ce n'est pas l'habit qui fait le moine. Libre à toi de donner aux autres une image différente de toi, parfois même pour éviter les embrouilles ^^
« Modifié: 23 février 2014 à 23:06 par Wouf »
Marre des pavés ? Marchez dans la boue!
ハハ、あなたは私の罠に落ちた!

Hors ligne Morwenn

  • Sheikah
  • *
  • Messages: 3 272
  • And so what?
    • morwenn29 - YouTube
Re : Re : Créer un jeu, comment s'y prendre?
« Réponse #14 le: 24 février 2014 à 15:58 »
En revanche, là où suis d'accord avec toi, c'est en amont, depuis l'analyse du problème jusque la conception abstraite ; ce qui peut d'ailleurs se faire en UML. Ensuite, lorsqu'on passe à l'implémentation proprement dite, spécifique au langage, il importe de se mettre dans la peau du langage choisi et de faire des choix d'implémentation propre à ce dernier.
Et encore, même en UML, tu auras des points de variation sémantiques entre les langages; dans les cas complexes, l'héritage ne fonctionne pas de la même manière d'un langage à l'autre. Et c'est encore pire quand on essaye de mélanger les langages.

Des exemples de visions radicales, tu peux en trouver à la pelle dans les threads de Linus Torvald ou même de Richard Stallman. Au delà du troll, c'est de l'extrêmisme :ninja:
Pour avoir lu quelques-uns de ses messages dans la mailing list GCC, je peux confirmer que Linus est un extrémiste. Il passe son temps à dire de la moitié des concepts de programmation et/ou de leurs implémentations que ce sont des non-sens complets et qu'il faudrait brûler toutes les personnes les utilisant pour leur incompétence xD

Hors ligne vlag67

  • Subrosien
  • *
  • Messages: 233
Re : Créer un jeu, comment s'y prendre?
« Réponse #15 le: 24 février 2014 à 17:53 »
Citer
Le C# et le Java ont des philosophies, des conventions et des implications différentes, et ce même en restant dans le paradigme orienté objet. Apprendre un nouveau langage ne se borne pas à la simple traduction des instructions.
Autant je suis d'accord sur ça, autant nos avis divergent sur la suite du paragraphe. Pour moi la sémantique n'a pas grand chose à voir avec la logique.
Ce que je veux dire, c'est que bien sur que chaque langage a sa logique propre et différentes implémentations d'un même concept (c'est ce que je voulais dire un parlant de très bas niveau plus haut, c'était assez mal exprimé effectivement ^_^ ), mais une "mauvaise" implémentation ou un mauvais choix ne fait pas forcément un mauvais ensemble. Rien ne t'empêche de te servir de ça temporairement comme tuteur et de revenir dessus par la suite (ou pas), sinon pkgsrc ne serait jamais apparu dans DragonFlyBSD pour le premier exemple qui me vient en tête pour schématiser.
On est tous d'accord qu'il y a mille et une façon de résoudre un problème. On peut certes hiérarchiser ces façons selon une logique donnée, mais ce n'est pas parce que ta solution n'est pas la plus adaptée dans le langage/révision que tu es un pietre programmeur.

C'est vraiment tout ce que je voulais dire, je suis d'accord sur le reste sinon ^^
« Modifié: 24 février 2014 à 18:06 par vlag67 »

Hors ligne Teji

  • Héros
  • *
  • Messages: 6 721
  • Dessinateur Dingue
    • Portfolio
Re : Créer un jeu, comment s'y prendre?
« Réponse #16 le: 17 mars 2014 à 01:54 »
Alors plusieurs choses, faire des proto avec flash ou GM, c'est pas une honte et au final de très bons jeux ont pu sortir développés avec ces logiciels (ex: Hotline Miami avec GM).
Le tout, c'est surtout de prendre la solution qui répond à tes besoins.
J'ai utilisé le HTML et le JS pour créer un proto (plutôt avancé) d'un jeu génératif dont la progression s'itère à l'infini. L'avantage de ce langage pour moi, c'est qu'il est rapide à coder et que je peux tester mon jeu sur toutes les machines connectées (Ordi, mobiles, ...).

Définis déjà les bases de ton gamedesign, commence à bosser la narration et le LD, ce sera déjà pas mal.
Signé : Un mec relou