Créer un petit jeu (pour apprendre un langage) mais lequel?

Répondre
Partager Rechercher
Jour'

Je profite du post de Tchey sur le salon qui donne envie, pour me lancer dans l’apprentissage d'un langage.
Oui mais.. lequel?

J'aurais bien aimé faire un petit jeu style transport tycoon ( https://www.youtube.com/watch?v=nYthbtas3ws )
Alors oui, pas forcément aussi bien forcément, mais sur le principe.
C'est à dire, construire une gare, acheter une loco, des wagons adaptés à X ou Y marchandises, des rails et zou c'est partie dans un truc super moche

J'ai regardé un peu sur le net et je tombe surtout sur deux choix. C++ ou C#.
Mais bon, je n'arrive pas à vraiment savoir lequel prendre, sachant qu'on tombe sur des avis divergents à chaque fois...

Et vous, vous viseriez lequel?

J'ai déjà (ya plus de 5 ans) fait un peu (tout petit peu) de C ou C++ en créant une calculette style celle de windows (basique) avec création d'interface graphique.

(la liste des langages que j'ai appris y'a 5 ans, mais dont j'ai totalement oublié : Ladder, Grafcet, Structuré, FBD, C, C++ (Builder).)

Merci d'avance
Ca depend surtout de pourquoi tu veux apprendre la programmation a la base. Tu peux faire un truc rapide en C#, mais le langage est en perte de vitesse, c'est probablement un mauvais investissement de ton temps de l'apprendre aujourd'hui.

C++ c'est pour rester, mais c'est plus dur a comprendre (et pratiquement impossible a maitriser completement, c'est un truc de dingue comme c'est complexe si on veut tout comprendre). Si tu penses a une reconversion pro, c'est une bonne idee. Si c'est juste pour t'amuser, pas vraiment.

En alternative, le langage porteur en ce moment c'est Python. Ca fait tout, c'est simple a comprendre et mettre en oeuvre, tu as un gros ecosysteme, beaucoup de tutoriels, et une communaute active qui offre de l'aide facilement.
Effectivement c'est aussi pour me préparer à une reconversion, bien que je sais pas encore dans quelle formation choisir.

Donc, il faudrait que je vise python de ce fait? C'est aussi accès pro? (Enfin pour le boulot j'entends, c'est demandé?)
Python également, tu peux faire un Space Invaders en 1h30 :


Plus sérieusement, il y a pas mal d'outils déjà dispos (pour gérer l'affichage notamment, les interactions claviers, etc.) via notamment PyGame.
Citation :
Publié par Sgt Roger/Clemy
Effectivement c'est aussi pour me préparer à une reconversion, bien que je sais pas encore dans quelle formation choisir.

Donc, il faudrait que je vise python de ce fait? C'est aussi accès pro? (Enfin pour le boulot j'entends, c'est demandé?)
Plutôt oui si j'en crois certains graphiques.
http://www.developpez.com/actu/87863...-selon-l-IEEE/

Cependant si tu veut (vraiment) faire des jeux je ne suis pas convaincu. Le python est typiquement comme un langage de script contrôlé par un moteur en C++.

Autre lien utile :
http://carlcheo.com/startcoding#resources
Merci

Bon, j'ai aussi regardé des formations proposées genre Analyste-programmeur, mais ça ne vise pas particulièrement un langage précis... y'a d'autres termes à chercher plus particulièrement?
Je dis pas, parce que programmer, ça me botte bien (j'ai beaucoup aimé lors de ma formation TSAII).
Citation :
Publié par Sgt Roger/Clemy

J'ai regardé un peu sur le net et je tombe surtout sur deux choix. C++ ou C#.
Mais bon, je n'arrive pas à vraiment savoir lequel prendre, sachant qu'on tombe sur des avis divergents à chaque fois...

Et vous, vous viseriez lequel?
Pas C#. je n'ai absolument pas confiance en MS pour la pérennité de la technologie. Remember Silverlight, XNA, etc.
De mon coté, je code mon jeu en Python avec la librairie graphique Kivy (en dessous, c'est de l'OpenGL controlé en C dans SDL).

Python n'est pas le meilleur langage pour coder des jeux (quoi que pour coder un serveur multijoueur, c'est peut-être la meilleur solution), mais il est utile partout, très polyvalent, et terriblement efficace.

