jeudi 30 avril 2015

"TwitchPlays"-Projekt - Ist das so sinnvoll?

Hallöchen, ich bin neu hier :D!

Kurz was zu Twitch und "TwitchPlays":
Twitch ist eine Livestream Plattform für Gamer/Programmierer/Künstler. Sprich: Leute setzen sich hin, spielen etwas und das was sie spielen wird live übertragen.
TwitchPlays-Streams sind dabei irgendwann zu einem kleinen Phänomen geworden. Jemand kam auf die Idee, den Chat bestimmen zu lassen, was gerade im Stream passiert. So hat jemand "TwitchPlaysPokemon" erschaffen. Ein Stream bei dem die Zuschauer durch Eingabe (im Chat) von "up/down/left/right/a/b" den Charakter bzw. das Spielgeschehen steuern können. Das Spannende dabei ist der Delay, den es zwischen Chat und Stream gibt. So ist die Eingabe einige Sekunden verzögert im Stream zu sehen. Zudem werden von nahezu allen Chattern die Befehle ausgeführt. Später wurde dann ein Democracy und ein Anarchy Mode eingeführt. Der Democracy Mode bewirkt, dass ein Befehl ausgeführt wird, wenn x Chatter wollen, dass dieser Befehl ausgeführt wird (sicherlich in einem Zeitintervall...) der Anarchy Mode ist einfach, dass so gut wie jeder Chatter berücksichtigt wird.

That's it. Nun zu meinem Vorhaben:

So... öhm, ich bin aktuell dabei in Java ein TwitchPlays Programm zu schreiben. Bedient habe ich mich dabei an folgendem GitHub Projekt: http://ift.tt/1DCHc9W - um es mal auszuprobieren. Allerdings klappt es leider nicht wirklich (er springt nie in die "onMessage" Funktion/Methode...). Ich habe mit ihm dann darüber geschrieben und wir kamen auf keine Lösung, dennoch finde ich die Idee bzw. Struktur mit den .ini Dateien ziemlich cool. Jedenfalls habe ich dann nach einem neuen Tutorial gesucht und bin auf 2 YouTube Videos gestoßen:
Part 1 - http://ift.tt/1bVEKpH
Part 2 - http://ift.tt/1DCHaiu

Das funktioniert so weit. Nun möchte ich den Funktionsumfang noch ein bisschen erweitern und das ganze Programm etwas umstrukturieren. Das Ziel ist es, dass mein Twitch Stream quasi zu einem "Fernseher" wird. Dabei möchte ich allerdings nicht Pokemon streamen, sondern so etwas machen wie es der Streamer "SaltyBet" macht (Zu Beginn zumindest), der hat etwas gecoded, bei dem die Zuschauer Wetten können wer gewinnt. Es ist natürlich ziemlich naheliegend, dass er ein Beat 'em Up auf seinem Stream zeigt. Das ist eine Fighting Engine, die sich "MUGEN" nennt. Diese kann man mit unzähligen Kämpfern und Stages ausstatten, sodass es immer ganz witzig ist, zu zu schauen.

Dieses Wettfeature ist mir erst mal noch nicht so wichtig, aktuell wäre es interessant zu wissen, wie man Tastendrücke im Hintergrund simulieren kann und der Ton quasi stumm im Hintergrund weiter läuft, sodass ich an meinem Rechner währenddessen noch was anderes machen kann...

Na gut, ich habe mir ein Mind-Map Tool heruntergeladen und aktuell sieht meine Struktur so aus:

http://ift.tt/1bVEKpJ

Ich möchte zu Beginn erst mal das Programm so umstrukturieren, dass es mir relativ leicht fällt, neue Sender und/oder Spiele hinzuzufügen. Ich denke, dass ist mit dieser Struktur recht einfach zu realisieren.

Beschränken wir uns mal nur auf MUGEN.
Die True/False Variable brauche ich um zu prüfen, ob das Spiel bereits läuft. Eine .bat Datei habe ich ebenfalls angefertigt, die eine "1" in eine .txt Datei schreibt, wenn der Prozess läuft und eine "0", wenn er eben nicht läuft. Denn es kann durchaus sein, dass das Spiel mal abstürzt. In diesem Fall sollen die Zuschauer sowas wie "!run MUGEN" in den Chat schreiben können. Dieser Befehl startet dann das Spiel wieder neu, aber eben nur dann, wenn es gerade nicht läuft. Denn ich will nicht, dass man mir den PC zerschießt, indem es möglich ist, unzählig oft ein Spiel zu starten.

Problematisch ist auch die Menüführung, denn nachdem das Spiel neugestartet wurde muss erst ein "Makro" laufen, der in der Kämpferauswahl 2x ein leeres Feld (Random Kämpfer für beide CPUs) auswählt und ab dann eine Taste "spammt" sodass nach dem Kampf der nächste gestartet wird mit 2 neuen Random Charakteren.

Einhergehend ist für mich die Frage nach einem "WinWaitActive" Befehl, den ich damals bei meinen kleinen AutoIt Scripts gern genutzt habe. Weil ein fester Delay doch irgendwie ziemlich unsicher und unprofessionell ist (?!).

---

Oh man, ich hoffe, dass ihr so grob versteht was ich meine und was ich will... und... am besten ist denke ich, wenn ihr einfach fragt, wenn ihr etwas nicht versteht, dann kann ich präziser antworten.
Es soll wirklich erst mal simpel gehalten werden, nur mit dem MUGEN Spiel, sodass ich nach und nach meine Custom Character optimieren kann bis das Spiel möglichst nicht mehr abstürzt. Ich will aber auch, dass die Struktur von den Klassen und Methoden und so weiter so übersichtlich und performant ist, dass ich sie leicht erweitern kann. Am Ende, wenn ich komplett zufrieden bin und es auch eine Weile gut läuft, möchte ich das Programm für alle zugänglich machen und mit einem Menü versehen, welches einen durch die Einstellungen führt (OAuth Key festlegen, Channel, Account-Name usw. einlesen...)

---

Kurz zu mir... ich bin ein ziemlicher Anfänger. Ich bin Student, hatte ein Semester lang C (bäh...) und morgen fängt das erste Praktikum in Java an, zu Java hatte ich bisher 3 Vorlesungen... privat habe ich mich allerdings schon öfter mal mit Java beschäftigt, bin aber nie wirklich dran kleben geblieben. Also nehmt es mir bitte nicht übel, wenn ich irgendwie komisch denke oder etwas aus meiner MindMap in irgendeiner Form keinen Sinn ergibt o.ä.

---

Falls jemand von euch auch streamt oder generell Bock auf sowas hat... dann könnt ihr euch ruhig mal privat bei mir melden, vielleicht kann man dann ja mal was zusammen machen oder so :).

Schönen Abend noch!

Mit freundlichen Grüßen,
der Neue ... aka. PaRaLLaX.


"TwitchPlays"-Projekt - Ist das so sinnvoll?

0 commentaires:

Enregistrer un commentaire