[PYTHON] "Minecraft où le yaji vole" Générer du texte approprié avec Deep Learning ~ Déplacer avec mod ~

Avec l'aide de DeepLearning, j'ai créé un logiciel qui lit les phrases liées au jeu tout en jouant à Micra.

↓ Un tel gars でもミニ.gif

En train de lire la vidéo

Puisqu'il est difficile de les combiner en un seul article, je vais le diviser en plusieurs articles. Cette section décrit le ** partie applicative ** </ font>.

↓ Autres articles

Chose que tu veux faire

Utilisez Minecraft pour déterminer s'il y a des zombies à proximité. S'il y a un zombie, affichez le texte lié au zombie.

(Pour l'endroit où préparer le texte lui-même, allez à un autre article)

Mod Minecraft

Minecraft a un mod créé par des bénévoles. Avec les mods, vous avez beaucoup de liberté pour modifier votre jeu.

Avec MCreator, vous pouvez démarrer la production de mod tout de suite. Pour des changements simples, vous n'avez même pas besoin d'écrire du code.

Je souhaite intégrer un programme Python

Le mod Minecraft est écrit en Java.

--Java Je ne sais pas grand-chose.

  • Je souhaite utiliser Python car je souhaite également exécuter le modèle Deep Learning.

Raspberry Jam Mod(mcpi) Vous pouvez utiliser Minecraft à partir de Python. Vous pouvez faire beaucoup de choses. Cependant, la partie pour obtenir des informations sur le jeu est délicate.

Communiquez avec Python et Java

Jetez un œil au code dans mcpi. Il semble qu'ils communiquent via Socket communication. Il semble que vous puissiez spécifier le port et aller à l'école.

--Le côté Python Modifie la classe Connection de mcpi

--Le côté Java écrit en poussant

Découvrez s'il y a des zombies à proximité

Enfin, implémentation du mod. J'ai utilisé MCreator 1.9.1.

La création d'un nouvel espace de travail avec MCreator crée un modèle de mod.

  • Vous pouvez créer de nouvelles commandes avec l'interface graphique. Créez une commande vide.

  • Ecrire dans la fonction ʻexecuteProcedure` de quelque chose comme hogehogeCommandExecuted.

  • Emballage de ce que vous voulez faire dans une autre fonction. --Préparer le socket --Continuer à acquérir / envoyer / recevoir des données

--Lors de l'exécution d'une commande, exécutez la fonction créée dans un autre processus.

Obtenez des informations en jeu

Minecraft mc = Minecraft.getMinecraft()
WorldClient world = mc.world;
List<Entity> entities = world.getEntities(Entity.class, (entity)->!entity.isInvisible());

Vous pouvez désormais obtenir des monstres ennemis et animaux non transparents dans le monde.

Entity player = world.getEntityByID(mc.player.getEntityId());

Ensuite, prenez un exemple du joueur.

String minecraftData;
for (Entity e: entities) {
    if (e.getDistance(player) < 8.0f) {
        minecraftData += e.getName() + ",";
    }
}

Vous pouvez trouver la distance entre Entity avec getDistance. Obtenez le nom d'une entité à proximité avec getName et ajoutez-le à la chaîne d'envoi.

afficher

Mettez des lettres dans le chat dans Minecraft.

MinecraftServer mcserv;
mcserv.getPlayerList().sendMessage(new TextComponentString("hogehoge"));

Site qui semble utile

Soyez prudent avec le mod

Les spécifications de la bibliothèque diffèrent légèrement selon la version. La source de la bibliothèque peut également être trouvée sur MCreator. Si vous le comprenez, vous pouvez le lire directement.

Préparez une chaîne de caractères.

Étant donné que les instructions relatives à quel objet sont séparées à l'avance, sélectionnez-les au hasard en fonction des données du mod. J'ai mis le premier mot de la phrase dans le modèle de génération et j'ai essayé de générer la phrase. Voir un autre article pour plus de détails.

prime

Le simple fait de l'afficher n'est pas de bon goût. J'ai essayé de parler lentement. Facile, je l'ai fait comme ça (Windows).

subprocess.call("start C:\hoge\softalk\SofTalk.exe /R: /W: "+"Le texte que vous souhaitez lire", shell=True)

Résumé

Les mods Minecraft sont célèbres, donc je pensais qu'il y avait beaucoup d'articles de commentaires, mais ce n'était pas le cas.

Construire un environnement qui n'utilise pas MCreator est gênant et n'a pas été fait. Je pense que ce n'est pas pratique d'essayer de le coder étroitement, donc je veux faire quelque chose à ce sujet.

Minecraft a beaucoup de potentiel, j'espère donc que tout le monde l'essaiera.

Recommended Posts

"Minecraft où le yaji vole" Générer du texte approprié avec Deep Learning ~ Déplacer avec mod ~
"Minecraft où le yaji vole" Générez du texte approprié avec Deep Learning ~ Collectez des données ~
Générez des Pokémon avec Deep Learning
PPLM: Une technique simple de Deep Learning pour générer des phrases avec des attributs spécifiés
Une histoire de prédiction du taux de change avec Deep Learning
Une scène où le GPU est utile pour le deep learning?
Essayez de créer un réseau de neurones / d'apprentissage en profondeur avec scratch
[Evangelion] Essayez de générer automatiquement des lignes de type Asuka avec Deep Learning
(Maintenant) Construisez un environnement GPU Deep Learning avec GeForce GTX 960
J'ai essayé d'écrire dans un modèle de langage profondément appris