Si tu souhaites apprendre la programmation via la conception d'un jeu en toile de fond, c'est un excellent choix. Mais il faut garder en tête qu'il y a des solutions plus rapides et plus efficaces pour coder un jeu. Je pense en particulier à Unity et UE, mais qui ne poussent pas vraiment à apprendre la programmation en ligne de code à cause de leur utilisation massive de scripts et de blueprints.

Sinon, le C++ est toujours la valeur sure, mais ce langage est tellement vaste et compliqué, avec plein de petites subtilités qui trainent partout, que je ne le conseille jamais à un débutant.

Kivy c'est bien, mais pour un débutant, ça peut être déroutant: il faut apprendre son langage interne pour fabriquer les interfaces, et ça tourne autour d'une boucle d'évènements avec des callbacks de partout. Bref, pas génial. Si tu te lances dans Python, je partirais sur pygame, ou bien sur le canvas de tkinter (uniquement 2D).
Si tu te prépare a une reconversion faut surtout savoir ce que tu aimerais faire. Parce que Python et C++ c'est pas du tout les même métiers.

Perso je fuis Python comme la peste et j'ai hais mes seules expériences avec mais bon après question de goûts.
Citation :
Publié par Cpasmoi
Si tu te prépare a une reconversion faut surtout savoir ce que tu aimerais faire. Parce que Python et C++ c'est pas du tout les même métiers..
Effectivement, il faudrait déjà peut être que je commence par ça. A savoir par rapport à la formation.
Après pour moi, python ou c++, je ne connais pas du tout les différences, ce que j'aimerais ou non plus tard etc..

C'est aussi flou pour moi que la différence entre le portugais et l'espagnole

C'est aussi et surtout que dans les descriptions des formations, ça ne parle pas du tout du choix de langage...
En tout cas merci pour les réponses, je note quand même tout ça
Citation :
Publié par Xotraz
En Python y aussi pySFML. Question de goût mais niveau programmation pour moi SFML > SDL. C'est un portage avec cython je crois.
Non, pysfml est un "simple" binding.

Et tout comme avec SDL, on va pas très loin avec SFML. Ces projets sont des "bases" qui facilitent l'interaction avec les OS, les machines et les input, mais l'affichage est très souvent laissé à une autre bibliothèque type OpenGL. Mais bon, pour faire un pong ou un autre petit jeu sympas, pourquoi pas.

Citation :
Si tu te prépare a une reconversion faut surtout savoir ce que tu aimerais faire. Parce que Python et C++ c'est pas du tout les même métiers.
Perso je fuis Python comme la peste et j'ai hais mes seules expériences avec mais bon après question de goûts.
Au delà de la question de "métiers" ou de "goûts", c'est surtout une question d'objectif et d'utilisation. Par exemple, j'ai des routines de calculs à partir de la sortie d'un oscilloscope, je ne vois strictement aucun intérêt à les faire en C++, Python est là pour ça.

Dans le super calculateur à coté de mon bureau, les routines sont en C, mais leurs entrées/sorties sont gérées par un programme Python, qui réparti les calculs, les analyses et les réarrange. C'est pas toujours comme ça que c'est fait, mais c'est souvent tout aussi efficace et plus rapide que de s'amuser avec les bibliothèques mpi.

Et Python, c'est vraiment une grosse boite à outil. C'est bien plus facile à aborder pour un débutant que la jungle C++.

Sinon, personnellement, j'ai totalement arrêté C++, je trouve le langage inutilement riche et compliqué. Finalement, je n'utilisais que 2% de ses features. Autant faire du C et broder avec.

Citation :
Effectivement, il faudrait déjà peut être que je commence par ça. A savoir par rapport à la formation.
Après pour moi, python ou c++, je ne connais pas du tout les différences, ce que j'aimerais ou non plus tard etc..
Si tu es matheux, que tu fais des statistiques, du traitement ou de l'acquisition de données, de la physique, ou n'importe quoi qui t'inciterai à gérer des données ou des fichiers, Python est le choix naturel.
Si tu veux des faire des applications génériques, qui puissent être reprises/maintenues par d'autres personnes, le C++ semble plus adaptés.

Mais tout ça, c'est des grandes lignes. Aucun trait existe pour séparer distinctement les deux langages.
Citation :
Publié par Adau
Non, pysfml est un "simple" binding.

