Forum Programmation.autre Quel langage de programmation pour développer des jeux amateurs ?

Posté par (page perso) . Licence CC by-sa
5
22
fév.
2013

Salut, depuis quelques semaines je n'arrête pas de réfléchir sur quel langage de programmation serait idéal pour développer des jeux sur Linux et exclusivement sur Linux. Je me moque de la portabilité, ma principale motivation c'est de sortir des jeux pour Linux. La logique voudrait que je continue de programmer des jeux avec MonoDevelop et MonoGame mais je ne sais pas si c'est une bonne chose puisque le tout repose sur une technologie Microsoft breveté. C'est dommage, car j'aime le C# et je le comprend facilement contrairement au C++ qui ma embrouillé dernièrement. J'ai regardé du coté du Java également, car assez proche du C#, mais créer des jeux qui fonctionnent grâce à une machine virtuelle, je trouve que c'est moyen. Je n'ai jamais aimé les applications écrit en Java car il faut que la machine dispose de Java et je n'apprécie pas ce genre de dépendance. Il nous reste Python, vers lequel je penche le plus mais je n'ai trouvé aucun IDE qui vérifie le code pendant que je l'écris. De plus, j'ai du mal avec la syntaxe de Python étant donné que je me suis habitué au PHP et au C#.

Je ne cherche pas à faire des jeux très complexes. Pour le moment, je me considère comme débutant en programmation et en développement de jeux vidéo. J'ai un shoot'em up dont le code est presque terminée. Pour ne pas faire d'erreur, je préfère porter le projet sur Linux plutôt que Windows avec XNA.

Est-il préférable de continuer avec le C# sur Linux pour développer mes jeux ou est-il plus prudent de changer de langage de programmation et si oui, lequel ?

