[PYTHON] Die Geschichte, ein Tool zu erstellen, das auf Mac und Windows auf der Spieleentwicklungsseite ausgeführt wird

Fazit

Bei Auswahl der Python-Sprache ist die Schwierigkeit beim Erstellen der Umgebung hoch und für das Wartungsmanagement und die Erweiterung zu einem sehr teuren Vorgang geworden.

Hintergrund

Bei der Arbeit musste ich ein Tool erstellen, das unter Mac und Windows funktioniert. Deshalb habe ich mich für Python entschieden, das einfach über das Terminal (Befehlszeile) meines Mac-Computers ausgeführt werden kann.

Dieses Tool synthetisiert und gibt viele Bilder von Spielsymbolen aus. Der Designer erstellt das Material für das Symbol, und das Python-Programm gibt eine große Anzahl von Symbolen aus, während es auf die Daten in der Google-Tabelle verweist. (Schließlich wird dieses Symbolbild in Form von Atlas in Unitys NGUI zu einem zusammengefasst und endet als mehrfacher Atlas.)

Andere Probleme als Python

Das erste, was ich diesmal aus Python gelernt habe, ist die Schwierigkeit, eine Umgebung aufzubauen. Und anstatt der Bequemlichkeit einer Sprache, die keine Erstellung (Kompilierung) erfordert, mangelte es auch an Überlegungen zur Quellcodeverwaltung. Schließlich habe ich zunächst nur einfache Bildkompositionen erstellt, daher habe ich die Verwaltung dieses Tools als Zip des Python-Quellcodes, der auf meinem lokalen Mac anstelle von svn ausgeführt wurde, an den Designer übergeben. Aus diesem Grund dachte ich nicht, dass es mir später so schwer fallen würde, beispielsweise eine Bat-Datei und sogar einen Windows-Computer vorzubereiten, um zu überprüfen, ob Python unter Windows ordnungsgemäß funktioniert.

Warum ich mich für Python entschieden habe

Ich denke, Python ist eine sehr gute Sprache. Es gibt bereits viele Bibliotheken, und es gibt auch Bibliotheken für die Bildbearbeitung, und es ist eine Sprache, mit der viele Programmierer umgehen können.

Dies liegt daran, dass kein Build erforderlich ist und der Vorteil besteht, dass lokale Daten wie Pfad und Dateiname, die für jede Umgebung erforderlich sind, in der das Tool im Python-Quellcode verwendet wird, direkt geschrieben und bearbeitet werden können.

Und der Vorteil, eine einzelne Datei über die Befehlszeile ausführen zu können. Ein weiterer Faktor bei der Auswahl von Python war das Fehlen der Idee, eine Cross-Kompilierung auf Mac / Windows durchführen zu können, da es mit einem wirklich kleinen Programm als praktischem Problem begann.

Python-Probleme konfrontiert

Das Problem mit dem Python-Programm, das ich dieses Mal erstellt habe, ist, dass sich ein Designer, der kein Programmierer ist, die Zeit nehmen muss, um eine Umgebung wie eine Bibliothek auf einem Computer zu erstellen, der ausgeführt wird, weil keine Kompilierung erforderlich ist, und ich weise an, diese Umgebung zu erstellen. ・ Dies ist der Punkt, den ich tun musste.

Jetzt hätte ich eine Sprache wählen sollen, die sich gegenseitig kompilieren lässt.

Zuerst schrieb ich Python auf dem Mac, führte die Python-Datei vom Terminal aus aus, bestätigte, dass sie funktioniert, machte sie dann zu einem Reißverschluss und gab sie dem Designer per Chat. Aber wenn ich es bestanden habe, funktioniert es unter Windows nicht. Ich erhalte Berichte über Situationen und Fehler im Chat und antworte, aber es funktioniert überhaupt nicht. Schließlich ging ich zum Sitz des Designers und überprüfte das Programm. Dies unterbrach seine Arbeit und verzögerte seine anderen Implementierungen.

Als ich dem Fehler folgte, konnte ich die Bibliothek auf meinem Mac nicht finden. Zu dieser Zeit gab es sicherlich keine Python Imaging Library (PIL). Dieser Typ war wirklich nervig.