Et tout comme avec SDL, on va pas très loin avec SFML. Ces projets sont des "bases" qui facilitent l'interaction avec les OS, les machines et les input, mais l'affichage est très souvent laissé à une autre bibliothèque type OpenGL. Mais bon, pour faire un pong ou un autre petit jeu sympas, pourquoi pas.
Ah oui j'ai confondu avec https://github.com/bastienleonard/pysfml-cython (qui est plus à jour du tout).
Pour ce qui est de SFML, je sais pas ce que tu entends par affichage mais l'utilisation d'OpenGL est loin d'être systématique. C'est une possibilité mais disons que si on utilise SFML c'est justement pour ne pas utilisé directement OpenGL. Par contre pour ce qui est des GUI, là il faut soit se débrouiller soit utiliser SFGUI qui existe depuis peu.

Citation :
Publié par Sgt Roger/Clemy
C'est aussi et surtout que dans les descriptions des formations, ça ne parle pas du tout du choix de langage...
En tout cas merci pour les réponses, je note quand même tout ça
C'est sans doute mieux si ta formation ne t'enfermes pas dans un seul langage.

Concernant Python, il est vraiment intéressant pour le côté conceptuel et pour tout les intérêts qu'ont les langages de scripts. C'est clairement le langage pour débuter, mais faut pas s'enfermer dessus non plus.
Néanmoins après avoir vu qu'il était 250 fois plus lent sur un projet c'est difficile de l'apprécier (2 secondes -> 8 minutes). Je pense qu'après mes études je le fuirais comme la peste aussi, puisque comme bon langage de script il y a Lua. Et puis, question de goût mais je comprendrai jamais les gens qui trouvent ce langage élégant.

Dernière modification par Xotraz ; 18/01/2016 à 18h19.
Citation :
Publié par Xotraz
Pour ce qui est de SFML, je sais pas ce que tu entends par affichage mais l'utilisation d'OpenGL est loin d'être systématique. C'est une possibilité mais disons que si on utilise SFML c'est justement pour ne pas utilisé directement OpenGL. Par contre pour ce qui est des GUI, là il faut soit se débrouiller soit utiliser SFGUI qui existe depuis peu.
Dans ce cas, SDL ou SFML sont deux choses différentes alors (je ne connais pas trop SFML) et ne peuvent pas être comparer. SDL s'occupe de la gestion des fenêtres, des input, du son, et de l'affichage. Il possède bien quelques routines mais c'est tout. En gros, c'est un wrapper multi-plateforme donnant accès aux fonctions de bases nécessaires à la création d'un jeu ou d'un support multimedia.

Citation :
Néanmoins après avoir vu qu'il était 250 fois plus lent sur un projet c'est difficile de l'apprécier (2 secondes -> 8 minutes). Je pense qu'après mes études je le fuirais comme la peste aussi, puisque comme bon langage de script il y a Lua. Et puis, question de goût mais je comprendrai jamais les gens qui trouvent ce langage élégant.
Je veux bien l'article dans lequel tu as trouver ce benchmark. Je parie 10 euros que l'auteur faisait des boucles full-Python.
Python est lent, mais Python a un potentiel d'optimisation énorme, bien plus important qu'en lua par exemple. L'écriture de boucles imbriquées peut souvent être remplacé par des syntaxes pythonesques qui rendent un script 100 fois plus rapides. Si jamais ce n'est pas suffisant, il reste les ctypes et cython.

J'utilise Python dans un cadre de recherches en physique (et pour mon jeux ), et je l'utilise pour faire tourner mes simulations. Et derrière simpy/numpy, c'est du Fortran, ce qui le rend tout aussi rapide que la bibliothèque gsl pour inverser des matrices, calculer des FFT, ou résoudre des systèmes d'équations différentiels.

Quant à l'élégance, c'est les goûts et les couleurs, mais si on essaie d'être objectif, il est quand même dans le haut du panier face à java, cpp, ou encore ruby.
Citation :
Publié par Sgt Roger/Clemy
Effectivement, il faudrait déjà peut être que je commence par ça. A savoir par rapport à la formation.
Après pour moi, python ou c++, je ne connais pas du tout les différences, ce que j'aimerais ou non plus tard etc..
Python c'est un langage scripté qu'on trouve un peu partout et qui est hyper flexible alors je saurais pas trop te dire.
C++ ça sert beaucoup en informatique industrielle, programmation de systèmes embarqués, micro-controleurs (on est plus sur du C là), systèmes de simulation temps réel etc ...

