[PYTHON] L'histoire de la création d'un outil qui fonctionne sur Mac et Windows sur le site de développement de jeux

Conclusion

En choisissant le langage Python, la difficulté de construire l'environnement est élevée, et c'est devenu une opération très coûteuse pour la gestion de la maintenance et l'expansion.

Contexte

Au travail, je devais créer un outil qui fonctionnerait sur Mac et Windows. J'ai donc choisi Python, qui peut être facilement exécuté depuis le terminal (ligne de commande) de ma machine Mac.

Cet outil synthétise et génère de nombreuses images d'icônes de jeu. Le concepteur crée le matériau de l'icône et le programme Python génère un grand nombre d'icônes tout en se référant aux données de la feuille de calcul Google. (Enfin, cette image d'icône sera combinée en une sous la forme d'Atlas dans la NGUI d'Unity, et elle se terminera par plusieurs Atlas)

Problèmes autres que Python

La première chose que j'ai apprise en utilisant Python cette fois est la difficulté de créer un environnement. Et, plutôt que la commodité d'un langage qui ne nécessite pas de compilation (compilation), il y avait aussi un manque de réflexion sur la gestion du code source. Après tout, au début, je ne faisais que de la composition d'image simple, alors j'ai transmis la gestion de cet outil au concepteur sous forme de zip du code source Python qui fonctionnait sur mon Mac local au lieu de svn. À cause de cela, je ne pensais pas que j'aurais autant de mal plus tard, comme devoir préparer un fichier bat et même une machine Windows pour vérifier si Python fonctionne correctement sous Windows.

Pourquoi j'ai choisi Python

Je pense que Python est un très bon langage. Il existe déjà de nombreuses bibliothèques et des bibliothèques pour l'édition d'images, et c'est un langage que de nombreux programmeurs peuvent gérer.

En effet, il ne nécessite pas de compilation et présente l'avantage de pouvoir écrire et modifier directement des données locales telles que le chemin et le nom de fichier requis pour chaque environnement dans lequel l'outil est utilisé dans le code source Python.

Et l'avantage de pouvoir exécuter un seul fichier depuis la ligne de commande. Un autre facteur dans le choix de Python était le manque d'idée de pouvoir effectuer une compilation croisée sur Mac / Windows car cela a commencé avec un très petit programme comme un problème pratique.

Problèmes Python rencontrés

Le problème avec le programme Python que j'ai créé cette fois-ci est que j'ai besoin qu'un concepteur qui n'est pas un programmeur prenne le temps de créer un environnement tel qu'une bibliothèque sur la machine qui fonctionne car il ne nécessite pas de compilation, et je demande de créer cet environnement. ・ C'est le point que je devais faire.

Maintenant, je pense que j'aurais dû choisir un langage qui peut être croisé.

Tout d'abord, j'ai écrit Python sur Mac, exécuté le fichier Python à partir du terminal, confirmé que cela fonctionnait, puis en ai fait un zip et l'ai remis au concepteur par chat. Mais quand je le passe, cela ne fonctionne pas sous Windows. Je reçois des rapports de situations et d'erreurs dans le chat et je réponds, mais cela ne fonctionne pas du tout. Finalement, j'ai marché jusqu'au siège du designer et j'ai vérifié le programme. Cela a interrompu son travail et retardé ses autres implémentations.

Lorsque j'ai suivi l'erreur, je n'ai pas pu trouver la bibliothèque sur mon Mac. Il n'y avait certainement pas de bibliothèque d'imagerie Python (PIL) à l'époque. Ce gars était vraiment ennuyeux.

Tout d'abord, comme solution $ brew install pil Je me souviens avoir passé des heures à étudier le travail qu'il suffisait de faire et à gaspiller l'introduction de diverses bibliothèques. (Il semble qu'une sorte de bibliothèque ait été compilée avec gcc ...) Ce travail était vraiment difficile.

Feuille de calcul Google

Vient ensuite le téléchargement CSV à partir de la feuille de calcul Google. Initialement, les données des éléments étaient référencées à partir des données de base du projet de jeu géré par Unity's Asset Server (propre système de gestion de version d'Unity). Cependant, lorsque le développement de la prochaine version sera décidé, la branche du projet sera nouvellement découpée en svn, et les données de base référencées jusqu'à présent deviendront obsolètes. Par conséquent, afin de garder les éléments à jour, j'ai décidé de me référer (heureusement) à la feuille de calcul Google, qui est toujours à jour. J'utilise une bibliothèque Python appelée gspread pour parcourir les feuilles de calcul Google.

J'ai décidé de demander au concepteur d'écrire le compte google et son mot de passe directement dans le fichier chauve-souris qui appelle Python. Et comme j'échangeais encore avec zip, le designer a engagé zip sur svn à mon insu. Cela conservera son compte et son mot de passe sur svn pour le reste de sa vie et quiconque pourra consulter ce fichier zip pourra détourner son compte.

J'ai fait changer mon mot de passe.

Et en raison du danger et de la dépréciation des adresses e-mail et des mots de passe par gspread, la prise en charge d'OAuth était nécessaire. Oui, ce n'était plus un "petit programme". Je l'ai sauté, mais bien sûr j'ai dû créer gspread dans l'environnement du designer, ce qui était très difficile pour moi.

