AutomataMP
NieR: Automata Multiplayer Mod
Warnung
Dieses Projekt ist in Arbeit. Während einige wichtige Aspekte des Spiels gut unterstützt werden, ist dies bei anderen nicht der Fall. Erwarten Sie (noch) nicht, mit jemandem, der an diesem Projekt beteiligt ist, eine vollständige Geschichte durchzuspielen.
Im Moment sollte dieses Projekt nur zum einfachen Durchqueren und Erkunden der Welt mit Freunden oder zum Spielen im Debug-Raum verwendet werden. Die Quest-Synchronisierung ist noch nicht implementiert. Einige Teile des Spiels werden einfach kaputt sein.
Merkmale
Master-Server
- Ermöglicht die Erkennung von Servern durch Clients, ohne vorher die IP zu kennen
Eigenständiger Server
- In Go codierter Server, der entweder unter Linux oder Windows ausgeführt werden kann
- MasterClient-System, um einem „Host“ zu ermöglichen, der die Spielwelt kontrolliert (Feinde und andere Weltstaaten)
- Es werden mehr als 2 Spieler unterstützt, nicht nur Spieler + Kumpel
Linux-Pakete
Arch Linux (AUR)
- Markierte Version
- Git-Version
Spielersynchronisierung
- Position
- Drehung
- Animationen
- Patronenfeuer
- Pod-Programme
- Pod-Taschenlampe
- Waffen-/Ausrüstungsauswahl (jedoch nicht die eigentlichen Waffentypen selbst)
Feindsynchronisierung
- Repliziert gegnerische Spawns, während der MasterClient sie spawnt
- Löscht Feinde auf normalen Client-Enden, die nicht vernetzt sein sollen
- Position
- Drehung
- Gesundheits-/Lebendzustand
- Einige Animationen
Geplante/gewünschte Funktionen
- Modellwechsler
- PvP
- Raum-/Lobbysystem
- Geistersystem, wenn keine Verbindung zu einem Raum/einer Lobby besteht
Geschichte
Mod, der bereits 2017 entwickelt wurde und eine sehr kurze Entwicklungszeit hatte, bevor ich mich anderen Dingen zuwandte. Dies war keine Open-Source-Version und wurde früher veröffentlicht, da die Bibliotheken hinter der Originalversion nicht Open-Source-freundlich waren.
Da es sich um ziemlich alten Code handelt, der ursprünglich nicht für die Veröffentlichung gedacht war, entsprechen die Codierungsstandards nicht meinen aktuellen Standards. Bitte verzeihen Sie dies. Es kann im Laufe der Zeit behoben werden.
Ende August 2017
- Die Entwicklung begann
- Viel Reverse Engineering
- Skriptsystem (mruby?)
- Entitätssystem
- Buddy-System
- Animationen, Schaltflächen
- Enet und Enetpp hinzugefügt und diese Systeme mit dem Mehrspielermodus verbunden
- Der Server wurde direkt im Mod selbst gehostet, nicht als eigenständiges Programm
- Client/Server kommuniziert mit in C++ definierten Rohstrukturdaten
- Das System verwendete VEH-Hooks, um die Mitte von Funktionen einzubinden und den CPU-Kontext abzurufen
Anfang September 2017
- Das Projekt wurde aufgegeben, es wurden einige kurze Videos davon in Aktion aufgenommen
2017-09-01_06-35-26.webm
Ende Juli 2022 – heute
- Projekt wurde wiederbelebt
- Eine Kombination aus NieR, das Schlagzeilen machte, der Veröffentlichung von Modding-Tools und der Kontaktaufnahme mit mir steigerte hier die Motivation
- Jeglicher Code, der nicht Open-Source-freundlich war, wurde entfernt und alles durch die Open-Source-Äquivalente ersetzt
- Der Servercode wurde in ein eigenständiges Go-Projekt eingefügt, das entweder unter Linux oder Windows ausgeführt werden kann
- Der Client/Server-Code wurde überarbeitet, um Flatbuffer für die Paketstruktur zu verwenden
- Das neue System verwendet MidHook von Safetyhook, um Mid-Function-Hooks auszuführen und den Kontext abzurufen
- Dies ist viel schneller und hat nicht die Nachteile, dass es nicht threadsicher ist
- Die Umgestaltung des Client-Codes begann, den aktuellen Standards zu entsprechen und die tatsächliche Spielstruktur besser widerzuspiegeln
- Eidechse:
- Fehlerbehebungen bei der Verbindung und leichte Umgestaltung