[PYTHON] "Minecraft wo der Yaji fliegt" Generiere passenden Text mit Deep Learning ~ Move with mod ~

Mit Hilfe von DeepLearning habe ich eine Software erstellt, die Sätze zum Spiel vorliest, während ich Micra spiele.

↓ So ein Typ でもミニ.gif

Video tatsächlich abspielen

Da es schwierig ist, sie zu einem Artikel zu kombinieren, werde ich ihn in mehrere Artikel aufteilen. In diesem Abschnitt wird der Anwendungsteil ** ** </ font> beschrieben.

↓ Andere Artikel

Was du machen willst

Verwenden Sie Minecraft, um festzustellen, ob sich Zombies in der Nähe befinden. Wenn es einen Zombie gibt, zeigen Sie den Text an, der sich auf den Zombie bezieht.

(Informationen zum Vorbereiten des Textes finden Sie in einem anderen Artikel.)

Minecraft mod

Minecraft hat einen Mod von Freiwilligen. Mit Mods hast du viel Freiheit, dein Spiel zu modifizieren.

Mit MCreator können Sie sofort mit der Mod-Produktion beginnen. Für einfache Änderungen müssen Sie nicht einmal Code schreiben.

Ich möchte ein Python-Programm einbetten

Minecraft Mod ist in Java geschrieben.

  • Java Ich weiß nicht viel.
  • Ich möchte Python verwenden, weil ich auch das Deep Learning-Modell ausführen möchte.

Raspberry Jam Mod(mcpi) Sie können Minecraft von Python aus bedienen. Sie können viele Dinge tun. Der Teil, um Spielinformationen zu erhalten, ist jedoch schwierig.

Kommunizieren Sie mit Python und Java

Schauen Sie sich den Code in [mcpi] an (https://github.com/martinohanlon/mcpi). Es scheint, dass sie über [Socket-Kommunikation] kommunizieren (https://qiita.com/megadreams14/items/32a3eed4661e55419e1c). Es scheint, dass Sie den Hafen angeben und zur Schule gehen können.

Finde heraus, ob Zombies in der Nähe sind

Schließlich Mod-Implementierung. Ich habe MCreator 1.9.1 verwendet.

Durch das Erstellen eines neuen Arbeitsbereichs mit MCreator wird eine Mod-Vorlage erstellt.

  • Sie können neue Befehle mit der GUI erstellen. Erstellen Sie einen leeren Befehl. --Schreiben Sie die Funktion "executeProcedure" von etwas wie hogehogeCommandExecuted.

  • Packen Sie, was Sie in einer anderen Funktion tun möchten.

  • Sockel vorbereiten

  • Weiter zum Erfassen / Senden / Empfangen von Daten

  • Wenn Sie einen Befehl ausführen, führen Sie die erstellte Funktion in einem anderen Prozess aus.

  • Da ich ein Mod-Amateur bin (+ Java-Amateur), wollte ich es vom Mod trennen. ――Für Hirntod Versuchen Sie, etwas namens Thread zu verwenden.

Holen Sie sich Informationen im Spiel

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

Jetzt können Sie nicht transparente feindliche Mobs und Tiermobs auf der Welt erhalten.

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

Nehmen Sie dann eine Instanz des Spielers.

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

Sie können den Abstand zwischen Entity mit getDistance ermitteln. Holen Sie sich den Namen einer nahe gelegenen Entität mit "getName" und fügen Sie ihn der Sendezeichenfolge hinzu.

Anzeige

Fügen Sie Briefe in den Chat in Minecraft ein.

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

Seite, die hilfreich zu sein scheint

Sei vorsichtig mit Mod

Die Bibliotheksspezifikationen unterscheiden sich je nach Version geringfügig. Die Quelle der Bibliothek kann auch von MCreator gefunden werden. Wenn Sie es verstehen, können Sie es direkt lesen.

Bereiten Sie eine Zeichenfolge vor.

Da die Anweisungen, die sich auf das Objekt beziehen, im Voraus getrennt werden, wählen Sie sie zufällig basierend auf den Daten aus dem Mod aus. Ich habe das erste Wort des Satzes in das Generierungsmodell eingefügt und versucht, den Satz zu generieren. Weitere Informationen finden Sie in einem anderen Artikel.

Bonus

Nur anzuzeigen ist nicht geschmackvoll. Ich versuchte langsam zu sprechen. Einfach, ich habe es so gemacht (Windows).

subprocess.call("start C:\hoge\softalk\SofTalk.exe /R: /W: "+"Der Text, den Sie lesen möchten", shell=True)

Zusammenfassung

Minecraft-Mods sind berühmt, daher dachte ich, es gäbe viele Kommentarartikel, aber das war nicht der Fall.

Das Erstellen einer Umgebung, in der MCreator nicht verwendet wird, ist mühsam und wurde noch nicht durchgeführt. Ich halte es für unpraktisch, zu versuchen, es eng zu codieren, deshalb möchte ich etwas dagegen tun.

Minecraft hat viel Potenzial, also hoffe ich, dass jeder es versuchen wird.

Recommended Posts

"Minecraft wo der Yaji fliegt" Generiere passenden Text mit Deep Learning ~ Move with mod ~
"Minecraft, wo Yaji fliegt" Generieren Sie geeigneten Text mit Deep Learning ~ Daten sammeln ~
Generiere Pokemon mit Deep Learning
PPLM: Eine einfache Deep-Learning-Technik zum Generieren von Sätzen mit bestimmten Attributen
Eine Geschichte über die Vorhersage des Wechselkurses mit Deep Learning
Eine Szene, in der GPU für tiefes Lernen nützlich ist?
Versuchen Sie, ein Deep Learning / Neuronales Netzwerk mit Scratch aufzubauen
[Evangelion] Versuchen Sie, mit Deep Learning automatisch Asuka-ähnliche Linien zu erzeugen
(Jetzt) Erstellen Sie eine GPU Deep Learning-Umgebung mit GeForce GTX 960
Ich habe versucht, in einem tief erlernten Sprachmodell zu schreiben