Wie der Name vermuten lässt, ist Hollow Knight Multiplayer (HKMP) ein Multiplayer-Mod für das beliebte 2D-Action-Adventure-Spiel Hollow Knight. Der Hauptzweck dieses Mods besteht darin, es Leuten zu ermöglichen, Spiele zu veranstalten und andere an ihren Abenteuern teilnehmen zu lassen. Für die Mod gibt es einen eigenen Discord-Server, auf dem ihr Fragen stellen oder allgemein über die Mod sprechen könnt. Darüber hinaus können Sie Vorschläge oder Fehlerberichte hinterlassen. Die neuesten Ankündigungen werden dort veröffentlicht.
Für den einfachen Einstieg in die Mod gibt es eine von der Community erstellte Anleitung. Wenn Sie keine Erfahrung mit Github- und/oder Hollow Knight-Modding haben, ist dies der empfohlene Einstieg in die Nutzung des Mods. Alternativ veranschaulichen die folgenden Abschnitte, wie Sie den Mod vom Installationsprogramm erhalten oder manuell installieren.
Die neueste Version des Mods finden Sie auf Lumafly, einem Modding-Installer für Hollow Knight 1.5. Wenn Sie diesen Link verwenden, wird automatisch die richtige Version des Lumafly-Installationsprogramms für Ihr Betriebssystem heruntergeladen. Dieses Installationsprogramm lädt dann automatisch die Modding-API herunter und Sie können den Mod über eine benutzerfreundliche Oberfläche installieren.
Der Mod funktioniert über die Hollow Knight Modding API. Nach der Installation der API kann dieser Mod installiert werden, indem Sie die kompilierte DLL in Ihrem Mods-Ordner ablegen, der sich in Ihrer Steam-Installation befindet: (Beachten Sie, dass dies die Standardspeicherorte sind. In diesem Fall befindet sich Ihre Installation möglicherweise auf einem anderen Laufwerk Ändern Sie Ihren Weg entsprechend.)
C:Program Files (x86)SteamsteamappscommonHollow Knighthollow_knight_DataManagedMods
~/Library/Application Support/Steam/steamapps/common/Hollow Knight/hollow_knight.app/
, dann klicken Sie auf „Paketinhalt öffnen“ und content -> resources -> data -> managed -> mods
~/.local/share/Steam/steamapps/common/Hollow Knight/hollow_knight_Data/Managed/Mods/
Die neueste Version der kompilierten DLL finden Sie auf der Release-Seite.
Die Hauptoberfläche des Mods befindet sich im Pausenmenü im Spiel. Es besteht die Möglichkeit, ein Spiel am eingegebenen Hafen zu veranstalten und an einem Spiel an der eingegebenen Adresse und dem eingegebenen Hafen teilzunehmen. Das Spielen im Mehrspielermodus mit Leuten in Ihrem LAN ist unkompliziert, aber das Spielen über das Internet erfordert einige zusätzliche Arbeit. Der Port des gehosteten Spiels sollte nämlich in Ihrem Router weitergeleitet werden, um auf das Gerät zu verweisen, auf dem Sie hosten. Alternativ können Sie Software wie Hamachi verwenden, um die Erweiterung Ihres LAN zu erleichtern.
Die Benutzeroberfläche kann auch durch Drücken einer Tastenkombination ausgeblendet werden (standardmäßig right ALT
). Diese Tastenkombination kann in der Konfiguration des Mods geändert werden, die je nach Betriebssystem an den folgenden Stellen zu finden ist:
%appdata%..LocalLowTeam CherryHollow KnightHKMP.GlobalSettings.json
~/Library/Application Support/unity.Team Cherry.Hollow Knight/HKMP.GlobalSettings.json
~/.config/unity3d/Team Cherry/Hollow Knight/HKMP.GlobalSettings.json
Die Tastenkombinationen werden in Form eines Schlüsselcodes gespeichert. Alle möglichen Schlüsselcode-Optionen finden Sie in dieser Liste.
Zusätzlich zur Benutzeroberfläche des Pausenmenüs gibt es ein Chatfenster, in dem Benutzer Befehle eingeben können. Die Chat-Eingabe kann mit einer Tastenkombination (standardmäßig T
) geöffnet werden, die die folgenden Befehle enthält:
connect
: Stellen Sie mit dem angegebenen Benutzernamen eine Verbindung zu einem Server an der angegebenen Adresse und am angegebenen Port her.host [port]
: Starten Sie einen Server am angegebenen Port oder stoppen Sie einen vorhandenen Server.list
: Listet die Namen der aktuell verbundenen Spieler auf.set [value]
: Lesen oder schreiben Sie eine Einstellung mit dem angegebenen Namen und dem angegebenen Wert. Eine Liste der möglichen Einstellungen finden Sie im folgenden Abschnitt.announce
: Senden Sie eine Chat-Nachricht an alle verbundenen Spieler.kick
: Kickt den Spieler mit dem angegebenen Authentifizierungsschlüssel, Benutzernamen oder der IP-Adresse.ban
: Den Spieler mit dem angegebenen Authentifizierungsschlüssel oder Benutzernamen sperren. Bei Angabe eines Benutzernamens wird die Sperre nur ausgesprochen, wenn ein Benutzer mit dem angegebenen Benutzernamen derzeit mit dem Server verbunden ist.unban
: Entbannen Sie den Spieler mit dem angegebenen Authentifizierungsschlüssel.banip
: Sperren Sie die IP des Spielers mit dem angegebenen Authentifizierungsschlüssel, Benutzernamen oder der IP-Adresse. Bei Angabe eines Authentifizierungsschlüssels oder Benutzernamens wird die Sperre nur dann ausgesprochen, wenn ein Benutzer mit dem angegebenen Authentifizierungsschlüssel oder Benutzernamen derzeit mit dem Server verbunden ist.unbanip
: Entsperren Sie die IP des Spielers mit der angegebenen IP-Adresse.Jeder Benutzer generiert lokal einen Authentifizierungsschlüssel zur Authentifizierung und Autorisierung. Dieser Schlüssel kann verwendet werden, um bestimmte Benutzer auf die Whitelist zu setzen und zu autorisieren, damit sie dem Server beitreten oder Befehle ausführen können, die eine höhere Berechtigung erfordern.
whitelist [args]
: Verwalten Sie die Whitelist mit folgenden Optionen:whitelist
: Aktivieren/deaktivieren Sie die Whitelist.whitelist [name|auth key]
: Den angegebenen Benutzernamen oder Authentifizierungsschlüssel zur Whitelist hinzufügen/entfernen. Wenn Sie einen Benutzernamen erhalten, der nicht mit einem Online-Spieler übereinstimmt, wird der Benutzername zur „Vorliste“ hinzugefügt. Wenn sich dann ein neuer Spieler mit einem Benutzernamen auf dieser Liste anmeldet, wird er automatisch auf die Whitelist gesetzt.whitelist [prelist]
: Löscht die Whitelist (oder die Vorliste, wenn prelist
als Argument angegeben wurde).auth [name|auth key]
: Autorisieren Sie den Online-Spieler mit dem angegebenen Benutzernamen oder Authentifizierungsschlüssel.deauth [name|auth key]
: Autorisierung des Online-Spielers mit dem angegebenen Benutzernamen oder Authentifizierungsschlüssel aufheben. Es ist möglich, einen eigenständigen Server unter Windows, Linux und Mac zu betreiben. Die neueste ausführbare Datei des Servers finden Sie auf der Release-Seite. Für Linux und Mac kann der Server mit installiertem Mono betrieben werden. Nach der Installation von Mono kann dieselbe ausführbare Datei mit mono HKMPServer.exe
ausgeführt werden. Derzeit ist das einzige Befehlszeilenargument der Port, auf dem der Server gehostet werden soll.
Alternativ ist ein Docker-Image auf DockerHub verfügbar (mit freundlicher Genehmigung von maximalmax90).
Der Server liest/erstellt eine Einstellungsdatei namens serversettings.json
, die geändert werden kann, um die Standardstarteinstellungen des Servers zu ändern. Alternativ können die Einstellungen geändert werden, indem der Befehl „settings“ in der Befehlszeile ausgeführt wird. Zusätzlich zu den oben beschriebenen Befehlen verfügt der Standalone-Server auch über die folgenden Befehle:
exit
: Verlässt den Server ordnungsgemäß und trennt seine Benutzer.Es gibt viele konfigurierbare Einstellungen, die die Funktionsweise des Mods ändern können. Die Client-Einstellungen sind in der Benutzeroberfläche des Pausenmenüs des Mods verfügbar, während die Servereinstellungen mit dem Befehl „Einstellungen“ geändert werden können.
Die Client-Einstellungen enthalten folgende Einträge:
Dieser Abschnitt enthält die Einstellungen für den Server. Diese Werte können mit dem oben beschriebenen set
-Befehl gelesen und geändert werden. Bei allen Namen für die Einstellungen wird die Groß-/Kleinschreibung nicht beachtet, sie werden jedoch aus Gründen der Klarheit in Groß-/Kleinschreibung geschrieben.
IsPvpEnabled
: ob Spieler-gegen-Spieler-Schaden aktiviert ist.pvp
IsBodyDamageEnabled
: Ob Kontaktschaden aktiviert ist, d. h. wenn sich Spielermodelle berühren, werden beide beschädigt. Dies hat nur Auswirkungen, wenn auch PvP aktiviert ist.bodydamage
AlwaysShowMapIcons
: Legt fest, ob die Kartenstandorte des Spielers immer auf der Karte im Spiel geteilt werden.globalmapicons
OnlyBroadcastMapIconWithWaywardCompass
: Legt fest, ob der Kartenstandort eines Spielers nur geteilt wird, wenn er den Charme „Wayward Compass“ trägt. Beachten Sie, dass diese Einstellung keine Auswirkung hat, wenn Kartenstandorte immer freigegeben werden.compassicon
, compassicons
, waywardicon
, waywardicons
DisplayNames
: Ob Overhead-Namen angezeigt werden sollen.names
TeamsEnabled
: Ob Spielerteams aktiviert sind. Spieler im selben Team können sich gegenseitig keinen Schaden zufügen. Teams können im Client-Einstellungsmenü ausgewählt werden.teams
AllowSkins
: Ob Spieler-Skins erlaubt sind. Wenn die Funktion deaktiviert ist, können Spieler einen Skin nicht lokal verwenden und er wird auch nicht an andere Spieler übertragen.skins
AllowParries
: Ob Nagelschnitte und Nail Arts pariert werden können. Nur anwendbar, wenn IsPvpEnabled
wahr ist.parries
Die restlichen Einstellungen enthalten Einträge für die Schadenswerte der meisten PvP-fähigen Zauber und Fähigkeiten. Wenn Sie sie auf einen Wert von 0
setzen, wird der Schaden vollständig deaktiviert. Im Folgenden finden Sie eine Liste der Einstellungsnamen für diese zusammen mit ihren Aliasnamen in Klammern:
NailDamage
( naildmg
)GrubberflyElegyDamage
( elegydmg
)VengefulSpiritDamage
( vsdmg
, fireballdamage
, fireballdmg
)ShadeSoulDamage
( shadesouldmg
)DesolateDiveDamage
( desolatedivedmg
, ddivedmg
)DescendingDarkDamage
( descendingdarkdmg
, ddarkdmg
)HowlingWraithDamage
( howlingwraithsdamage
, howlingwraithsdmg
, wraithsdmg
)AbyssShriekDamage
( abyssshriekdmg
, shriekdmg
)GreatSlashDamage
( greatslashdmg
)DashSlashDamage
( dashslashdmg
)CycloneSlashDamage
( cycloneslashdmg
, cyclonedmg
)SporeShroomDamage
( sporeshroomdmg
)SporeDungShroomDamage
( sporedungshroomdmg
, dungshroomdmg
)ThornOfAgonyDamage
( thornsofagonydamage
, thornsofagonydmg
, thornsdamage
, thornsdmg
)SharpShadowDamage
( sharpshadowdmg
) Skins können installiert werden, indem ein Ordner im Skins-Verzeichnis abgelegt wird (
). Wenn diese Verzeichnisstruktur noch nicht vorhanden ist, sollte sie generiert werden, sobald Sie das Spiel mindestens einmal mit installiertem HKMP gestartet haben. Dieser Ordner kann einen beliebigen Namen haben, aber die Dateien sollten Texturblätter sein, die auch Hollow Knight normalerweise verwendet. Nachdem Sie das Spiel mit installierten Skins ausgeführt haben, sollte für jedes dieser Skin-Verzeichnisse eine entsprechende id.txt
Datei generiert werden. Diese ID-Datei enthält eine einzelne Ganzzahl, die die ID dieses Skins darstellt. Diese ID kann dann im Spiel verwendet werden, um den Skin aus dem Client-Einstellungsmenü auszuwählen. Normalerweise beginnen diese IDs bei 1
und erhöhen sich schrittweise, je mehr Skins Sie verwenden. Es ist jedoch möglich, die ID-Dateien manuell zu bearbeiten, um andere IDs zu verwenden.
Es gibt verschiedene Möglichkeiten, wie Sie zu diesem Projekt beitragen können. Nachfolgend werden alle aufgeführt. Bitte lesen und befolgen Sie auch den Beitragsleitfaden.
Wenn Sie Vorschläge oder Fehlerberichte haben, hinterlassen Sie diese bitte auf der Seite „Probleme“. Achten Sie darauf, die Probleme richtig zu kennzeichnen und eine angemessene Erklärung abzugeben. Vorschläge oder Funktionswünsche können mit „Erweiterung“, Fehlerberichte mit „Bug“ usw. gekennzeichnet werden.
Der HKMP-Mod kann auch von Grund auf neu erstellt werden. Dies erfordert einige Abhängigkeiten vom Hollow Knight-Spiel und der Modding-API. Von der Modding-API werden nämlich folgende Assemblys benötigt:
Assembly-CSharp.dll (modified by the modding API)
MMHOOK_Assembly-CSharp.dll
MMHOOK_PlayMaker.dll
MonoMod.Utils.dll
Und die folgenden Baugruppen werden vom Hollow Knight-Spiel/Unity benötigt:
PlayMaker.dll
UnityEngine.AudioModule.dll
UnityEngine.CoreModule.dll
UnityEngine.dll
UnityEngine.ImageConversionModule.dll
UnityEngine.InputLegacyModule
UnityEngine.ParticleSystemModule.dll
UnityEngine.Physics2DModule.dll
UnityEngine.TextRenderingModule.dll
UnityEngine.UI.dll
UnityEngine.UIModule.dll
Alle oben genannten Dateien befinden sich je nach Betriebssystem im folgenden Verzeichnis (und können je nach Installation variieren):
C:Program Files (x86)SteamsteamappscommonHollow Knighthollow_knight_DataManaged
.~/Library/Application Support/Steam/steamapps/common/Hollow Knight/hollow_knight.app/
, dann klicken Sie auf „Paketinhalt öffnen“ und content -> resources -> data -> managed
~/.local/share/Steam/steamapps/common/Hollow Knight/hollow_knight_Data/Managed
Wenn diese Assemblys zur Hand sind (entweder in ihrem ursprünglichen Hollow Knight-Verzeichnis oder an einen anderen Ort verschoben), sollten Sie die Datei HKMP/LocalBuildProperties_example.props
kopieren und in HKMP/LocalBuildProperties.props
umbenennen und die darin enthaltenen Pfade mit Ihren lokal verwendeten Pfaden füllen. Danach kann der Quellcode in eine DLL kompiliert werden, und schon kann es losgehen!
Der Standalone-Server kann auch von Grund auf neu erstellt werden. Technisch gesehen gibt es zwei Abhängigkeiten für den Server:
HKMP.dll
)Newtonsoft.Json.dll
) Die HKMP-Mod-DLL wird aus dem Release-Verzeichnis des Mod-Projekts verlinkt und muss nicht manuell kopiert werden. Die Newtonsoft JSON-Bibliothek finden Sie jedoch wie oben beschrieben in Ihrer modifizierten Hollow Knight-Installation. Diese DLL sollte im Verzeichnis HKMPServer/Lib/
abgelegt werden und wird während des Erstellungsprozesses zusammen mit der HKMP-DLL eingebettet.
Stellen Sie sicher, dass Sie zuerst den HKMP-Mod erstellen, bevor Sie den Server erstellen, um sicherzustellen, dass die neueste Version eingebettet ist.
Wenn Ihnen dieses Projekt gefällt und Sie an seiner Entwicklung interessiert sind, sollten Sie darüber nachdenken, Unterstützer auf Patreon zu werden. Sie erhalten Zugriff auf Entwicklungsbeiträge, Vorschauen und frühen Zugriff auf neue Funktionen. Zusätzlich erhältst du eine Rolle auf dem Discord-Server mit Zugang zu exklusiven Kanälen.
HKMP ist eine Spielmodifikation für Hollow Knight, die Multiplayer hinzufügt.
Copyright (C) 2023 Extremelyd1
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301
USA