Голосование

Как вы оцениваете Смуту?












Оформление



Пользователей
  • Всего: 28870
  • Последний: StocVorf
Сейчас на форуме
Пользователи: 0
Гостей: 668
Всего: 668

Просмотр сообщений

В этом разделе можно просмотреть все сообщения, сделанные этим пользователем.


Темы - Fddd

Страницы: [1]
1

Введение


Данное руководство покажет вам, как шаг за шагом, создать базовый мод для Mount&Blade II: Bannerlord, используя язык C#. Этот мод добавляет кнопку "Message" в главное меню одиночного режима игры. При ее нажатии, происходит отправка сообщения "Hello World" в чат.

Перед началом


Моддинг в Mount&Blade II: Bannerlord в данный момент имеет ограничения, связанные с отсутствием доступа к инструментам мододелов от разработчиков. В тоже время доступно множество вещей с которыми можно работать и которые можно будет менять в версии для раннего доступа, не дожидаясь официальных инструментов.

Инструментарий


C# IDE (интегрированная среда разработки)
C# Decompiler (декомпилятор)
  • dnSpy или dotPeek (не требуется для базовых модификаций)
Текстовый Редактор

Вы также можете использовать Bannerlord.exe вызывая его из ".bat" файла (для более подробной информации см. пункт "Отладка"). Установка довольно проста (скопируйте файл с расширением ".exe" в папку bin\Win64_Shipping_Client, папку "Modules" в папку "Modules" игры

Cоздание папки модуля и файла SubModule


  • Найдите папку "Modules" в папке с игрой
  • Создайте и назовите папку по своему усмотрению (к примеру "MyModule")
  • Cоздайте папку "bin" внутри папки "MyModule",а потом внутри папки "bin" создайте подпапку "Win64_Shipping_Client", но не переходите в нее (она будет использовать для хранения ваших библиотек)
  • В папке модуля создайте текстовый файл и переименуйте его в "SubModule.xml" (без кавычек) и вставьте текст который вы можете видеть ниже
  • Проверьте отображается ли ваш модуль в лаунчере, в спиcке модулей для одиночной игры (singleplayer)
<Module>
        <Name value="My Module"/>
        <Id value="MyModule"/>
        <Version value="v1.0.0"/>
        <SingleplayerModule value="true"/>
        <MultiplayerModule value="false"/>
        <DependedModules/>
        <SubModules>
            <SubModule>
                <Name value="MySubModule"/>
                <DLLName value="../../Modules/MyModule/bin/Win64_Shipping_Client/ExampleMod.dll"/>
                <SubModuleClassType value="ExampleModNameSpace.MySubModule"/>
                <Tags>
                    <Tag key="DedicatedServerType" value="none" />
                    <Tag key="IsNoRenderModeElement" value="false" />
                </Tags>
            </SubModule>
        </SubModules>
        <Xmls/>
    </Module>

Создание и настройка проекта Visual Studio


До того как начать настраивать проект в Microsoft Visual Studio, важно понять что это не требуется для простейших модификаций (например изменение или добавление предметов/ персонажей/сцен).
  • Запустите Microsoft Visual Studio и выберите Create New Project (в редакции на руском языке выберите Файл>Создать>Проект)
  • Выберите библиотеку классов (.NET Framework)
  • Назовите ваш проект и выберите  .NET Framework 4.7.2. Если данная опция вам не доступна, скачайте специальный пакет для разработчиков (developer pack) здесь
  • Теперь когда ваш проект создан, задайте путь для исходных файлов компиляции проекта в Modules/ВашеНазваниеМодуля/bin, которая находится в папке с вашой игрой
  • Также нужно сделать "ссылки" с вашего новосозданного проекта на библиотеки TaleWorlds, которые находятся в bin\Win64_Shipping_Client

Создание и настройка базового класса и игровой логики


  • Для начала создадим базовый класс MySubModule (который в свою очередь наследует класс MBSubModuleBase) и применим заимствования к нему. У вас должно получиться что то такое (смотреть первый блок "Code")
  • Добавим в наш класс метод OnSubModuleLoad() и укажем на его перезапись (смотреть второй блок "Code")
  • После этого добавим немного кода в наш перезаписанный метод. По сути мы добавляем кнопку в главное меню используя метод AddInitialStateOption, а за вывод изображения на экране отвечает DisplayMessage (смотреть третий блок "Code")
  • Скомпилируйте ваш код используя комбинацию клавиш CTRL+B или CTRL+SHIFT+B (итоговый код в четвертом блоке "Сode")
  • Откройте Community Launcher и выберите ваш мод в списке модулей для одиночной игры
  • Запустите игру. В главном меню вы увидите кнопку "Message", нажав на нее, в левом нижнем углу появится текст "Hello World"
  • Поздравляем! Вы создали свой первый мод для Mount&Blade II: Bannerlord
using TaleWorlds.Core;
using TaleWorlds.Localization;
using TaleWorlds.MountAndBlade;

namespace ExampleModNameSpace
{
    public class MySubModule : MBSubModuleBase
    {
    }
}
protected override void OnSubModuleLoad()
        {
            base.OnSubModuleLoad();
        }
Module.CurrentModule.AddInitialStateOption(new InitialStateOption("Message",
                new TextObject("Message", null),
                9990,
                () => { InformationManager.DisplayMessage(new InformationMessage("Hello World!")); },
                false));
using TaleWorlds.Core;
using TaleWorlds.Localization;
using TaleWorlds.MountAndBlade;

namespace ExampleModNameSpace
{
    public class MySubModule : MBSubModuleBase
    {
       protected override void OnSubModuleLoad()
        {
            base.OnSubModuleLoad();
            Module.CurrentModule.AddInitialStateOption(new InitialStateOption("Message",
                new TextObject("Message", null),
                9990,
                () => { InformationManager.DisplayMessage(new InformationMessage("Hello World!")); },
                false));
        }
    }
}

Отладка


  • Откройте настройки проекта и выберите кнопку "Debug" (Отладка)
  • Выберите опцию Start external program (запуск внешнего приложения) и сконфигурируйте путь к файлам "Bannerlord.exe"
  • Удостоверьтесть что в качестве рабочей директории выбрана папка bin\Win64_Shipping_Client
  • Добавьте следующие command line arguments (аргументы коммандной строки)  "_MODULES_*Native*MyModule*_MODULES_ /singleplayer" (без кавычек, также удостоверьтесь что название вашего модуля "MyModule", а не какое либо другое). Вы также можете использовать данные аргументы коммандной строки для запуска своих модов (для этого создайте файл с расширением".bat" и поместите в папку bin\Win64_Shipping_Client, предварительно добавьте в файл следующее "Bannerlord.exe _MODULES_*Native*MyModule*_MODULES_ /singleplayer" (без кавычек))

Дополнительная информация


  • В качестве среды разработки для ваших модов, вы также можете использовать JetBrains Rider (отличается многими полезными функциями, в том возможностью смотреть декомпилированный код тейлов сразу, не прибегая к помощи сторонних декомпиляторов). Минусы это то что программа платная, но есть версия для студентов
  • Официальной поддержки модификаций от тейлов ждать еще как минимум пол-года, а то и год (полный функционал будет доступен только после релиза). То что я описал выше, это отличная возможность опробовать себя в моддинге уже сейчас и получить полезные навыки, которые пригодятся в будущем
  • За основу данного туториала, был взят гайд от Ster, который доступен по этой ссылке https://github.com/Bannerlord-Modding/Documentation/blob/master/_tutorials/basic-csharp-mod.md, а также документация по игре https://github.com/Bannerlord-Modding/Documentation. Пока что в ней не хватает информации по некоторым направлениям, но она будет дополнятся. Если вам интересен дальнейший моддинг игры, советую ознакомиться с ней

2
Доброго времени суток, Всадники Кальрадии!

В этой статье я хотел бы рассказать, как можно сделать качественный Skybox (прим. Skybox - это модель окружения, которая имитирует небо в компьютерных играх), а также как его правильно добавить в игру и не иметь в дальнейшем никаких неприятностей.

Для начала нам понадобится новый кубический меш, т.к сферический нам категорически не подходит, но я решил не тянуть время и просто дам вам свой, который я сделал заранее.

Скачать: https://yadi.sk/d/gYxKjmtOnof9e

Далее нам понадобится "кастомная" текстура, на которую мы и будем накладывать наш Skybox.

Скачать: https://yadi.sk/d/3QJSYzuknogAE

Теперь нужно скачать программу Terragen 3, сделать это можно на официальном сайте, вот по этой ссылке
 
http://www.planetside.co.uk/products/download-terragen-3

Ниже выберите нужную ОС, и разрядность. Версия 30-дневная, и имеет ограничения на максимальный размер рендера (1280х960) и еще некоторые функции, но нам этого хватит с головой.

Дальше скачиваем проект, с уже настроенной камерой, детализацией и другими  премудростями, которыми я вас постараюсь не нагружать. Вот по этой ссылке: https://yadi.sk/d/Y_vghIcenokGB

Итак, когда у нас есть все эти файлы можно приступать к работе.

Для начала откройте Terragen, и вы увидите что то вроде такого вот окна:



Нажмите на "Use Free Version", и продолжаем.

После этого появится окно программы, выглядит оно примерно так:



Теперь откройте проект с настройками, для этого нажмите вкладку "File" > "Open", и укажите к нему путь.
Когда проект будет открыт, перейдите в вкладку "Renderers", дальше "/Full Render", и в параметрах "Image width" и "Image height" пропишите 900. В общем сделайте все как показано вот тут:



А теперь краткий гид, по программе. В вкладке "Atmosphere", нажмите на "Add Cloud Layer", и выберите "Cirrus (2D)". Это позволит добавить на вашу текстуру облака. Далее можете перейти в вкладку "Lighting", и настроить параметры освещения. Для этого просто кликните на нужный вам элемент. Программа довольно таки интересна и на Ютубе, есть много уроков, если есть желание обязательно посмотрите.

Перейдем к рендерингу текстур. Для этого снова перейдите в вкладку "Renderers", выберите "Full Render", дальше нам нужно "подцепить", нужную нам камеру, для этого нажмите на этот вот значок:



Далее перейдем в "Assign Camera" и выберем "DN_1".
Все, дальше, нажимаем на кнопку "Render Image".

Внимание! Процесс рендеринга производится за счет процессора, по этому во время него желательно убрать любые лишние задачи, а если у вас слабый компьютер то это скорее даже необходимость. Так что не пугайтесь, если все отрисовывается очень медленно, просто нужно немного подождать.


После того как наша текстура была готова, нажмите на "Save" (увидите в верхнем левом углу), и сохраните полученную текстуру в формате ".bmp". Далее проделываем все это и с другими камерами, в итоге должно получиться 5 текстур, форматом 900х900.

Все Terragen нам больше не нужен можно его закрыть. Для удобства сохраните настройки, что бы не копаться в них каждый раз.

После этого открываем нашу "кастомную" текстуру, скачанную ранее. Я буду использовать графический редактор PaintNET.
Теперь нам нужно изменить размер наших текстур "скайбокса", до 1040х1040. Эту операцию нужно проделать со всеми текстурами, которые мы получили из Terragen.



Теперь берем текстуру нижнюю текстуру, с камеры "DN_1" и вставляем на нашу "кастомную" текстуру.



Делаем все максимально аккуратно, вплоть до пикселей, что бы в дальнейшем избежать стыков.
Теперь нам нужно повернуть текстуры из камер "FT_1", "LF" и "RT".

Делаем так:

FT - 180*
LF - по часовой стрелке, на 90*
RT - против часовой стрелки на 90*

И точно также, аккуратно склеиваем с другими.
В итоге должно получиться что то вроде такого. Не забываем проверять наши кубики, которые по краям. Если на границах будет свечение, то его нужно убрать.





Теперь можете сохранить текстуру в формате ".dds", используя сжатие DXT или A8R8G8B8, у каждого из них есть недостатки (DXT - хуже качество, но меньше вес самой текстуры, ARGB - максимальное качество, но размер больше). Также можете выбрать размер текстуры, а именно 1024х1024, или 2048х2048. В нашем уроке, мы будем использовать 2048.

Дальше открываем или создаем новый архив, в OpenBRF, и добавляем туда наш меш. После того как добавили, нам нужно еще импортировать текстуру и создать материал. На форуме есть уроки, по том как нужно это делать. Флаг для материала используем "9030018", для текстуры просто "1". Во вкладке "Shader", указываем "skybox_shader" (без кавычек).

Ну вот и все. Далее путем подмены текущего или добавлением нового в "module_skyboxes" (думаю в скором времени покажу как это сделать), добавляем наш новый Skybox, в игру.



В результате, получаем довольно таки качественное небо, так еще и экономим около 1200 полигонов на сцену, в сравнении с обычным встроенным мешом.

3
Собственно сам вопрос.  :)

Страницы: [1]
СиЧЪ Total War СиЧЪ Total War
Сайт "Всадники Кальрадии" не является СМИ. Администрация не несет ответственность за высказывания и публикацию каких-либо материалов, сделанные любыми пользователями форума, в том числе посредством личных и публичных сообщений. Материалы, размещенные на ресурсе третьими лицами, могут содержать информацию, не предназначенную для лиц, не достигнувших совершеннолетия. При обнаружении на ресурсе материалов, нарушающих законодательство Российской Федерации, необходимо обращаться к администрации.
Сайт работает на быстром VPS/VDS хостинге от FASTVPS


Powered by SMF 2.0 | SMF © Simple Machines LLC