Ich gehöre zu einem Verein, der Spiele an der Universität macht. Da die Anzahl der Personen, die die Spezifikationen des Game Launcher kennen (im Folgenden wird der Game Launcher manchmal als Launcher bezeichnet), der seit vielen Jahren zum Anzeigen von Spielen auf dem Schulfest verwendet wird, abnimmt, habe ich versucht, ihn von Grund auf neu zu erstellen. Es war. Es gibt verschiedene Dinge, die ich nicht rechtzeitig machen konnte, aber ich würde gerne darüber sprechen, weil es Gestalt angenommen hat. Dieser Artikel berührt nicht wirklich die Design-Seite des Launchers. ** Wir werden hauptsächlich über das automatische Laden, die Ordnerstruktur von Daten und die Schwierigkeiten sprechen. ** Ich wünschte, ich könnte es auf leicht verständliche Weise erklären, auch wenn die Sprache, die ich erstellen möchte, nicht Java ist.
~~ An diesem Tag wurde ein schöner Header in den leeren Teil eingefügt, aber aus irgendeinem Grund werde ich ihn ausblenden ;; ~~-IDEs wie Eclipse -Java Ausführungsumgebung In Java wird eine Jar-Datei erstellt, wenn eine ausführbare Jar-Datei für die Anwendung generiert wird. Die neueste Ausführungsumgebung (jdk oder jre) muss festgelegt werden, um die Jar-Datei zu starten. Dies ist problematisch, da die Einstellung auch auf dem Computer erforderlich ist, auf dem der Launcher gestartet wird. Verwenden Sie auch ein Framework, um Ihr Design sauber zu halten! Weitere Informationen finden Sie unter: https://www.sejuku.net/blog/60411
Es ist im Grunde das gleiche wie Java. Integrierte Entwicklungsumgebung IDE und Ausführungsumgebung für seine Sprache. Und Sie müssen im Voraus prüfen, ob es auf einem Computer funktioniert, der ordnungsgemäß funktioniert, wenn er zum Launcher wird. Außerdem müssen Sie im Programm überprüfen, ob die exe-Datei usw. ordnungsgemäß funktioniert. Suchen Sie nach "OOO GUI" usw., um zu sehen, ob Sie das gewünschte Design erstellen können.
Lassen Sie uns im Voraus über die notwendigen Funktionen nachdenken. Zum Beispiel bei meinem Launcher ・ Wie Funktion ・ Feste Phrasenfunktion ・ Eine Funktion zum bevorzugten Anzeigen von Werken, die noch nicht viel gespielt wurden ・ Automatische Ladefunktion für Spiele usw. (Tatsächlich werden auch Videos usw. unterstützt.) Insbesondere für den letzten Teil wollte ich den Launcher aktualisieren können, indem ich mir die Spezifikationen ansah, nicht nur mich.
Ich werde die Ordnerstruktur meines Launchers vorstellen. Lassen Sie uns richtig darüber nachdenken, denn es ist ein Starter der automatischen Ladefunktion.
project ├src ├data │ └ Bilder (Bilder, die für den Launcher usw. verwendet werden) │ └ Protokolle (Ordner zum Speichern der Anzahl der Likes und der Spielzeit der Werke) └ExhibitionDatas └Games │ └ Spieldaten └Graphics └ Videodaten usw.
In meinem Launcher habe ich eine Datei namens launcher_config.ini (Eigenschaftendatei in Java) verwendet, um die Arbeit am Launcher und dessen Bedienung zu erklären. Im Einzelnen sieht es wie folgt aus.
Die INI-Datei ist grundsätzlich im Textformat "Name" = Wert Es ist, als würde man es wie eine Textdatei schreiben. Mit dieser Funktion können Sie die Ausgabe auf dem Launcher bearbeiten, indem Sie diesen Text optimieren, ohne sich mit dem Inhalt des Launcher herumschlagen zu müssen. Wenn Sie jemanden, der Spiele in den Launcher stellen möchte, bitten, diese INI-Datei zu erstellen, können Sie Spiele auf dem Launcher spielen!
Zuallererst die vorbereitete Klasse ・ Spieldatenklasse (Klasse, die den Inhalt der INI-Datei fast so speichert, wie er ist) ・ Spieldatenmanager-Klasse (Klasse, die alle Spieldatenklassen verwaltet) Erforderliche Funktionen usw. ・ Funktion zum Lesen der INI-Datei Referenz: https://qiita.com/motoki1990/items/2b643ea854624b09712c ・ Dateisuchfunktion ist.
qiita.java
private ArrayList<String> fileSearch(String path, String fileName){
File dir = new File(path);
File files[] = dir.listFiles();
for(int i=0; i<files.length; i++){
if(files[i].isDirectory()){ //Wenn es sich um ein Verzeichnis handelt, führen Sie eine Wiederholung durch
fileSearch(path+"/"+files[i].getName(), fileName);
}else{
if(file_name.equals(fileName)){ //Ausgabe, wenn die angegebene Datei gefunden wird
resultPaths.add(dir.getAbsolutePath()+"/");
}
}
}
return resultPaths;
}
Übergeben Sie zunächst den Ordner, der von der Dateisuchfunktion (ExhibitionData, da wir diesmal die Spieldaten lesen möchten) und den Namen der INI-Datei (in meinem Fall launcher_config.ini) an die Dateisuchfunktion. ↓ Der Pfad zur INI-Datei wird zurückgegeben und von der Game Data Manager-Klasse verwendet. Fügen Sie die Daten der erhaltenen Pfaddatei in alle Spieldatenklassen ein. Verwenden Sie zu diesem Zeitpunkt die Funktion, um die INI-Datei zu lesen ↓ Launcher gestartet ↓ Wenn die Aktion zum Starten des Spiels abgeschlossen ist, wird der Spieldatenmanager dies tun Lesen Sie den Pfad zur Ausführungsdatei der Spieldatenklasse des zu startenden Spiels und führen Sie ihn aus ↓ Launcher wird nicht ausgeführt, während das Spiel ausgeführt wird
Ist der Hauptfluss. Möglicherweise können Sie die ausführbare Datei mit Java auf verschiedene Arten ausführen Im Fall von I, Ich habe eine Standard-Java-Bibliothek namens ProcessingBuilder verwendet. Kurz gesagt, Sie können mit cmd tun, was Sie können. Daher können Sie es ausführen, indem Sie den Pfad der Spielausführungsdatei als Argument damit übergeben. Da ProcessingBuilder immer verwaltet, ob es ausgeführt wird oder nicht, können Sie den Launcher so einstellen, dass er während dieser Zeit nicht funktioniert (praktisch!).
Zuerst gab es einige, die mit Processing Builder durchgeführt werden konnten, andere nicht. Ich kannte die Ursache nicht, aber wenn Sie nur den Pfad zur Ausführungsdatei eingeben, können Sie ihn mit cmd ausführen Wenn Sie in processBuilder zuerst zu der Datei wechseln, in der die ausführbare Datei vorhanden ist, und dann den Namen der ausführbaren Datei eingeben Es scheint, dass es ausgeführt werden kann. Speziell $ asdf / test / hogehoge / game.exe (← Builder-Fehler verarbeiten) ↓ $ cd asdf/test/hogehoge $ game.exe Es ist wie es ist. Wenn jemand den gleichen Inhalt hat, versuchen Sie es bitte.
das ist alles, Es war der erste Beitrag. Ab dem nächsten Mal werde ich mein Bestes geben, um es etwas prägnanter zu schreiben. Wenn Sie Fragen haben, tun Sie dies bitte.
Websites, die sehr hilfreich waren: https://qiita.com/massoumen/items/66d26b08333aeae1c0ea