Zunächst als Lösung $ brew install pil Ich erinnere mich, dass ich Stunden damit verbracht habe, die Arbeit zu untersuchen, die nur erledigt werden musste, und die verschiedenen Bibliotheken vergeblich eingeführt zu haben. (Es scheint, dass eine Art Bibliothek mit gcc kompiliert wurde ...) Diese Arbeit war wirklich hart.

Google Spreadsheet

Als nächstes folgt der CSV-Download aus der Google-Tabelle. Anfänglich wurden die Artikeldaten aus den Stammdaten des Spielprojekts referenziert, das von Unitys Asset Server (Unitys eigenem Versionsverwaltungssystem) verwaltet wurde. Wenn jedoch über die Entwicklung der nächsten Version entschieden wird, wird der Zweig des Projekts neu auf svn zugeschnitten, und die bisher referenzierten Stammdaten werden veraltet sein. Um die Artikel auf dem neuesten Stand zu halten, habe ich mich (zum Glück) für die Google-Tabelle entschieden, die immer auf dem neuesten Stand ist. Ich verwende eine Python-Bibliothek namens gspread, um Google-Tabellen zu durchsuchen.

Ich beschloss, den Designer zu bitten, das Google-Konto und sein Passwort direkt in die Bat-Datei zu schreiben, die Python aufruft. Und da ich immer noch mit zip ausgetauscht habe, hat der Designer zip ohne mein Wissen an svn übergeben. Auf diese Weise kann jeder, der diese Zip-Datei auschecken kann, sein Konto und Passwort für den Rest seines Lebens auf svn behalten und sein Konto entführen.

Ich hatte mein Passwort geändert.

Und wegen der Gefahr und der Ablehnung von E-Mail-Adressen und Passwörtern durch gspread war OAuth-Unterstützung erforderlich. Ja, es war kein "kleines Programm" mehr. Ich habe es übersprungen, aber natürlich musste ich in der Umgebung des Designers gspread bauen, was für mich sehr schwierig war.

Und dieses Programm wird noch gepflegt und erweitert. Ich würde gerne schnell wechseln, aber ich konnte die eigentliche Problemzeit nicht sparen. (Verschiedene schlechte Programmierer ...)

Zukünftige Herausforderungen und Gewinne

Die Mission dieses Programms war es immer, die Arbeitsbelastung der Designer zu verringern. Daher möchte ich es von UnityEditor aus ausführen und Atlas importieren, aber es wurde aufgrund mangelnder Studien und Zeitmangel schon lange nicht mehr durchgeführt. Ich bin kein Werkzeugprogrammierer. Sie müssen auch das Spiel implementieren.

Was ich jedoch aus diesem Fall bekam, war sehr groß. Eine Stärke, die von Python über die Befehlszeile ausgeführt werden kann. Es wurde auch festgestellt, dass die Belastung und Verwaltung der Ausführungsumgebung verringert wird, da das kompilierte Programm keine Bibliotheksumgebung erfordert. Ich denke, das war eine sehr wichtige Entdeckung und Erfahrung für mich.

Und vor allem denke ich, ich brauche andere unerfahrene Programmierer wie mich. Wenn die Ausführungsumgebung des Programms, das Sie erstellen möchten, mehrere Betriebssysteme umfasst, hoffe ich, dass dieser Artikel hilfreich ist.

Recommended Posts

