16 Couleurs

16 Couleurs – graphisme & jeu vidéo

Jeux Android avec Python, Pygame et PGS4A : l’installation

7 Commentaires

Python PGS4A + Android Un peu plus tôt cette année, j’ai suivi un très bon MOOC d’initiation au langage de programmation Python puisque je ne désespère pas d’être un jour en mesure de créer mes propres petits jeux, dans la continuité des exactions en GFA Basic que j’avais commises  sur Atari ST il y a de cela une bonne décennie.

Python m’a semblé un bon choix puisqu’outre un nom de bon goût, c’est aussi un langage de programmation assez facile à apprendre et à comprendre. Si l’utiliser pour réaliser une application complexe ou un gros jeu de A à Z n’est pas vraiment courant, mine de rien son usage est très répandu comme langage de script, en particulier dans de nombreux logiciels de graphisme (entre autres : Blender, Maya, Modo, Cinema 4D et même la dernière version de 3DS Max). De bonnes bases en Python sont donc un gros plus pour qui veut faire un peu de technical art.

Il s’avère qu’il y a même moyen d’utiliser Python pour réaliser des applications Android. Certes, c’est un peu du bricolage puisque certaines fonctions ne sont pas ou mal supportées et j’imagine sans peine qu’il y a des problèmes de compatibilité plus ou moins insolvables. D’ailleurs si le but est de réaliser des jeux mobiles sans trop se prendre la tête, il est évident que des solutions clé en main comme GameMaker ou Construct 2 sont des choix beaucoup plus sensés.

En ce qui me concerne, l’installation de l’environnement de développement Python+Android a été un peu douloureuse, au point que j’ai bien failli jeter l’éponge à un moment. Heureusement la persévérance paye parfois puisque tout a fini par se mettre en place et fonctionner correctement, sur Windows 8.1 32 bit et 64 bit du moins… J’ai donc décider de partager mon expérience dans l’espoir que ça puisse être utile à d’autres.

Je ne prétends pas comprendre les aboutissements de toutes les étapes ci-dessous et certaines d’entre elles peuvent s’avérer parfaitement inutiles (en particulier en ce qui concerne le SDK Android) mais comme la manip fonctionne, if it ain’t broke, don’t fix it 🙂

Téléchargements et installations

Pour commencer il va falloir télécharger et installer les logiciels suivants :

  1. Python 2.7 32 bit dans C:\Python27\
  2. La librairie orientée jeu PyGame
  3. L’IDE PyCharm Community Edition (ou votre IDE Python préféré, mais je ne garantis rien !)
  4. Pygame Subset For Android (PGS4A) 0.9.4, à installer dans C:\PGS4A. J’ai d’abord essayé avec la 0.9.6 mais ça ne fonctionnait pas, donc achtung !
  5. La dernière version de Java SE Development Kit (JDK) pour Windows x86

Ensuite il faut ajouter les répertoires suivants au path de Windows : C:\Python27\ et %JAVA_HOME%/bin (instructions détaillées ici).

Android SDK

Android SDK ManagerL’étape suivante consiste à installer les API nécessaires au SDK Android fourni avec PGS4A. Pour celà il faut :

  • Lancer SDK Manager.exe dans C:\PGS4A\android-sdk\
  • Effectuer une mise à jour des  SDK Tools. Fermer et redémarrer SDK Manager.
  • Installer les mises à jours Android 4.0.3 (API 15), Android 2.2 (API 8) et extras: Android Support Library.  Fermer et redémarrer SDK Manager.
  • Installer tous les extras sauf Google Play Services for Fit, Android Support Repository, Google Web Driver et Intel x86 Emulator Accelerator.

PGS4A

Enfin il faut configurer PGS4A, en exécutant android.py installsdk dans PyCharm. L’absence de message d’erreur à ce stade est bon signe puisque l’installation se termine ici !

Créer une application Android

Par la suite, pour créer une application Android à partir d’un programme Python, il faut copier tous les fichiers source (.py évidemment, mais aussi toutes les images, fontes et sons nécessaires) dans C:\PGS4A\app\ , renommer le fichier Python principal en main.py et exécuter les deux commandes suivantes dans PyCharm :

  • android.py configure app (pour configurer l’application Android)
  • android.py build app release (pour compiler l’application Android)

