Как следует из названия, Hollow Knight Multiplayer (HKMP) — это многопользовательский мод для популярной 2D-приключенческой игры Hollow Knight. Основная цель этого мода — позволить людям создавать игры и позволять другим присоединяться к ним в их приключениях. Для мода есть выделенный сервер Discord, где вы можете задавать вопросы или вообще рассказывать о моде. Кроме того, вы можете оставлять предложения или отчеты об ошибках. Там будут публиковаться последние объявления.
Существует созданное сообществом руководство, позволяющее легко начать работу с модом. Если у вас нет опыта моддинга на Github и/или Hollow Knight, рекомендуем начать использовать мод с этого способа. Альтернативно, в разделах ниже показано, как получить мод из установщика или установить его вручную.
Последнюю версию мода можно найти на Lumafly, установщике модов для Hollow Knight 1.5. Используя эту ссылку, вы автоматически загрузите правильную версию установщика Lumafly для вашей ОС. Затем этот установщик автоматически загрузит API моддинга, и вы сможете установить мод через простой в использовании интерфейс.
Мод работает через API моддинга Hollow Knight. После установки API этот мод можно установить, поместив скомпилированную DLL в папку модов, которую можно найти в вашей установке Steam: (Учтите, что это папки по умолчанию. В этом случае ваша установка может находиться на другом диске. соответственно измените свой путь.)
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 можно найти на странице релизов.
Основной интерфейс мода можно найти в меню паузы в игре. Существует возможность разместить игру на указанном порту и возможность присоединиться к игре по введенному адресу и указанному порту. Играть в многопользовательскую игру с людьми по локальной сети несложно, но игра через Интернет требует дополнительной работы. А именно, порт размещенной игры должен быть перенаправлен на вашем маршрутизаторе, чтобы указывать на устройство, на котором вы размещаете. Альтернативно вы можете использовать программное обеспечение для расширения вашей локальной сети, например Hamachi.
Интерфейс также можно скрыть, нажав комбинацию клавиш (по умолчанию right ALT
). Эту привязку клавиш можно изменить в конфигурации мода, которую можно найти в следующих местах в зависимости от ОС:
%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
Привязки клавиш хранятся в виде кодов клавиш. В этом списке приведены все возможные варианты кодов клавиш.
В дополнение к пользовательскому интерфейсу меню паузы имеется окно чата, позволяющее пользователям вводить команды. Ввод чата можно открыть с помощью сочетания клавиш (по умолчанию T
), которое содержит следующие команды:
connect
: Подключитесь к серверу по указанному адресу и порту с указанным именем пользователя.host [port]
: запустить сервер на указанном порту или остановить существующий сервер.list
: список имен подключенных в данный момент игроков.set [value]
: прочитать или записать параметр с заданным именем и заданным значением. Список возможных настроек см. в разделе ниже.announce
: передать сообщение в чате всем подключенным игрокам.kick
: выгнать игрока с указанным ключом аутентификации, именем пользователя или IP-адресом.ban
: заблокировать игрока с указанным ключом аутентификации или именем пользователя. Если задано имя пользователя, бан будет выдан только в том случае, если пользователь с данным именем пользователя в данный момент подключен к серверу.unban
: Разблокировать игрока с данным ключом аутентификации.banip
: заблокировать IP-адрес игрока с указанным ключом аутентификации, именем пользователя или IP-адресом. Если указан ключ аутентификации или имя пользователя, бан будет выдан только в том случае, если пользователь с данным ключом аутентификации или именем пользователя в настоящее время подключен к серверу.unbanip
: разблокировать IP игрока с данным IP-адресом.Каждый пользователь локально генерирует ключ аутентификации для аутентификации и авторизации. Этот ключ можно использовать для внесения в белый список и авторизации определенных пользователей, чтобы позволить им присоединяться к серверу или выполнять команды, требующие более высокого разрешения.
whitelist [args]
: Управляйте белым списком со следующими параметрами:whitelist
: Включить/выключить белый список.whitelist [name|auth key]
: добавить/удалить данное имя пользователя или ключ аутентификации в/из белого списка. Если имя пользователя не соответствует имени онлайн-игрока, оно будет добавлено в «предварительный список». Затем, если новый игрок с именем пользователя из этого списка войдет в систему, он автоматически будет добавлен в белый список.whitelist [prelist]
: Очистить белый список (или предварительный список, если prelist
был указан в качестве аргумента).auth [name|auth key]
: авторизовать онлайн-плеер с указанным именем пользователя или ключом аутентификации.deauth [name|auth key]
: деавторизовать онлайн-плеер с указанным именем пользователя или ключом авторизации. Можно запустить автономный сервер на Windows, Linux и Mac. Последний исполняемый файл сервера можно найти на странице релизов. Для Linux и Mac сервер можно запустить с установленным Mono. После установки Mono тот же исполняемый файл можно запустить с помощью mono HKMPServer.exe
. В настоящее время единственным аргументом командной строки является порт, на котором должен быть размещен сервер.
Альтернативно, образ Docker доступен на DockerHub (любезно предоставлено Maximummax90).
Сервер прочитает/создаст файл настроек с именем serversettings.json
, который можно изменить, чтобы изменить настройки запуска сервера по умолчанию. Альтернативно настройки можно изменить, запустив команду settings в командной строке. Помимо описанных выше команд, автономный сервер также имеет следующие команды:
exit
: корректно закроет сервер и отключит его пользователей.Существует множество настраиваемых параметров, которые могут изменить работу мода. Настройки клиента доступны в пользовательском интерфейсе меню паузы мода, а настройки сервера можно изменить с помощью команды настроек.
В настройках клиента есть следующие записи:
В этом разделе собраны настройки сервера. Эти значения можно прочитать и изменить с помощью команды set
, описанной выше. Все названия настроек не чувствительны к регистру, но для ясности написаны с учетом регистра.
IsPvpEnabled
: включен ли урон между игроками.pvp
IsBodyDamageEnabled
: включено ли контактное повреждение, а именно, когда модели игроков соприкасаются, они обе будут повреждены. Это имеет эффект только в том случае, если PvP также включен.bodydamage
AlwaysShowMapIcons
: всегда ли местоположение игрока отображается на внутриигровой карте.globalmapicons
OnlyBroadcastMapIconWithWaywardCompass
: будет ли сообщаться местоположение игрока на карте только в том случае, если у него есть брелок Wayward Compass. Обратите внимание: если местоположения на карте всегда являются общими, этот параметр не имеет никакого эффекта.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
) Скины можно установить, поместив папку в каталог скинов (
). Если эта структура каталогов еще отсутствует, ее следует создать после того, как вы хотя бы один раз запустили игру с установленным HKMP. Эту папку можно назвать как угодно, но файлы должны представлять собой листы текстур, которые Hollow Knight также обычно использует. После запуска игры с установленными скинами в каждом из этих каталогов скинов должен быть создан соответствующий файл id.txt
. Этот файл идентификатора содержит одно целое число, представляющее идентификатор этого скина. Этот идентификатор затем можно будет использовать в игре для выбора скина в меню настроек клиента. Обычно эти идентификаторы начинаются с 1
и постепенно увеличиваются по мере того, как вы используете больше скинов, но можно вручную редактировать файлы идентификаторов, чтобы использовать другие идентификаторы.
Есть несколько способов внести свой вклад в этот проект, и все они описаны ниже. Пожалуйста, также прочтите и соблюдайте руководство по участию.
Если у вас есть предложения или сообщения об ошибках, оставляйте их на странице проблем. Обязательно правильно обозначайте проблемы и дайте правильное объяснение. Предложения или запросы функций могут быть помечены как «Улучшение», отчеты об ошибках — как «Ошибка» и т. д.
Мод HKMP также можно создать с нуля. Для этого требуется несколько зависимостей от игры Hollow Knight и API моддинга. А именно из 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, и все готово!
Автономный сервер также можно построить с нуля. Технически существует две зависимости для сервера:
HKMP.dll
)Newtonsoft.Json.dll
) DLL мода HKMP связана с каталогом Release проекта мода, и ее не нужно копировать вручную. Однако библиотеку Newtonsoft JSON можно найти в вашей модифицированной установке Hollow Knight, как указано выше. Эту DLL следует поместить в каталог HKMPServer/Lib/
и она будет встроена вместе с DLL HKMP в процессе сборки.
Обязательно сначала создайте мод HKMP, прежде чем создавать сервер, чтобы убедиться, что установлена последняя версия.
Если вам нравится этот проект и вы заинтересованы в его развитии, рассмотрите возможность стать сторонником на 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