Confirmedusers
13,514
edits
Mirotworez (talk | contribs) (Created page with "Разработка модов на основе кода для Vintage Story требует понимания разницы между сервером и клиентом, особенно для более сложных приложений.") |
Mirotworez (talk | contribs) (Created page with "=== Примечания === * Если по какой-то причине вы хотите установить полностью отдельную установку для своего тестового сервера, вы также можете это сделать. Либо установите полную версию игры в отдельный каталог и запустите оттуда свой сервер, либо загрузите TAR-фа...") |
||
(4 intermediate revisions by the same user not shown) | |||
Line 5: | Line 5: | ||
Разработка модов на основе кода для Vintage Story требует понимания разницы между сервером и клиентом, особенно для более сложных приложений. | Разработка модов на основе кода для Vintage Story требует понимания разницы между сервером и клиентом, особенно для более сложных приложений. | ||
Понимание разделения задач между серверными и клиентскими потоками облегчит устранение неполадок и создание хорошо спроектированных систем модов, особенно если вы планируете, чтобы ваш мод работал на многопользовательских серверах. | |||
== Основы == | |||
Ядром типичного мода является ModSystem, более подробно описанная на странице [[Modding:Advanced_Blocks/ru|Advanced Blocks]]. | |||
<syntaxhighlight lang="c#"> | <syntaxhighlight lang="c#"> | ||
public class ExampleMod : ModSystem | public class ExampleMod : ModSystem | ||
</syntaxhighlight> | </syntaxhighlight> | ||
Как описано в документации по API ([https://apidocs.vintagestory.at/api/Vintagestory.API.Common.ModSystem.html VintageStory.API.Common.ModSystem]), <code>ModSystem</code> включает номер виртуальных методов, которые ваш мод может переопределить. Возможно, чаще всего используется метод <code>ModSystem.Start(ICoreAPI)</code>. Вы можете использовать этот метод для определения кода инициализации, который должен запускаться при первой загрузке игры. Однако важно понимать, что по умолчанию игра создает один экземпляр вашей ModSystem на сервере и один дополнительный экземпляр ModSystem на каждом клиенте. В случае однопользовательской игры на одном компьютере будут работать один сервер и один клиент. В результате любой код, который вы поместите в <code>ModSystem.Start</code>, будет выполняться два или более раз — один раз в потоке сервера и один раз в каждом потоке клиента. | |||
== Is My Mod Server-Side, Client-Side, or Both? == | == Is My Mod Server-Side, Client-Side, or Both? == | ||
''TBA'' | ''TBA'' | ||
== Общие "подводные камни" == | |||
= | * В одиночной игре сервер и клиент используют один и тот же путь к данным. Это важно иметь в виду, особенно если вы сохраняете/читаете какие-либо настройки мода из пути к данным игры, например, используя встроенные методы [[Modding:ModConfig/ru|ModConfig]]. Например, ваш мод может работать нормально в одиночной игре, если серверный поток читает ваш файл настроек, но затем не работает должным образом на многопользовательском сервере, где клиентский поток должен был читать настройки игрока. | ||
* | |||
== Полезные советы == | |||
== | * В большинстве случаев мод может быть разработан для работы как в одиночной, так и в многопользовательской игре без какой-либо специальной логики. Однако если вам по какой-то причине нужно проверить состояние сеанса, вы можете использовать свойство <code>ICoreClientAPI.IsSinglePlayer</code>, чтобы проверить, является ли текущая игра однопользовательской игрой. | ||
* | * Если у вас есть какие-либо сомнения или опасения по поводу работы вашего мода на многопользовательском сервере, рассмотрите возможность настройки локального сервера на своем компьютере, чтобы проверить его! | ||
* | |||
== Тестирование разделенного сервера и клиента == | |||
Легко проверить, как ваш мод будет работать на многопользовательском сервере, даже если вы работаете только на одной локальной машине! | |||
«Следующие инструкции предназначены для Windows, но другие операционные системы должны работать аналогично». | |||
# Прежде чем начать, удалите все моды, которые вы поместили непосредственно в каталог программы Vintage Story (например, <code>C:\Program Files\Vintagestory</code>). Моды в этом каталоге будут общими для сервера и клиента с настройкой, описанной ниже. | |||
# | #* Вместо этого переместите эти моды в каталог данных (в Windows это <code>%appdata%/Vintagestory/Mods/</code> по умолчанию). | ||
#* | # Установите ярлык для файла VintageStoryServer.exe игры в существующем каталоге программы Vintage Story. Вы будете использовать этот ярлык для запуска тестового сервера. Вам нужно будет указать собственный путь к данным с помощью параметра запуска, чтобы убедиться, что сервер использует путь к данным, отличный от пути к данным по умолчанию. Например, в Windows ваш ярлык может иметь цель<br><code>C:\Program Files\Vintagestory\VintagestoryServer.exe --dataPath "%appdata%/VintagestoryData_Server"</code><br>[[Image: Local_Server_Example_Shortcut.png]] | ||
# | # Дважды щелкните ярлык, чтобы запустить сервер. | ||
# | # В этот момент сервер сгенерирует новые папки и содержимое в указанном вами каталоге <code>--dataPath</code>. Например, теперь вы можете перейти по этому пути и добавить копию вашего мода в подкаталог </code>/Mods</code>, если вы хотите, чтобы сервер загрузил ваш мод (после чего вам нужно будет перезапустить сервер). Сервер также будет выводить журналы в подкаталог <code>/Logs</code> здесь. | ||
# | # Если вы хотите загрузить копию своего мода на стороне клиента, обязательно добавьте свой мод в каталог с обычным путем к данным (в Windows это <code>%appdata%/Vintagestory/Mods/</code> по умолчанию). | ||
# | # Запустите обычный игровой клиент и выберите «Мультиплеер» в главном меню. Добавьте новый сервер и настройте его со значением хоста/IP-адреса «localhost». Затем нажмите "Сохранить".<br>[[Image:Local_Server_Example_Config.png]] | ||
# | # Теперь вы можете выбрать свой сервер в многопользовательском меню для подключения! Все моды, настройки и журналы должны быть разделены, и вы можете проверить, будет ли мод работать должным образом на многопользовательском сервере. | ||
# | |||
=== Примечания === | |||
* Если по какой-то причине вы хотите установить полностью отдельную установку для своего тестового сервера, вы также можете это сделать. Либо установите полную версию игры в отдельный каталог и запустите оттуда свой сервер, либо загрузите TAR-файл «(только для сервера)» с сайта загрузки Vintage Story. Имейте в виду, что вам все равно нужно указать собственный путь к данным, чтобы файлы сервера были отделены от обычного игрового клиента. | |||
* | * Вы также можете настроить дополнительные пользовательские пути для вашего сервера, используя другие параметры запуска, такие как <code>--addModPath</code>. Для получения дополнительной информации посетите страницу [[Client startup parameters/ru|Параметры запуска клиента]]. | ||
* | * Если вы не знакомы с настройкой сервера, вы также можете посетить страницу [[Server Config/ru|Конфигурация сервера]]. Например, вы можете установить значение конфигурации <code>"AdvertiseServer"</code> в "false", если вы используете этот сервер только для локального тестирования модов. | ||
* | |||
{{Navbox/modding|Vintage Story}} | {{Navbox/modding|Vintage Story}} |