Si tout se passe bien, le fichier APK apparaîtra dans C:\PGS4A\bin\ . J’utilise ensuite Dropbox pour le copier sur mon smartphone, mais il existe plein d’autres méthodes. À propos, attention de bien autoriser l’installation d’applications obtenues hors de Google Play sur le smartphone ou la tablette (cocher « Unknown sources » dans Settings > Security).

Les articles ci-dessous m’ont été très utiles lors de l’installation des différents logiciels. Dans le premier on trouve également un exemple de source qui vous permettra de tester si tout fonctionne correctement.

Auteur : HP

Professionnel de l'industrie vidéoludique depuis plus de 15 ans, j'écris principalement sur l'infographie, le business des jeux vidéo et la demoscene.

7 réflexions sur “Jeux Android avec Python, Pygame et PGS4A : l’installation

  1. Yop, ne désespère pas de faire un jeu 😉 utilise plutot un logiciel style fusion2.5 et vient rejoindre la communauté 😉 >> ce que tu va faire en 1 an avec python, tu le réaliseras en 1 journee avec fusion… http://comptoir-mmf.eu/Forum/index.php A+ Pit

    • Oui, comme je disais dans mon post, si on veut surtout réaliser un jeu sympa rapidement il est plus judicieux de le faire avec des logiciels comme Game Studio (ou Clickteam Fusion donc) et de ne pas perdre son temps à essayer de réinventer la roue. Mais dans mon cas, les jeux en Python sont aussi une manière d’apprendre le langage de manière ludique, dans une optique de pouvoir l’utiliser pour faire des scripts pour Blender ou autres 🙂

  2. Salut !

    Je viens de découvrir ton blog via un pote fan de demomaking Amiga 🙂

    Je suis assez fan de Python car c’est un langage très simple qui permet de faire plein de choses très rapidement. En outre, il possède des notions avancées qui le rendent vraiment agréables à utiliser, même pour faire des choses assez complexes.

    Pendant un moment, je voulais me mettre au développement de petits jeux en utilisant Python et PyGame (avec par exemple les challenges comme le PyWeek), mais j’ai fini par laisser tomber car le jeux vidéo n’est clairement pas le cœur de métier de Python, et les librairies pour développer des jeux vidéo ne sont pas légion (PyGame et Kivy sont souvent cités, mais PyGame n’est vraiment pas super bien maintenu je trouve).

    En outre, si Python est multiplateforme, il n’est cependant pas simple à déployer sur plateformes mobiles.

    Du coup, je suis plutôt en train de regarder ce qu’on peut faire en Javascript, avec des frameworks comme Phaser.io par exemple. Je ne suis pas super fan de Javascript, mais ça a l’avantage de tourner dans le browser, donc d’être vraiment multiplateformes…

    Bonne continuation ! (je vais m’abonner aux flux RSS, tiens !)

    • Salut, merci pour ton commentaire ! Python n’a en effet pas été conçu avec le jeu vidéo en tête, et même si Pygame et d’autres librairies aident beaucoup, on est loin d’une solution clé en main qui permet de réaliser tout type de jeux, sans même parler de 3D et de plateformes mobiles.

      Avoir un jeu qui tourne directement dans le navigateur est un énorme avantage de nos jours et permet de toucher un public beaucoup plus large. J’ai entendu beaucoup de bonnes choses à propos de Phaser, mais le Javascript me paraît malheureusement beaucoup moins accessible que Python…

      • Je ne me suis pas encore penché sur Phaser… J’avoue que j’abhorre un peu JavaScript et que j’aimerais bien éviter de l’utiliser, mais c’est malheureusement chose impossible en 2015 si tu veux faire quelque chose dans le navigateur.

        Je viens de tomber sur un outil qui compile du code Python/Pygame en Javascript : http://gatc.ca/projects/pyjsdl/

        Mais bon, ça commence à faire un peu compliqué pour faire du multi-plateformes 🙂

      • Je ne connaissais pas Pyjsdl, c’est intéressant. Ça doit pouvoir dépanner mais je ne suis pas persuadé que ça soit très efficace pour une utilisation intensive 😉

  3. Pingback: Pixels On The Line, une petite production pour la Gamebuino | 16 Couleurs

Répondre à HP Annuler la réponse.

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur la façon dont les données de vos commentaires sont traitées.