Citation :
Finalement, je n'utilisais que 2% de ses features. Autant faire du C et broder avec.
Juste pour les chaînes de caractères si on peut utiliser C++ en lieu et place du C c'est un gain de temps massif.
En termes d'architecture logicielle la comparaison ne se pose même pas, mais "l'architecture logicielle" des fois ça sonne comme un gros mot et les gens préfèrent mettre tout en vrac n'importe comment puis se plaindre que le langage est dur à débugger.
Citation :
Publié par Adau
Dans ce cas, SDL ou SFML sont deux choses différentes alors (je ne connais pas trop SFML) et ne peuvent pas être comparer. SDL s'occupe de la gestion des fenêtres, des input, du son, et de l'affichage. Il possède bien quelques routines mais c'est tout. En gros, c'est un wrapper multi-plateforme donnant accès aux fonctions de bases nécessaires à la création d'un jeu ou d'un support multimedia.
Pour citer le site :
" SFML is a simple to use and portable API written in C++. You can think of it as an object oriented SDL. SFML is made of modules in order to be as useful as possible for everyone. You can use SFML as a minimalist window system in order to use OpenGL, or as a complete multimedia library full of features to build video games or multimedia softwares. "
Citation :
Publié par Adau
Je veux bien l'article dans lequel tu as trouver ce benchmark. Je parie 10 euros que l'auteur faisait des boucles full-Python.
Python est lent, mais Python a un potentiel d'optimisation énorme, bien plus important qu'en lua par exemple. L'écriture de boucles imbriquées peut souvent être remplacé par des syntaxes pythonesques qui rendent un script 100 fois plus rapides. Si jamais ce n'est pas suffisant, il reste les ctypes et cython.

J'utilise Python dans un cadre de recherches en physique (et pour mon jeux ), et je l'utilise pour faire tourner mes simulations. Et derrière simpy/numpy, c'est du Fortran, ce qui le rend tout aussi rapide que la bibliothèque gsl pour inverser des matrices, calculer des FFT, ou résoudre des systèmes d'équations différentiels.

Quant à l'élégance, c'est les goûts et les couleurs, mais si on essaie d'être objectif, il est quand même dans le haut du panier face à java, cpp, ou encore ruby.
C'est moi qui l'ait fait quand j'ai porté un Raytracer du Python au C++.

Mon Python était pas optimisé. Cependant mon prof connaît Python et nous avait montré comment l'optimisé. En passant par Numpy justement et ces opérations sur les tableaux.
Mais ça demande des connaissances mathématiques avancés. Je trouve absurde d'avoir un langage qui force à s'embêter autant pour aller vite, au point de se renier et d'utiliser un autre langage derrière. Notre prof nous a parlé de routines C, il avait même filé la solution (10 lignes bien dur à pigé sans type donc pas élégant ).

C'est pas comme ça que je conçoit l'informatique en plus. Pour moi on fait les maths avant qu'on réalise le programme éventuellement mais le programme lui est un ensemble d'objets qui interagissent dans un univers fixé. Pas question de faire des calculs mathématiques aussi éloigné du monde réel.

Enfin c'est comme ça que je vois ça, je suis qu'en L2. Les scientifiques ont l'air d'adorés Python par contre.

@Nelphit : Juste pour éviter les malentendus je suis d'accord avec toi. Même si gérer la mémoire à la main c'est une vision biaisé du C++ je trouve.

Dernière modification par Xotraz ; 18/01/2016 à 20h06.
Citation :
Publié par Xotraz
C'est pas comme ça que je conçoit l'informatique en plus. Pour moi on fait les maths avant qu'on réalise le programme éventuellement mais le programme lui est un ensemble d'objets qui interagissent dans un univers fixé. Pas question de faire des calculs mathématiques aussi éloigné du monde réel.
Tous les programmes ne font pas des calculs mathématiques poussées non plus. T'as aussi des programmes qui vont perdre beaucoup de temps en I/O, donc là les perfs du langages ou s'en fout un peu. T'as aussi le cas du "langage 1 est plus rapide que langage 2, mais sur le langage 2 je peux sans grand effort faire du multithreading", ou bien le "le langage est 10 fois plus rapide, par contre on a 10x plus de bug et on passe 10x plus de temps à coder car on doit gérer la mémoire à la main".
Bref, la performance du langage on s'en fiche dans pas mal de cas, c'est souvent pas ça qui va décider du choix du langage, encore plus sur des projets persos pour une personne voulant apprendre la programmation.

