名前が示すように、Hollow Knight Multiplayer (HKMP) は、人気の 2D アクション アドベンチャー ゲーム Hollow Knight のマルチプレイヤー MOD です。この MOD の主な目的は、人々がゲームをホストできるようにし、他の人がゲームの冒険に参加できるようにすることです。 MOD 専用の Discord サーバーがあり、そこで質問したり、MOD について一般的に話したりすることができます。さらに、提案やバグレポートを残すこともできます。最新のお知らせはそこに掲載されます。
MOD を簡単に始めるために、コミュニティが作成したガイドが存在します。 Github や Hollow Knight の MOD の経験がない場合は、これが MOD の使用を開始するための推奨される方法です。あるいは、以下のセクションでは、インストーラーから MOD を入手する方法、または手動でインストールする方法を説明します。
MOD の最新バージョンは、Hollow Knight 1.5 の MOD インストーラーである Lumafly にあります。このリンクを使用すると、お使いの OS に適したバージョンの Lumafly インストーラーが自動的にダウンロードされます。このインストーラーは自動的にモッディング API をダウンロードし、使いやすいインターフェースを介してモッディングをインストールできます。
この MOD は、Hollow Knight Modding API を通じて機能します。 API をインストールした後、コンパイルされた DLL を Steam インストール内にある mods フォルダーにドロップすることで、この MOD をインストールできます: (これらはデフォルトの場所であることに注意してください。その場合、インストールは別のドライブにある可能性があります)それに応じてパスを変更してください。)
C:Program Files (x86)SteamsteamappscommonHollow Knighthollow_knight_DataManagedMods
~/Library/Application Support/Steam/steamapps/common/Hollow Knight/hollow_knight.app/
クリックし、「パッケージのコンテンツを開く」をクリックし、 content -> resources -> data -> managed -> mods
~/.local/share/Steam/steamapps/common/Hollow Knight/hollow_knight_Data/Managed/Mods/
コンパイルされた DLL の最新バージョンは、リリース ページにあります。
MOD のメイン インターフェイスは、ゲーム内の一時停止メニューにあります。入力したポートでゲームをホストするオプションと、入力したアドレスと入力したポートでゲームに参加するオプションがあります。 LAN 上の人々とマルチプレイヤーをプレイするのは簡単ですが、インターネット経由でプレイするには追加の作業が必要です。つまり、ホストされているゲームのポートは、ホストしているデバイスを指すようにルーターで転送される必要があります。あるいは、Hamachi などの LAN の拡張を容易にするソフトウェアを使用することもできます。
このインターフェースは、キーバインド (デフォルトではright ALT
) を押して非表示にすることもできます。このキーバインドは、MOD の設定で変更できます。この設定は、OS に応じて次の場所にあります。
%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
キーバインドはキーコード形式で保存されます。考えられるすべてのキーコード オプションについては、このリストを参照してください。
一時停止メニュー UI に加えて、ユーザーがコマンドを入力できるチャット ウィンドウがあります。チャット入力はキーバインド (デフォルトではT
) で開くことができ、次のコマンドが使用できます。
connect <address> <port> <username>
: 指定されたアドレスとポートのサーバーに指定されたユーザー名で接続します。host <start|stop> [port]
: 指定されたポートでサーバーを起動するか、既存のサーバーを停止します。list
: 現在接続しているプレーヤーの名前をリストします。set <setting name> [value]
: 指定された名前と指定された値で設定を読み取りまたは書き込みます。可能な設定のリストについては、以下のセクションを参照してください。announce <message>
: 接続されているすべてのプレイヤーにチャット メッセージをブロードキャストします。kick <auth key|username|ip address>
: 指定された認証キー、ユーザー名、または IP アドレスを持つプレーヤーをキックします。ban <auth key|username>
: 指定された認証キーまたはユーザー名を持つプレーヤーを禁止します。ユーザー名を指定すると、指定されたユーザー名を持つユーザーが現在サーバーに接続している場合にのみ禁止が発行されます。unban <auth key>
: 指定された認証キーを使用してプレーヤーの禁止を解除します。banip <auth key|username|ip address>
: 指定された認証キー、ユーザー名、または IP アドレスを持つプレーヤーの IP を禁止します。認証キーまたはユーザー名が指定されている場合、指定された認証キーまたはユーザー名を持つユーザーが現在サーバーに接続している場合にのみ禁止が発行されます。unbanip <ip address>
: 指定された IP アドレスを持つプレーヤーの IP の禁止を解除します。各ユーザーは、認証と認可のための認証キーをローカルに生成します。このキーを使用して、特定のユーザーをホワイトリストに登録し、サーバーへの参加や、より高い権限を必要とするコマンドの実行を許可することができます。
whitelist [args]
: 次のオプションを使用してホワイトリストを管理します。whitelist <on|off>
: ホワイトリストを有効/無効にします。whitelist <add|remove> [name|auth key]
: 指定されたユーザー名または認証キーをホワイトリストに追加またはホワイトリストから削除します。オンライン プレーヤーに対応しないユーザー名が指定された場合、そのユーザー名は「プレリスト」に追加されます。このリストにあるユーザー名を持つ新しいプレーヤーがログインすると、そのプレーヤーは自動的にホワイトリストに登録されます。whitelist <clear> [prelist]
: ホワイトリスト ( prelist
が引数として指定された場合はプレリスト) をクリアします。auth [name|auth key]
: 指定されたユーザー名または認証キーを使用してオンライン プレーヤーを認証します。deauth [name|auth key]
: 指定されたユーザー名または認証キーを使用してオンライン プレーヤーの認証を解除します。Windows、Linux、Mac 上でスタンドアロン サーバーを実行することが可能です。サーバーの最新の実行可能ファイルは、リリース ページにあります。 Linux および Mac の場合、サーバーは Mono がインストールされた状態で実行できます。 Mono をインストールした後、 mono HKMPServer.exe <port>
使用して同じ実行可能ファイルを実行できます。現在、コマンドライン引数はサーバーをホストするポートのみです。
あるいは、Docker イメージは DockerHub で入手できます (maximalmax90 の提供)。
サーバーは、 serversettings.json
という設定ファイルを読み取り/作成します。このファイルを変更すると、サーバーのデフォルトの起動設定を変更できます。あるいは、コマンド ラインで settings コマンドを実行して設定を変更することもできます。上で説明したコマンドに加えて、スタンドアロン サーバーには次のコマンドもあります。
exit
: サーバーを正常に終了し、ユーザーを切断します。MOD の機能を変更できる構成可能な設定が多数あります。クライアント設定は MOD の一時停止メニュー UI で利用でき、サーバー設定は設定コマンドで変更できます。
クライアント設定には次のエントリが含まれます。
このセクションにはサーバーの設定が含まれています。これらの値は、上記のset
コマンドによって読み取りおよび変更できます。設定の名前はすべて大文字と小文字が区別されませんが、わかりやすくするために大文字と小文字が区別されています。
IsPvpEnabled
: プレイヤー対プレイヤーのダメージが有効かどうか。pvp
IsBodyDamageEnabled
: 接触ダメージが有効かどうか、つまりプレーヤー モデルが接触すると、両方がダメージを受けます。これは、PvP も有効になっている場合にのみ効果があります。bodydamage
AlwaysShowMapIcons
: プレイヤーのマップの位置をゲーム内マップ上で常に共有するかどうか。globalmapicons
OnlyBroadcastMapIconWithWaywardCompass
: プレーヤーのマップ位置が、ウェイワード コンパス チャームを装備している場合にのみ共有されるかどうか。マップの場所が常に共有されている場合、この設定は効果がないことに注意してください。compassicon
、 compassicons
、 waywardicon
、 waywardicons
DisplayNames
: オーバーヘッド名を表示するかどうか。names
TeamsEnabled
: プレーヤーのチームが有効かどうか。同じチームのプレイヤーは互いにダメージを与えることはできません。チームはクライアント設定メニューから選択できます。teams
AllowSkins
: プレーヤーのスキンを許可するかどうか。無効にすると、プレイヤーはスキンをローカルで使用できなくなり、他のプレイヤーにスキンを送信することもできなくなります。skins
AllowParries
: ネイルスラッシュとネイルアーツをパリィできるかどうか。 IsPvpEnabled
が true の場合にのみ適用されます。parries
残りの設定には、ほとんどの PvP 対応呪文と能力のダメージ値のエントリが含まれています。値を0
に設定すると、ダメージが完全に無効になります。以下は、これらの設定名のリストと括弧内のエイリアスです。
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
)スキンは、フォルダーをスキン ディレクトリ ( <steam>/Hollow Knight/hollow_knight_Data/Managed/Mods/HKMP/Skins
) にドロップすることでインストールできます。このディレクトリ構造がまだ存在しない場合は、HKMP がインストールされた状態でゲームを少なくとも 1 回起動すると、ディレクトリ構造が生成されるはずです。このフォルダーには任意の名前を付けることができますが、ファイルは Hollow Knight も通常使用するテクスチャ シートである必要があります。スキンをインストールしてゲームを実行した後、これらの各スキン ディレクトリに対応するid.txt
ファイルが生成されるはずです。この ID ファイルには、そのスキンの ID を表す単一の整数が含まれています。この ID はゲーム内でクライアント設定メニューからスキンを選択するために使用できます。通常、これらの ID は1
から始まり、使用するスキンが増えるにつれて徐々に増加しますが、ID ファイルを手動で編集して他の ID を使用することも可能です。
このプロジェクトに貢献できる方法はいくつかありますが、その概要を以下に示します。寄稿ガイドも読んで遵守してください。
ご提案やバグレポートがある場合は、問題ページに残してください。問題に正しくラベルを付け、適切な説明を提供するようにしてください。提案や機能リクエストには「機能強化」、バグレポートには「バグ」などのラベルを付けることができます。
HKMP MOD は最初から構築することもできます。これには、Hollow Knight ゲームと改造 API からのいくつかの依存関係が必要です。つまり、 Modding APIには次のアセンブリが必要です。
Assembly-CSharp.dll (modified by the modding API)
MMHOOK_Assembly-CSharp.dll
MMHOOK_PlayMaker.dll
MonoMod.Utils.dll
また、 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
上記のすべてのファイルは、オペレーティング システムに基づいて次のディレクトリにあります (インストールによって異なる場合があります)。
C:Program Files (x86)SteamsteamappscommonHollow Knighthollow_knight_DataManaged
。~/Library/Application Support/Steam/steamapps/common/Hollow Knight/hollow_knight.app/
クリックし、「パッケージのコンテンツを開く」をクリックし、 content -> resources -> data -> managed
~/.local/share/Steam/steamapps/common/Hollow Knight/hollow_knight_Data/Managed
これらのアセンブリが手元にある (元の Hollow Knight ディレクトリにある、または別の場所に移動した) 場合は、 HKMP/LocalBuildProperties_example.props
ファイルをコピーして名前をHKMP/LocalBuildProperties.props
に変更し、そのファイル内のパスをローカルで使用されているパスに記入する必要があります。この後、ソース コードを DLL にコンパイルできるようになり、準備完了です。
スタンドアロン サーバーを最初から構築することもできます。技術的には、サーバーには 2 つの依存関係があります。
HKMP.dll
)Newtonsoft.Json.dll
) HKMP mod DLL は mod プロジェクトの Release ディレクトリからリンクされているため、手動でコピーする必要はありません。ただし、Newtonsoft JSON ライブラリは、上で示したように、MOD を適用した Hollow Knight インストール内にあります。この DLL はHKMPServer/Lib/
ディレクトリに配置する必要があり、ビルド プロセス中に HKMP DLL と一緒に埋め込まれます。
最新バージョンが確実に埋め込まれるように、サーバーを構築する前に必ず最初に HKMP mod を構築してください。
このプロジェクトが気に入って開発に興味がある場合は、Patreon でサポーターになることを検討してください。開発投稿、スニーク ピーク、新機能への早期アクセスにアクセスできます。さらに、Discord サーバーでの役割を獲得し、専用チャンネルにアクセスできるようになります。
HKMP は、マルチプレイヤーを追加する Hollow Knight のゲーム修正です。
著作権 (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