Et ce programme est toujours maintenu et développé. J'aimerais changer rapidement, mais je n'ai pas pu épargner le temps réel du problème. (Divers mauvais programmeurs ...)

Défis et gains futurs

La mission de ce programme a toujours été de réduire la charge de travail des concepteurs. Par conséquent, j'aimerais l'exécuter depuis UnityEditor et importer Atlas, mais cela n'a pas été fait depuis longtemps en raison du manque d'étude et du manque de temps. Je ne suis pas un programmeur d'outils. Vous devez également implémenter le jeu.

Cependant, ce que j'ai tiré de cette affaire était très important. Une force qui peut être exécutée depuis la ligne de commande par Python. En outre, il a été constaté que la charge et la gestion de l'environnement d'exécution sont réduites car le programme compilé ne nécessite pas d'environnement de bibliothèque. Je pense que c'était une découverte et une expérience très importantes pour moi.

Et par-dessus tout, je pense que j'ai besoin d'autres programmeurs inexpérimentés comme moi. Si l'environnement d'exécution du programme que vous essayez de créer couvre plusieurs systèmes d'exploitation, j'espère que cet article vous sera utile.

Recommended Posts

L'histoire de la création d'un outil qui fonctionne sur Mac et Windows sur le site de développement de jeux
L'histoire de la fabrication d'une boîte qui interconnecte la mémoire AL de Pepper et MQTT
Un outil qui transforme automatiquement le gacha de Soshage
L'histoire de la création d'un site qui répertorie les dates de sortie des livres
L'histoire de la création d'un module qui ignore le courrier avec python
L'histoire de la création d'une caméra sonore avec Touch Designer et ReSpeaker
L'histoire de la création d'un package qui accélère le fonctionnement de Juman (Juman ++) & KNP
Présentation de youtube-dl, un outil de téléchargement vidéo qui fonctionne sur la ligne de commande, et sa fonction de complétion zsh.
L'histoire de la création d'un générateur d'icônes mel
L'histoire de l'adresse IPv6 que je souhaite conserver au minimum
L'histoire de la création d'une application Web qui enregistre des lectures approfondies avec Django
L'histoire de la création d'un Line Bot qui nous raconte le calendrier de la programmation du concours
Présentation de la commande "Glances", un outil de surveillance compréhensible en un coup d'œil, sur Mac
Une histoire qui réduit l'effort de fonctionnement / maintenance
CodePicnic qui peut créer un environnement [Développement | Exécuter | Tutoriel | Démo] qui s'exécute sur le navigateur
L'histoire de la création d'un réseau neuronal de génération musicale
Une histoire qui a analysé la livraison de Nico Nama.
Un résumé approximatif des différences entre Windows et Linux
L'histoire de la création d'un bot de boîte à questions avec discord.py
J'ai essayé de créer un script qui retrace les tweets d'un utilisateur spécifique sur Twitter et enregistre l'image publiée à la fois
L'histoire de la sortie d'un outil de vérification de texte créé par Python sur GitHub x CircleCI pour la première fois
[Premier développement personnel] L'histoire du déploiement de l'application Flask et du robot de réponse automatique de Twitter sur Heroku
L'histoire de la création d'un pilote standard pour db avec python.
[Windows] L'histoire d'un débutant qui tombe sur le décor de PATH d'Anaconda.
Un script python qui supprime les fichiers ._DS_Store et ._ * créés sur Mac
Pour l'instant, celui qui crée une page d'accueil avec Django à la vitesse d'une seconde et la publie sur Heroku (compatible Windows)
L'histoire de la création d'un slackbot qui génère un gif ou un png lorsque vous envoyez le code de traitement
L'histoire de la création d'un outil pour charger une image avec Python ⇒ l'enregistrer sous un autre nom
L'histoire de l'exportation d'un programme
Jetons un coup d'œil au code Scapy. Surcharge des méthodes spéciales __div__, __getitem__.
Une histoire d'essayer d'exécuter JavaScripthon sur Windows et d'abandonner.
L'histoire de la création d'un robot LINE pour le petit-déjeuner d'une université de 100 yens avec Python
Parlez de la probabilité d'évasion d'une marche aléatoire sur une grille entière
Un script python pour Mac qui zippe sans caractères déformés sous Windows
Résumez le titre de Hottentori dans Hateb et regardez le présent du Web
L'histoire de la création de Botonyan qui renvoie le contenu de Google Docs en réponse à un mot-clé spécifique sur Slack
Ceci et celui de la notation d'inclusion.
L'histoire de la fabrication d'un moule immuable
L'histoire d'essayer deep3d et de perdre
L'histoire du traitement A du blackjack (python)
L'histoire de la création d'une compétence (probablement) minimale qui implémente la personnalisation et la facturation des compétences
Installez séparément une version de Python qui n'est pas préinstallée sur votre Mac
[Python] Un programme qui calcule le nombre de mises à jour des enregistrements les plus élevés et les plus faibles
[Hackason] À propos de la création d'un outil pouvant être imprimé sur Raspberry Pi [Outil pratique]