Donc +1 pour Python, surtout si tu es débutant. Et contrairement à qu'on peut lire parfois, Python ne se limite pas à du scripting.

Citation :
sans type donc pas élégant.
Lisp.
Hmm bon, et si on se concentre sur le jeu (type : transport tycoon), je reste sur du Python?
Si j'apprends le Python, ça va forcément me servir pour le C++, ou ça n'a rien à voir?

J'ai un coincoin qui m'a linké ça pour faire un petit jeu : https://www.scirra.com/construct2
Ca me semble effectivement pas mal, mais en testant le logiciel de plus près, j'ai peur qu'au final ça ne permet pas d'aller bien loin.
Mais me trompe-je?

Pour info, transport tycoon c'est surtout une interface 3D iso (bien qu'en 2D, ça marche aussi), beaucoup de paramètre à prendre en compte (si je prends X ressources, il y en a donc Z-X et le train pèse plus lourd, va moins vite, je gagne de l'argent, et éventuellement du multi, etc...), des sons (forcément...), et surtout, pouvoir mettre plus de contenu facilement et rapidement (tel un DLC ).

Toute ça, dans le cadre d'apprendre et en même temps me faire plaisir.

/!\ Je sais bien que je peux pas sortir un jeu tout beau comme ça rapidement, mais c'est surtout pour apprendre et j'aime beaucoup ce genre de programmation et l'automatisation. J'aime aussi optimiser à fond un truc à son maximum (rapidité, fonctionnalité, place, simplicité,...).

Après vous citez beaucoup de chose (c'est bien, je note et je met ça en favoris) mais je bite (hohoho blague, mouton...bite, octet, tout ça... ) pas grand chose...
Faut pas exagérer non plus, les structures de données vont resservir et l'algorithmie en général. Alors c'est pas la STD de C++, mais oui le Python va "resservir" niveau concept imo.
Sinon avant de faire ça je pense que tu dois considérer des projets bien plus petit. Pacmac c'est déjà très bien au début je trouve.

@Dessous : Tout à fait faisable je pense . Tu peut élargir le problème à des réseaux suivis par des wagons après en plus.

Dernière modification par Xotraz ; 18/01/2016 à 20h31.
Citation :
Publié par Cpasmoi
Python est orienté objet. C'est à peu près le seul point commun que tu auras avec C++.
Citation :
Publié par Xotraz
Faut pas exagérer non plus, les structures de données vont resservir et l'algorithmie en général. Alors c'est pas la STD de C++, mais oui le Python va "resservir" niveau concept imo.
Sinon avant de faire ça je pense que tu dois considérer des projets bien plus petit. Pacmac c'est déjà très bien au début je trouve.
Hmmm ok, bon

Et bah oui et non, si j'arrive déjà à faire rouler un train vec 2 wagons, et qui ramasse du charbon pour aller plus loin, c'est déjà pas mal , surtout si roule tout seul.

C'est assez simple je pense pour un début. Savoir faire bouger un carré d'un point A au point B, puis suivre une ligne. Genre de chose. Non?
Citation :
Publié par Whinette
https://www.codingame.com/start est sympa aussi.
J'ai envie de dire que le langage a peu d'importance à ton niveau, ça va vraiment dépendre de ce que tu souhaites faire comme reconversion.
Merci, bon idem j'ai l'impression que c'est sympa, mais on te lance dans un truc, sans vraiment quoi faire. L'impression qu'il me manque les bases.

Genre le jeu "thor", bon ok faut lui dire d'aller au S, SE etc.. mais à part changer ça, je vois pas quoi faire d'autre...

Et oui, pour l'instant je ne sais pas encore, j'ai aussi un peu peur qu'en formation, on ne puisse pas vraiment choisir le langage souhaité.
Si tu en es la, va vraiment falloir te remettre dans le bain Ce jeu ne te demander que de tester des conditions basiques (on te donne le x/y de ta cible, tu connais le x/y de ta position).
Répondre

Connectés sur ce fil

 
1 connecté (0 membre et 1 invité) Afficher la liste détaillée des connectés