Replaysystem für Bukkit / Spigot

Status
Für weitere Antworten geschlossen.

thepn

Supremium
25 Sep. 2015
427
1.648
1.080
www.thepn.me
Hallo zusamen,

ich habe mich mal ans Programmieren gesetzt und ein Replaysystem für ein PVP-Projekt geschrieben.
Das Plugin läuft auf einem Bukkit / Spigot - Server (getestet auf 1.8.3). Das Plugin ist für PVP-Projekte wie zB. Varo gedacht, um Beweise gegen Hacker aufzuzeichnen oder um sich spannende Kämpfe anzuschauen.

Download: [entfernt]

Warum dieses Plugin?
Das Plugin selbst dient als API und ist somit in seiner Funktion erweiterbar. Die Dokumentation ist mit einigen Beispielen auf [entfernt] mit dem gesamten Quellcode zu finden. Auf einem Server mit 1024 MB Ram gab es in Kämpfen mit 4 Spielern keine Performanceprobleme. Auch die Dateigröße sollte verkraftbar sein.

Befehle
Befehle und weitere Infos findet ihr hier: [offline]

Features
Das Plugin zeichnet Tode, betreten oder verlassen des Servers, Spieler und ihre Bewegungen und Chatnachrichten auf. Die Wiedergabegeschwindigkeit kann verändert sowie das Replay pausiert werden. Mit Hilfe des Inventars kann 30s vor- und zurückgespult werden und der Zuschauer kann sich zu Spielern teleportieren.
Wenn sich kein Spieler auf dem Server befindet, wird nicht aufgezeichnet, um die Dateigröße möglichst klein zuhalten. Dies ermöglicht ein 24/7 Betrieb. Nach 2 Stunden Aufnahme wird das Replay automatisch gespeichert und nach entsprechendem Zeitstempel benannt.

Bugs oder andere Probleme bitte an mich senden (hier im Forum oder auf Youtube per PN), ich freue mich auch über Verbesserungsvorschläge bzgl. des Quellcodes.
Bei weiteren Fragen gerne an mich wenden.

thepn
 

geNAZt

Mitglied
12 Apr. 2014
2.149
1
7.547
1.565
33
Der Ticker welcher feststellt in welchem Tick das Replay ist ist async auf eine normale Variable, welches theoretisch ermöglicht das diese Variable von mehreren Threads gleichzeitig beschrieben wird.

Die Daten werden als Strings gespeichert. Alleine jedes Movement wird somit mit > 100 bytes pro Movement gespeichert. Somit sind die Dateien die im Ausgang liegen enorm groß.

Ebenso werden alle Strings im Speicher gehalten welches für eine lange Record Session extrem unvorteilhaft ist.

Die Speicherung der Replays kann nicht geändert werden. Wenn man Replays z.b. in OpenStack oder auf ein NFS speichern möchte ist dies nur umständlich möglich.

"This plugin only needs 500 MB" ist auch lustig wenn die meisten Server auf 2GB RAM laufen sollten und dieses System einfach mal 1/4 des RAMs aufbraucht um einen String zu speichern xD
 

thepn

Supremium
25 Sep. 2015
427
1.648
1.080
www.thepn.me
Vielen Dank, @geNAZt, für dein Feedback, ich werde das Plugin dementsprechend verbessern.
Die Daten werden als Strings gespeichert. Alleine jedes Movement wird somit mit > 100 bytes pro Movement gespeichert. Somit sind die Dateien die im Ausgang liegen enorm groß.

Ebenso werden alle Strings im Speicher gehalten welches für eine lange Record Session extrem unvorteilhaft ist.
Dh, die Strings direkt in die Datei schreiben? Bzw alle 5 Zeilen um den Aufwand niedrig zu halten?

//Edit:
Was wäre eine bessere Alternative anstatt die Daten als String zu speichern?
 
Zuletzt bearbeitet:
  • Like
Reaktionen: adagi

PhoenixofForce

Mitglied
29 Juli 2014
90
115
745
Kann es sein, dass man den Replays Ordner manuell erstellen muss?
Und beim Replayen werden bei mir keine Spieler angezeigt
 

ProJo4K

Mitglied
4 Mai 2015
38
38
223
24
Köllefornia
Kann es sein, dass man den Replays Ordner manuell erstellen muss?
Und beim Replayen werden bei mir keine Spieler angezeigt
Nutzt du spigot 1.8.3 oder höher? Ansonsten könnte dies vielleicht das Problem sein.

@thepn
Habe noch einen Vorschlag und zwar: das Plugin Versions unabhängig zu machen, sodass man es auf allen 1.8.x Versionen nutzen kann. Dies könnte man zum Beispiel mit Protocollib umsetzen, also einfach die Packets dann über Protocollib managen.
 
Status
Für weitere Antworten geschlossen.

Soziale Medien

Über uns

  • GommeHD.net ist einer der größten Minecraft-Server der Welt. Dir gefällt unser Server? Dann unterstütze uns durch einen Kauf im Shop!
  • Shop