Comme son nom l'indique, Hollow Knight Multiplayer (HKMP) est un mod multijoueur pour le populaire jeu d'action-aventure 2D Hollow Knight. L'objectif principal de ce mod est de permettre aux gens d'héberger des jeux et de permettre aux autres de les rejoindre dans leurs aventures. Il existe un serveur Discord dédié au mod sur lequel vous pouvez poser des questions ou parler généralement du mod. De plus, vous pouvez laisser des suggestions ou des rapports de bugs. Les dernières annonces y seront publiées.
Un guide réalisé par la communauté existe pour démarrer facilement avec le mod. Si vous n'êtes pas expérimenté avec le modding Github et/ou Hollow Knight, c'est la méthode recommandée pour commencer à utiliser le mod. Alternativement, les sections ci-dessous illustrent comment obtenir le mod à partir du programme d'installation ou l'installer manuellement.
La dernière version du mod peut être trouvée sur Lumafly, un programme d'installation de modding pour Hollow Knight 1.5. L'utilisation de ce lien téléchargera automatiquement la version correcte du programme d'installation de Lumafly pour votre système d'exploitation. Ce programme d'installation téléchargera ensuite automatiquement l'API de modding et vous pourrez installer le mod via une interface facile à utiliser.
Le mod fonctionne via l'API Hollow Knight Modding. Après avoir installé l'API, ce mod peut être installé en déposant la DLL compilée dans votre dossier mods, qui se trouve dans votre installation Steam : (Attention, ce sont les emplacements par défaut. Votre installation peut être sur un lecteur différent, dans ce cas. changez votre chemin en conséquence.)
C:Program Files (x86)SteamsteamappscommonHollow Knighthollow_knight_DataManagedMods
~/Library/Application Support/Steam/steamapps/common/Hollow Knight/hollow_knight.app/
, puis cliquez sur "ouvrir le contenu du package" et content -> resources -> data -> managed -> mods
~/.local/share/Steam/steamapps/common/Hollow Knight/hollow_knight_Data/Managed/Mods/
La dernière version de la DLL compilée peut être trouvée sur la page des versions.
L'interface principale du mod se trouve dans le menu pause du jeu. Il existe une option pour héberger une partie sur le port saisi et une option pour rejoindre une partie à l'adresse saisie et au port saisi. Jouer en multijoueur avec des personnes sur votre réseau local est simple, mais jouer sur Internet nécessite un travail supplémentaire. À savoir, le port du jeu hébergé doit être redirigé vers votre routeur pour pointer vers l'appareil sur lequel vous hébergez. Vous pouvez également utiliser un logiciel pour faciliter l'extension de votre réseau local, tel que Hamachi.
L'interface peut également être masquée en appuyant sur une touche-bind ( right ALT
par défaut). Cette combinaison de touches peut être modifiée dans la configuration du mod, qui peut être trouvée aux emplacements suivants en fonction du système d'exploitation :
%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
Les raccourcis clavier sont stockés sous forme de code clé, veuillez consulter cette liste pour toutes les options de code clé possibles.
En plus de l'interface utilisateur du menu pause, il existe une fenêtre de discussion qui permet aux utilisateurs de saisir des commandes. L'entrée du chat peut être ouverte avec une combinaison de touches ( T
par défaut), qui comporte les commandes suivantes :
connect
: Connectez-vous à un serveur à l'adresse et au port donnés avec le nom d'utilisateur donné.host [port]
: Démarre un serveur sur le port donné ou arrête un serveur existant.list
: Répertorie les noms des joueurs actuellement connectés.set [value]
: Lit ou écrit un paramètre avec le nom et la valeur donnés. Pour une liste des paramètres possibles, consultez la section ci-dessous.announce
: Diffusez un message de chat à tous les joueurs connectés.kick
: Kick le joueur avec la clé d'authentification, le nom d'utilisateur ou l'adresse IP donnés.ban
: Bannissez le joueur avec la clé d'authentification ou le nom d'utilisateur donné. S'il reçoit un nom d'utilisateur, l'interdiction n'est émise que si un utilisateur portant le nom d'utilisateur donné est actuellement connecté au serveur.unban
: Annulez le bannissement du joueur avec la clé d'authentification donnée.banip
: Banni l'IP du joueur avec la clé d'authentification, le nom d'utilisateur ou l'adresse IP donné. S'il reçoit une clé d'authentification ou un nom d'utilisateur, l'interdiction n'est émise que si un utilisateur avec la clé d'authentification ou le nom d'utilisateur donné est actuellement connecté au serveur.unbanip
: Annulez le bannissement de l'IP du lecteur avec l'adresse IP donnée.Chaque utilisateur générera localement une clé d'authentification pour l'authentification et l'autorisation. Cette clé peut être utilisée pour mettre sur liste blanche et autoriser des utilisateurs spécifiques à leur permettre de rejoindre le serveur ou d'exécuter des commandes nécessitant une autorisation plus élevée.
whitelist [args]
: Gérez la liste blanche avec les options suivantes :whitelist
: Active/désactive la liste blanche.whitelist [name|auth key]
: ajoute/supprime le nom d'utilisateur ou la clé d'authentification donné à/de la liste blanche. Si vous recevez un nom d'utilisateur qui ne correspond pas à un joueur en ligne, le nom d'utilisateur sera ajouté à la « pré-liste ». Ensuite, si un nouveau joueur avec un nom d'utilisateur sur cette liste se connecte, il est automatiquement ajouté à la liste blanche.whitelist [prelist]
: Efface la liste blanche (ou la pré-liste si prelist
a été donnée en argument).auth [name|auth key]
: Autorisez le joueur en ligne avec le nom d'utilisateur ou la clé d'authentification donné.deauth [name|auth key]
: désautorisez le joueur en ligne avec le nom d'utilisateur ou la clé d'authentification donné. Il est possible d'exécuter un serveur autonome sous Windows, Linux et Mac. Le dernier exécutable du serveur peut être trouvé sur la page des versions. Pour Linux et Mac, le serveur peut être exécuté avec Mono installé. Après avoir installé Mono, le même exécutable peut être exécuté en utilisant mono HKMPServer.exe
. Actuellement, le seul argument de ligne de commande est le port sur lequel le serveur doit être hébergé.
Alternativement, une image Docker est disponible sur DockerHub (avec l'aimable autorisation de maximalmax90).
Le serveur lira/créera un fichier de paramètres appelé serversettings.json
, qui peut être modifié pour modifier les paramètres de démarrage par défaut du serveur. Alternativement, les paramètres peuvent être modifiés en exécutant la commande settings sur la ligne de commande. En plus des commandes décrites ci-dessus, le serveur autonome dispose également des commandes suivantes :
exit
: Quittera gracieusement le serveur et déconnectera ses utilisateurs.Il existe de nombreux paramètres configurables qui peuvent modifier le fonctionnement du mod. Les paramètres du client sont disponibles dans l'interface utilisateur du menu pause du mod, tandis que les paramètres du serveur peuvent être modifiés avec la commande settings.
Les paramètres client contiennent les entrées suivantes :
Cette section contient les paramètres du serveur. Ces valeurs peuvent être lues et modifiées par la commande set
décrite ci-dessus. Tous les noms des paramètres ne sont pas sensibles à la casse, mais sont écrits en casse pour plus de clarté.
IsPvpEnabled
: indique si les dégâts joueur contre joueur sont activés.pvp
IsBodyDamageEnabled
: si les dégâts de contact sont activés, à savoir lorsque les modèles de joueurs se touchent, les deux seront endommagés. Cela n'a d'effet que si le PvP est également activé.bodydamage
AlwaysShowMapIcons
: indique si les emplacements de la carte des joueurs sont toujours partagés sur la carte du jeu.globalmapicons
OnlyBroadcastMapIconWithWaywardCompass
: indique si l'emplacement sur la carte d'un joueur est partagé uniquement lorsqu'il est équipé du charme Wayward Compass. Notez que si les emplacements sur la carte sont toujours partagés, ce paramètre n'a aucun effet.compassicon
, compassicons
, waywardicon
, waywardicons
DisplayNames
: indique si les noms de surcharge doivent être affichés.names
TeamsEnabled
: indique si les équipes de joueurs sont activées. Les joueurs d’une même équipe ne peuvent pas s’infliger de dégâts. Les équipes peuvent être sélectionnées dans le menu des paramètres du client.teams
AllowSkins
: indique si les skins des joueurs sont autorisés. S'il est désactivé, les joueurs ne pourront pas utiliser un skin localement et il ne sera pas non plus transmis aux autres joueurs.skins
AllowParries
: Indique si les coupures d'ongles et les Nail Arts peuvent être parés. Applicable uniquement lorsque IsPvpEnabled
est vrai.parries
Le reste des paramètres contient des entrées pour les valeurs de dégâts de la plupart des sorts et capacités activés en PvP. Les définir sur une valeur de 0
désactivera complètement les dégâts. Voici une liste des noms de paramètres correspondants, ainsi que leurs alias entre parenthèses :
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
) Les skins peuvent être installés en déposant un dossier dans le répertoire des skins (
). Si cette structure de répertoires n'est pas encore présente, elle doit être générée une fois que vous avez lancé le jeu au moins une fois avec HKMP installé. Ce dossier peut porter n'importe quel nom, mais les fichiers doivent être des feuilles de texture que Hollow Knight utilise également normalement. Après avoir exécuté le jeu avec les skins installés, chacun de ces répertoires de skins devrait avoir un fichier id.txt
correspondant généré. Ce fichier ID contient un seul entier représentant l'ID de ce skin. Cet identifiant peut ensuite être utilisé dans le jeu pour sélectionner le skin dans le menu des paramètres du client. Normalement, ces identifiants commencent à 1
et augmentent progressivement à mesure que vous utilisez de skins, mais il est possible de modifier manuellement les fichiers d'identifiant pour utiliser d'autres identifiants.
Il existe plusieurs façons de contribuer à ce projet, qui sont toutes décrites ci-dessous. Veuillez également lire et respecter le guide de contribution.
Si vous avez des suggestions ou des rapports de bugs, veuillez les laisser sur la page des problèmes. Assurez-vous d’étiqueter correctement les problèmes et de fournir une explication appropriée. Les suggestions ou demandes de fonctionnalités peuvent être étiquetées avec « Amélioration », les rapports de bogues avec « Bug », etc.
Le mod HKMP peut également être construit à partir de zéro. Cela nécessite quelques dépendances du jeu Hollow Knight et de l'API de modding. À savoir, les assemblys suivants sont nécessaires à partir de l'API de modding :
Assembly-CSharp.dll (modified by the modding API)
MMHOOK_Assembly-CSharp.dll
MMHOOK_PlayMaker.dll
MonoMod.Utils.dll
Et les assemblages suivants sont nécessaires pour le jeu Hollow Knight/Unity :
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
Tous les fichiers ci-dessus se trouvent dans le répertoire suivant en fonction de votre système d'exploitation (et peuvent varier en fonction de l'installation) :
C:Program Files (x86)SteamsteamappscommonHollow Knighthollow_knight_DataManaged
.~/Library/Application Support/Steam/steamapps/common/Hollow Knight/hollow_knight.app/
, puis cliquez sur "ouvrir le contenu du package" et content -> resources -> data -> managed
~/.local/share/Steam/steamapps/common/Hollow Knight/hollow_knight_Data/Managed
Avec ces assemblys à portée de main (soit dans leur répertoire Hollow Knight d'origine, soit déplacés ailleurs), vous devez copier et renommer le fichier HKMP/LocalBuildProperties_example.props
en HKMP/LocalBuildProperties.props
et remplir les chemins qu'il contient selon vos chemins utilisés localement. Après cela, le code source peut être compilé dans une DLL, et vous devriez être prêt à partir !
Le serveur autonome peut également être créé à partir de zéro. Il existe techniquement deux dépendances pour le serveur :
HKMP.dll
)Newtonsoft.Json.dll
) La DLL du mod HKMP est liée à partir du répertoire Release du projet de mod et n'a pas besoin d'être copiée manuellement. La bibliothèque Newtonsoft JSON, cependant, peut être trouvée dans votre installation modifiée de Hollow Knight, comme indiqué ci-dessus. Cette DLL doit être placée dans le répertoire HKMPServer/Lib/
et sera intégrée avec la DLL HKMP pendant le processus de construction.
Assurez-vous de d'abord créer le mod HKMP avant de créer le serveur pour vous assurer que la dernière version est intégrée.
Si vous aimez ce projet et êtes intéressé par son développement, envisagez de devenir supporter sur Patreon. Vous aurez accès aux articles de développement, à des aperçus et à un accès anticipé aux nouvelles fonctionnalités. De plus, vous recevrez un rôle sur le serveur Discord avec accès à des chaînes exclusives.
HKMP est une modification de jeu pour Hollow Knight qui ajoute le mode multijoueur.
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