Merci pour votre aide et vos conseils.

  • # Pour l'IDE : Emacs + Flymake + pyflakes ou pylint

    Posté par . Évalué à 2.

    Pour répondre au point particulier concernant l'IDE…

    Personnellement, j'utilise Emacs et Flymake pour écrire la plupart de mes programmes, quelque soit le language (perl,python,C, Prolog, verilog…). Ça lance les programmes de vérification en tache de fond et ça met une ligne rouge là ou il y a une erreur
    Ça permet de n'utiliser qu'un seul outil. Combiner à yasnippet, ça permet d'être super efficace

    Spécifique à Python, j'ai googlé ça :
    http://stackoverflow.com/questions/1259873/how-can-i-use-emacs-flymake-mode-for-python-with-pyflakes-and-pylint-checking-co

    Sinon, il y a Eric comme IDE en Python pour Python, mais je ne l'ai jamais utilisé

  • # OpenGL pour les graphiques, C/C++ pour le code

    Posté par . Évalué à 4.

    avec ca, tu as presque tous les OS à ta portée.

    reste à gerer l'audio et les interactions utilisateurs (clavier/souris)

    sinon, java + opengl et ca te fais une appli multiplateforme

  • # Conseils

    Posté par (page perso) . Évalué à 3. Dernière modification le 22/02/13 à 17:19.

    C# et Monogame

    Microsoft vient d'annoncer l'abandon de XNA. Créer un jeu avec Monogame, qui est un portage de XNA, me semble très hasardeux.

    Les machines virtuelles

    Python, Java et C# utilisent tous des machines virtuelles. Pour les trois, il faut que l'utilisateur installe Python, Java ou .NET.

    Pour faire des jeux natifs, C++ est le langage le plus utilisé. Il y en a d'autres, mais c'est plutôt anecdotique.

    Java ou Python

    Java et Python dispose de très bons frameworks pour faire des jeux: les principaux sont pygame, libgdx, playn.

    Après c'est une question de goût et du jeu que tu veux faire: python est plus lent, mais plus simple que java au début.

    Pour te faire une idée, tu peux commencer par regarder le code voire contribuer à des jeux existants: http://linuxfr.org/wiki/jeux_libres_linuxfr

    http://devnewton.bci.im

  • # Python, le meilleur choix ?

    Posté par (page perso) . Évalué à 3.

    Je me suis forcé à utiliser monogame / monodevelop et franchement ce n'est pas terrible. J'ai passé une après-midi à tout adapter. J'étais content car j'avais plus qu'à compiler et voir le jeu tourner… Bah tu parles, rien ! Impossible de charger / afficher les images etc. D'après la console c'est un bug de monogame et même quand j'essaie d'afficher une image dans un projet vide, même erreur. De plus, la communauté est vraiment silencieuse, du moins sur Linux. Bref, monogame j'oublie définitivement.

    Je pense que je vais m'attaquer sérieusement à Python, le problème c'est que tout ce que je vois comme jeu, semble sous exploité cruellement ses possibilités ou alors peut être que je me trompe. Je vais vous présenter le jeu que je suis en train de réaliser en vidéo :

    http://www.youtube.com/watch?v=05h3CaIVzlI

    Je pense que Python devrait faire largement l'affaire.

  • # Du web

    Posté par (page perso) . Évalué à 2.

    Je te conseille de te tourner vers le web.

    Le web va te permettre de bénéficier de librairies nombreuses et performantes, de la plus grande communauté de développeurs. Tu vas pouvoir faire un jeu multiplateformes du premier coup ce qui te permettra de le partager efficacement. C'est plus simple de cliquer sur un lien que d'installer Python.

    Si tu n'aimes pas le JavaScript, tu peux utiliser un des 12 000  langages qui se compile en JavaScript (voir cette liste https://github.com/jashkenas/coffee-script/wiki/List-of-languages-that-compile-to-JS). Je tiens juste à mentionner Emscripten qui est un compilateur vers JavaScript te permettant par exemple d'utiliser des outils en C.

    En ce qui concerne les performances, les machines virtuelles JavaScript sont maintenant pas trop mauvaises pour un tel langage (interprété, prototypes, typage dynamique…). Même si un bench n'est pas une valeur universelle, regarde http://benchmarksgame.alioth.debian.org/u32/benchmark.php?test=all&lang=v8&lang2=csharp pour la différence entre V8 et Mono par exemple. Pour le rendu, les navigateurs récents peuvent utiliser le GPU de manière transparente, et les performances sont alors excellentes.

    Ce n'est pas un hasard si de plus en plus de systèmes d'exploitations se tournent vers le Web (windows, tizen, firefox os, webos, etc…). Le jeu vidéo sur le web est peut-être encore un peu jeune et le marché n'est pas encore stabilisé (il suffit de voir le nombre d'outils en concurrence dans tout les domaines), mais te former sur ce domaine n'est à mon avis pas du temps perdu.

    • [^] # Re: Du web

      Posté par . Évalué à 2.

      Peut-être que faire des jeux dans un navigateur c'est cool, mais sa limite vachement les possibilités :

      • Niveau performance, surtout sur Linux, c'est vraiment pas encore ça. La 3D, sauf avec les drivers proprio, c'est pas super rapide. Alors à travers un navigateur, c'est encore moins rapide. Mais comme tu le dit, ça passe quand tu as l'accélération graphique, cela reste néanmoins plus lent qu'en natif.
      • Pour le stockage des données, des textures, maps (…) tu vas en chier, et ton jeu va mettre 10 ans à charger.
      • Le mec dans le Cantal qui a un bon ordinateur, mais qui n'a pas l'ADSL, il est baisé.
      • La consommation mémoire vas faire mal, mais alors très mal aux yeux.
      • Tu perds la possibilité de faire une LAN, une vrai, avec un bon ping.
      • T'as pas intérêt à avoir un onglet youtube d'ouvert, ni même trop d'onglets sinon tu vas avoir des problèmes de mémoire, voir d'affichage.
      • Trucs mineurs :
        • Moins de raccourcis clavier dispo
        • Le fullscreen et les navigateurs, c'est bof.
        • Pour le débogage, ça vas être chaud.

      Après pourquoi pas, j'avais vu un clone de teeworlds hyper basique sur navigateur (je n'ai pas retrouvé le lien), le rendu graphique était bien mais totalement injouable, avec des clics de souris qui n'était pas pris en compte, et des lags après 2 minutes de jeu.

      Une petite dernière chose : Si tu veux garder ton code secret, sa vas pas être possible niveau client.

      • [^] # Re: Du web

        Posté par (page perso) . Évalué à 2.

        Les performances 3D sont bof mais en 2D c'est quand même très correct.

        Le mec qui est dans le cantal et qui n'a pas l'ADSL il attendra que ça charge, mais il a l'habitude. Et il ne va pas attendre plus qu'avec le téléchargement du jeu natif. Il faut peut-être plus faire attention à la taille des données qu'un jeu natif, mais c'est dommage de s'arrêter à ça.

        La consommation mémoire ne va pas être forcément excessive. Sur le benchmark entre V8 et Mono, la consommation mémoire est en moyenne deux fois plus faible pour V8. Le rendu du navigateur risque de prendre lui aussi un peu de mémoire mais franchement c'est pas ça le principal.

        Pour une LAN, rien n'empêche d'héberger le serveur en local. Et les websockets permettent une bonne latence en général.

        Je vois pas le rapport avec les onglets youtube et compagnie. Le manque de mémoire à cause des autres applications ouvertes, c'est pareil en natif ou en web…

        Pour les raccourcis clavier il y en a moins, mais jepense qu'un jeu qui arrive à utiliser tout les raccourcis clavier disponibles a certainement un problème de conception au niveau des interactions avec l'utilisateur.

        Pour le débogage, je ne pense pas que ce soit différent qu'avec d'autres technologies. Webkit propose des outils de développement très complets avec un débogueur tout à fait fonctionnel.

        • [^] # Re: Du web

          Posté par (page perso) . Évalué à 2.

          Je ne vois pas l'intérêt de développer un jeu en html5 directement alors qu'il existe des technos (playn, libgdx et emscripten)pour compiler du Java ou du C++ vers cette plateforme

          http://devnewton.bci.im

  • # Rejoins Flukz

    Posté par (page perso) . Évalué à 4.

    Suite à une suggestion de devnewton dans le journal Flukz 0.1, je me permets de te proposer de venir rejoindre Flukz. Il s'agit d'un moteur de shootemup programmé en Qt, dont les niveaux sont entièrement éditables à la façon d'un wiki. La première version vient d'être releasée, il y a quelques jours.

    J'ai l'impression que Flukz pourrait fournir l'environnement que tu cherches pour implémenter tes idées. On a déjà une base de code solide et qui ne demande qu'à s'étendre. Bon, c'est codé en C++, avec lequel tu as eu apparemment une expérience difficile, mais la bibliothèque Qt est très bien conçue … et ça change tout. Elle permet d'éviter la quasi totalité des aspects techniques compliqués du C++. Et la base de code de Flukz est déjà suffisamment développée pour qu'il soit possible d'y faire des améliorations uniquement par imitation du code existant, sans spécialement connaître Qt notamment.

    Si tu testes Flukz, tu seras peut-être déçu par la "pauvreté" du contenu actuel, et les fonctionnalités limitées des sprites. Comparé à ta superbe video de démo, la route est encore longue. Mais je suis persuadé que la possibilité pour les utilisateurs de participer directement à la création des niveaux à la façon d'un wiki est la fonctionnalité-clef qui permettra à terme de faire la différence sur tous les jeux existants. J'évite de le dire trop fort sur ce site pour ne pas perdre ma crédibilité (ça se perd facilement, il paraît :-), mais bon, voilà, l'objectif de Flukz, c'est de devenir l'équivalent de wikipedia pour les jeux videos 2D. Shoot'em up, mais aussi jeux de plateforme ou jeux de simulation type simcity.

    Enfin, bref, tu es plus que bienvenu si ça t'intéresse, aussi bien en tant qu'utilisateur du logiciel pour créer des niveaux avec les fonctionnalités existantes, qu'en tant que développeur pour participer au codage de nouvelles fonctionnalités.

Suivre le flux des commentaires

Note : les commentaires appartiennent à ceux qui les ont postés. Nous n'en sommes pas responsables.