J'appartiens à un club qui fait des jeux à l'université. Étant donné que le nombre de personnes connaissant les spécifications du lanceur de jeu (ci-après, le lanceur de jeu est parfois appelé le lanceur) qui a été utilisé pour afficher des jeux pendant de nombreuses années au festival de l'école est en baisse, j'ai essayé de le recréer à partir de zéro. C'était. Il y a diverses choses que je ne pourrais pas faire à temps, mais j'aimerais en parler car cela a pris forme. Cet article ne concerne pas vraiment le côté design du lanceur. ** Nous parlerons principalement de la façon de charger automatiquement, de la structure des dossiers de données et des difficultés. ** J'aurais aimé pouvoir l'expliquer de manière facile à comprendre même si le langage que j'essaie de créer n'est pas Java.
~~ Un joli en-tête a été collé dans la partie vide de la journée, mais pour une raison quelconque, je vais le cacher ;; ~~-IDEs comme Eclipse -Environnement d'exécution Java En Java, un fichier Jar est créé lorsqu'un fichier exécutable Jar pour l'application est généré. Le dernier environnement d'exécution (jdk ou jre) doit être défini pour démarrer le fichier Jar. C'est gênant car le paramètre est requis même sur l'ordinateur qui lance le lanceur. Utilisez également le cadre pour garder votre conception propre! Veuillez vous référer à: https://www.sejuku.net/blog/60411
C'est fondamentalement le même que Java. Environnement de développement intégré IDE et environnement d'exécution pour son langage. Et vous devez vérifier à l'avance si cela fonctionne sur un ordinateur qui fonctionne correctement lorsqu'il devient un lanceur. En outre, vous devrez vérifier à partir du programme si le fichier exe, etc. fonctionne correctement. Recherchez "OOO GUI" etc. pour voir si vous pouvez créer le design que vous souhaitez.
Pensons à l'avance aux fonctions nécessaires. Par exemple, dans le cas de mon lanceur ・ Comme fonction ・ Fonction de phrase fixe ・ Une fonction pour afficher préférentiellement les œuvres qui n'ont pas encore été beaucoup jouées ・ Fonction de chargement automatique pour les jeux, etc. (en fait, il prend également en charge les vidéos, etc.) Surtout pour la dernière partie, j'ai pensé que ce serait bien si non seulement je pouvais mettre à jour le lanceur, mais que tout le monde pourrait le mettre à jour en regardant les spécifications.
Je vais vous présenter la structure des dossiers de mon lanceur. Pensons-y correctement car c'est un lanceur de la fonction de chargement automatique.
project ├src ├data │ └ images (images utilisées pour le lanceur, etc.) │ └ logs (dossier pour enregistrer le nombre de likes et le temps de lecture des oeuvres) └ExhibitionDatas └Games │ └ Données de jeu └Graphics └ Données vidéo, etc.
Dans mon lanceur, j'ai utilisé un fichier appelé launcher_config.ini (fichier de propriétés en java) pour expliquer le travail sur le lanceur et comment le faire fonctionner. Plus précisément, cela ressemble à ce qui suit.
Le fichier ini est essentiellement au format texte "Nom" = valeur C'est comme l'écrire comme un fichier texte. Avec cela, vous pouvez manipuler la sortie sur le lanceur en peaufinant ce texte sans avoir à jouer avec le contenu du lanceur. Si vous demandez à quelqu'un qui souhaite mettre un jeu dans le lanceur de créer ce fichier ini, vous pourrez jouer au jeu sur le lanceur!
Tout d'abord, la classe préparée ・ Classe de données de jeu (classe qui enregistre le contenu du fichier ini presque tel quel) ・ Classe de gestionnaire de données de jeu (classe qui gère toutes les classes de données de jeu) Fonctions requises etc. ・ Fonction pour lire le fichier ini Référence: https://qiita.com/motoki1990/items/2b643ea854624b09712c ・ Fonction de recherche de fichier est.
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()){ //S'il s'agit d'un répertoire, effectuez une récurrence
fileSearch(path+"/"+files[i].getName(), fileName);
}else{
if(file_name.equals(fileName)){ //Sortie si le fichier spécifié est trouvé
resultPaths.add(dir.getAbsolutePath()+"/");
}
}
}
return resultPaths;
}
Tout d'abord, passez le dossier déterminé par la fonction de recherche de fichiers (ExhibitionData car nous voulons lire les données du jeu cette fois) et le nom du fichier ini (launcher_config.ini dans mon cas) à la fonction de recherche de fichiers. ↓ Le chemin d'accès au fichier ini sera renvoyé et la classe du gestionnaire de données de jeu l'utilisera. Mettez les données du fichier de chemin obtenu dans toutes les classes de données de jeu. À ce stade, utilisez la fonction pour lire le fichier ini ↓ Lanceur lancé ↓ Si l'action pour démarrer le jeu est terminée, le gestionnaire de données Lire et exécuter le chemin d'accès au fichier d'exécution de la classe de données de jeu du jeu à démarrer ↓ Le lanceur ne traite pas pendant que le jeu est en cours d'exécution
Est le flux principal. Vous pourrez peut-être exécuter le fichier exécutable de différentes manières avec java Dans le cas de moi, J'ai utilisé une bibliothèque Java standard appelée ProcessingBuilder. En un mot, vous serez en mesure de faire ce que vous pouvez avec cmd. Par conséquent, vous pouvez l'exécuter en passant le chemin du fichier d'exécution du jeu comme argument en utilisant this. Étant donné que ProcessingBuilder gère toujours s'il est en cours d'exécution ou non, vous pouvez configurer le lanceur pour qu'il ne fonctionne pas pendant ce temps (pratique!)
Au début, certaines d'entre elles pouvaient être réalisées à l'aide de Processing Builder et d'autres non. Je ne connaissais pas la cause, mais si vous tapez simplement le chemin du fichier d'exécution, vous pouvez l'exécuter avec cmd Dans processingBuilder, si vous vous déplacez d'abord vers le fichier où se trouve le fichier exécutable, puis entrez le nom du fichier exécutable Il semble que cela puisse être exécuté. En particulier $ asdf / test / hogehoge / game.exe (← Traitement des bogues du constructeur) ↓ $ cd asdf/test/hogehoge $ game.exe C'est comme ça. Si quelqu'un a le même contenu, essayez-le.
c'est tout, C'était le premier message. Dès la prochaine fois, je ferai de mon mieux pour l'écrire un peu plus concis. Si vous avez des questions, n'hésitez pas.
Sites qui ont été très utiles: https://qiita.com/massoumen/items/66d26b08333aeae1c0ea
Recommended Posts