Die Geschichte, ein Tool zu erstellen, das auf Mac und Windows auf der Spieleentwicklungsseite ausgeführt wird
Die Geschichte einer Box, die Peppers AL Memory und MQTT miteinander verbindet
Ein Werkzeug, das die Gacha von Soshage automatisch dreht
Die Geschichte der Erstellung einer Website, auf der die Veröffentlichungsdaten von Büchern aufgeführt sind
Die Geschichte, ein Modul zu erstellen, das E-Mails mit Python überspringt
Die Geschichte einer Soundkamera mit Touch Designer und ReSpeaker
Die Geschichte, ein Paket zu erstellen, das den Betrieb von Juman (Juman ++) & KNP beschleunigt
Einführung in youtube-dl, ein Video-Download-Tool, das über die Befehlszeile funktioniert, und dessen zsh-Vervollständigungsfunktion.
Die Geschichte eines Mel-Icon-Generators
Die Geschichte der IPv6-Adresse, die ich auf ein Minimum beschränken möchte
Die Geschichte der Erstellung einer Webanwendung, die umfangreiche Lesungen mit Django aufzeichnet
Die Geschichte, einen Line Bot zu erstellen, der uns den Zeitplan für die Wettbewerbsprogrammierung erzählt
Einführung des Befehls "Glances", eines auf einen Blick verständlichen Überwachungstools, auf den Mac
Eine Geschichte, die den Aufwand für Betrieb / Wartung reduziert
CodePicnic, das eine Umgebung [Entwicklung | Ausführen | Tutorial | Demo] erstellen kann, die im Browser ausgeführt wird
Die Geschichte eines neuronalen Netzwerks der Musikgeneration
Eine Geschichte, die die Lieferung von Nico Nama analysierte.
Eine grobe Zusammenfassung der Unterschiede zwischen Windows und Linux
Die Geschichte, wie man mit discord.py einen Fragenkasten-Bot erstellt
Ich habe versucht, ein Skript zu erstellen, das die Tweets eines bestimmten Benutzers auf Twitter verfolgt und das veröffentlichte Bild sofort speichert
Zum ersten Mal veröffentlichte GitHub x Circle CI ein Textüberprüfungstool von Python
[Erste persönliche Entwicklung] Die Geschichte der Bereitstellung der Flask-App und des automatischen Antwort-Bot von Twitter auf Heroku
Die Geschichte, einen Standardtreiber für db mit Python zu erstellen.
[Windows] Die Geschichte eines Anfängers, der über die Einstellung von Anacondas PFAD stolpert.
Ein Python-Skript, das auf dem Mac erstellte ._DS_Store- und ._ * -Dateien löscht
Zur Zeit derjenige, der mit Django im Handumdrehen eine Homepage erstellt und diese auf Heroku veröffentlicht (Windows-kompatibel)
Die Geschichte, einen Slackbot zu erstellen, der beim Senden des Verarbeitungscodes ein GIF oder PNG ausgibt
Die Geschichte, ein Tool zum Laden von Bildern mit Python zu erstellen ⇒ Speichern unter
Die Geschichte des Exportierens eines Programms
Werfen wir einen Blick auf den Scapy-Code. Überladung spezieller Methoden __div__, __getitem__.
Eine Geschichte, die es aufgegeben hat, JavaScripthon unter Windows auszuführen.
Die Geschichte, wie man mit Python einen 100-Yen-Frühstücks-Bot für die Universität macht
Sprechen Sie über die Fluchtwahrscheinlichkeit eines zufälligen Gehens auf einem ganzzahligen Gitter
Ein Python-Skript für Mac, das unter Windows ohne verstümmelte Zeichen komprimiert wird
Fassen Sie den Titel von Hottentori in Hateb zusammen und schauen Sie sich die Gegenwart des Web an
Die Geschichte der Erstellung von Botonyan, das den Inhalt von Google Text & Tabellen als Antwort auf ein bestimmtes Keyword in Slack zurückgibt
Dies und das der Einschlussnotation.
Die Geschichte einer unveränderlichen Form
Die Geschichte, deep3d auszuprobieren und zu verlieren
Die Geschichte der Verarbeitung A von Blackjack (Python)
Die Geschichte der Schaffung einer (wahrscheinlich) minimalen Fertigkeit, die Personalisierung und Abrechnung von Fertigkeiten implementiert
Installieren Sie separat eine Version von Python, die nicht auf Ihrem Mac vorinstalliert ist
[Python] Ein Programm, das die Anzahl der Aktualisierungen der höchsten und niedrigsten Datensätze berechnet
[Hackason] Über das Erstellen eines Werkzeugs, das auf Raspberry Pi gedruckt werden kann [Praktisches Werkzeug]