Codeurs du soir, bonsoir.
J'ai un petit problème, disons que les avis entre les tutos et des connaissances sont très différents sur le sujet.
Donc je suis en apprentissage C++ et j'ai découvert le Python, j'ai du faire 2,3 chapitres en Python et je trouve ce langage vraiment pratique au niveau de l'écriture.
Après pour ce qui est de la portée du langage, bien sur je veut faire de "l'orienté objet" donc le C++ est la mais j'aimerais savoir si c'est vraiment limité l'orienté objet en Python, parce qu'on m'a dit que c'est un langage vraiment puissant mais limité au niveau graphique, et l'univers du piratage c'est pas mon truc donc je ne coderais pas pour faire des scripts toussa toussa.
Mon projet pour l'instant c'est de programmer quelque chose de simple, mais en grand nombre ( donc de grandes générations d'objets, algorythmes ...), je veux pas faire un truc 3D avec Shaders hyper réaliste a 20 000€ etc etc...
Voila
![]()
Coucou
Elle est où la question ? ![]()
Si c'est vrai que l'interface graphique du Python est sous-développée et ne permet pas de faire plus qu'un simple tétris.
http://www.minecraftforum.net/topic/13807-mcedit-minecraft-world-editor-now-open-source/
C'est de la 3D et c'est du Python, je crois que c'est avec la lib Pygame
M'enfin, ça dépend de ce que tu définit comme "sous-développée" aussi ![]()
disons limité en performances par rapport au Qt en C++.
(a ce qu'on ma dit, moi je n'y connais presque rien, je débute en orienté objet )
si tu veux faire de la 3d avec pyton regarde
pyogre (bind du moteur libre ogre3d)
panda3d (moteur libre)
blender (moteur libre)
pyopengl (bind opengl)
geexlab (studio shader opengl)
pypy (compilateur jit pour python 2.7)
videatomique: arrete d'upper ton topic. Eventuellement si ton topic passe en deuxieme page et que tu as toujours ton probleme. Mais la tu fais juste du bruit pour rien. Au prochain up illegitime, tu prends un kick.
Une vraie reponse a la question. Python c'est vrai que c'est lent compare a quelquechose comme C++ (quand c'est bien ecrit). Cependant 99% du code que tu ecriras n'aura pas besoin de performance. Donc les performances de python ne seront pas un probleme.
En particulier quand on debutte, les performances ne sont pas un soucis.
Python à aussi des avantages, certains jeux de stratégie très importants ont été développés en Python, et tout le contenu du jeux est stocké dans des fichiers texte, que le jeux récupère avant de se lancer, du coup on peu changer toutes les données du jeux facilement en modifiant les fichier texte sans avoir à tout recompiler.
Donc du coup on à pas mal de jeux de stratégie fait en Python pour cette raison, alors que les jeux 3D, FPS, simulateurs etc restent souvent faits en C++ pour des raisons de performance.
"Python à aussi des avantages, certains jeux de stratégie très importants ont été développés en Python, et tout le contenu du jeux est stocké dans des fichiers texte, que le jeux récupère avant de se lancer, du coup on peu changer toutes les données du jeux facilement en modifiant les fichier texte sans avoir à tout recompiler."
Il y a des trucs bien dans python, mais cet argument me semble completement pipeau. Je travaille en ce moment sur un shoot them up dont la configuration se fait entierement dans des fichier texte a cote du programme. Et le jeu est ecrit en C++ et fonctione sur PC et Android.
Je ne vois pas le rapport entre avoir des fichiers de conf ascii et python.
(ou j'ai loupe un truc dnas l'argument?)
je supose quil voulais parler des jeux civilization qui depuis le 4 utilise un noyau c++ avec une interface python.
http://en.wikipedia.org/wiki/Civilization_IV#Customization
Oui Godrik évidement tu as raison on peu aussi utiliser des fichier textes de config avec d'autres langages ![]()
Mais c'est sur des jeux de stratégie écrits en Python que j'ai vu le plus gros niveau de customisation dans ce domaine, est ce que parce que Python est interprété que cela ouvre la porte à plus de customisation possibles en dynamique ? Je cite sur le lien très intéressant donné par elite_2009 : "Game data and rules are stored in XML files, and a Software Development Kit was released in April 2006 to allow AI customization. Major parts of the interface, map generation, and scripted events are written entirely in Python and can be customized... said in September: "Editing these files will allow players to tweak simple game rules and change or add content. For instance, they can add new unit or building types, change the cost of wonders, or add new civilizations. Players can also change the sounds played at certain times or edit the play list for your soundtrack.""
Il s'agit pas de changer quelques contenus de variables dans le jeux, mais de pouvoir customizer le jeux totalement, ce que je voie très souvent dans les jeux de stratégie écrits en Python auxquels je joue (donc en simple utilisateur, pas en programmeur).
Sinon à part ça je ne sais pas si vous connaissez Pygame : http://www.pygame.org , ça permet de faciliter la programmation de jeux tout en s'appuyant sur des fonctions écrites en C, donc en somme avoir à la fois la facilité et une certaine forme de performance. Ça semble être utilisé par exemple par des gens qui aiment avant toute chose programmer des jeux, mais qui ne sont pas forcément des hardcore codeurs.
Etrangement, je ne pense pas que le benefice viennent de python lui meme, mais de l'architecture logicielle pour le supporter et d'effet de bord. Laisse moi expliquer ca.
Quand tu fais un jeu et que tu veux separer un noyau de jeu en C++ de l'interfacage en python, tu te retrouves forcer a programmer de facon modulaire. Il te faut faires de interfaces de programmations explicite et stable de facon a ce qu'un objet dans un "espace de programmation" different puisse l'utiliser. Que ca soit un programme python, un proframme lua ou une dll ecrite dans le langage que tu aimes, ca ne change pas grand chose a l'affaire. Tu as eu besoin de poser une barriere stricte dans la programmation de ton jeu. Avec une interface bien defini, documente et stable.
Cette interface est le reve des moddeurs. Mais lorsque tu couple ca a python ca va plus loin. Le code python est accessible en texte dans les ressource du jeu. Que ca soit dans un blob ou autre, le code est visible. Du fait, il est facil pour un programmeur (meme amateur) de comprendre ce qu'il se passe. Modifier le code de l'interface devient raisonnablement facil.
Etant donne que le code de l'interface est facil a changer, cacher les variables du jeu ou les ressources n'a plus beaucoup de sens. Tous les formats sont accessible depuis l'interface qui est facilement changeable. Quel interet alors de cache les variables. Un utilisateur motive va certainement trouver l'appel de fonction python qui va bien.
A mon sens, ce n'est pas tant le langage en lui meme qu'un aspect "open source" qui rend ces jeux si moddable et si modde. Si tu regardes un projet comme VLC. Le core est ecrit en C/C++, mais il expose une interface de programmation sous la forme de plugin. Originellement, les plugin devait etre ecrit en C ou en C++. et on a vu des myriades de plugin etre developpe. Ce n'est qu'assez recement que VLC a ajoute un support LUA pour ecrire les plugin de VLC.
Je pense que la cle du modding et compagnie, c'est une interface de programmation clair et la possibilite d'ecrire du code toi meme. Dans civilization c'est fait en python, dans wow c'est fait en lua et dans vlc c'etait en C++. Si ton interface de programmaiton masque les details saugrenue et permet de se concerter sur la tache a accomplir, tu aura du modding.
PS: A aucun moment je ne dis a OP que c'est pas bien python. Perso je fais tout en C++, mais je suis un peu con, ce n'est pas forcement adapte a ce que je cherches a faire.
Tout à fait godrik c'est certainement quelque chose comme ça.
Je précise que je n'ai jamais développé en Python, je me demandais juste pourquoi beaucoup de jeux de stratégie utilisent Python, et d'ailleurs ça m'est souvent arrivé de modifier ces fichiers pour adapter les jeux à mes besoins c'est très appréciable.
au fait natural selection 2 utilise lourdement lua (peut etre trop car le ratio perfs/graphismes du jeux est clairement desekilibrer).
pour les plugin python n'est pas forcement le meilleur choix. si tu veux seulement fournir une interface venant de ton jeux alors il est mieux de choisir lua ou angelscript[1] par contre si tu veux que le moddeur ai acces a toute sorte d'api externe (sockets, compression zip, serveur html/ftp...) alors python est mieux. il existe aussi dautre langage script come scheme/guile[2], javascript[3], dart[4], ...
[1] http://www.angelcode.com/angelscript/
[2] http://fr.wikipedia.org/wiki/GNU_Guile
[3] https://developers.google.com/v8/embed
[4] http://www.dartlang.org/
a noter aussi que python profite des implementations ecrites en java (jython) et C# (ironpython) qui facilite lintegration pour ces langages.
dailleur pourquoi javascript est si peu utiliser dans ce domaine la ? (je conais tres peux ce language)
J'ai pas d'exemple precis, mais j'ai entendu parle de plusieurs projet qui se scriptent en javascript. Je pense que c'est juste moins utilise parceque ca a une connotation plus web. Donc du coup les gens y pensent moins.
Perso je ne connais aucun de ces langages de script donc je ne saurais pas bien dire pourquoi l'un est prefere a l'autre.