Перейти к содержанию

OpenMW или мечты иногда сбываются


MEZON

Рекомендуемые сообщения

Официальный сайт OpenMW
Страница загрузки
Ссылка на загрузку актуального билда для Win64 (обновляется ежедневно)
 
Баг-трекер

Wiki

Список задач до релиза 1.0

Репозиторий с исходным кодом на GitLab

Discord: OpenMW (в наличии русскоязычный канал)
IRC: #openmw на irc.freenode.net

Полезные ссылки:
Реестр популярных модов для OpenMW с гайдами по установке
Руководство по портированию ретекстуров в OpenMW
OpenMW на Youtube
OpenMW на GitLab
Диздоки планов развития после 1.0
 
Сторонние проекты, основанные на OpenMW:
TES3MP - реализация мультиплеера для OpenMW.

Тема OpenMW на 4PDA - здесь можно найти сборки OpenMW для Android 5+ и гайды по решению проблем.

OpenMW для VR - основан на OpenXR, готовые сборки (устаревшие) есть только для Windows.

Порт на Switch - к сожалению, в настоящее время им никто не занимается.

Что такое OpenMW?

 

OpenMW - это попытка воссоздать игровой движок для популярной RPG TES3 Morrowind, полноценную реализацию всех особенностей игры с открытым исходным кодом. Для того, чтобы вы имели более полное представление о проекте, вот ключевые особенности OpenMW:

  • Кроссплатформенность - запуск на Windows (7 или новее), Linux, MacOS X, Android (платформы x86 не поддерживаются).
  • Виртуальная файловая система, позволяющая устанавливать моды в отдельные директории, а не засорять Data Files.
  • Поддержка сжатых BSA-архивов для экономии места на диске.
  • Исправление ошибок системного проектирования: "грязные" GMST записи в плагинах, проблема "удвоения" в сейвах, лимит на 255 плагинов и т.д.
  • Улучшенный поиск пути - с помощью статического или динамического (на выбор) построения навигационной сетки на основе геометрии локаций (вместо использования вручную расставленных дизайнерами локаций маркеров).
  • Улучшение интерфейса (поддержка TrueType-шрифтов, масштабирования интерфейса и миникарты, поддержка текстур высокого разрешения для элементов интерфейса, редактирования разметки интерфейса с помощью XML-файлов, клавиатурной навигации, поворота камеры с помощью гироскопов и т.д.).
  • Улучшение графики (поддержка шейдеров постобработки, динамические тени от объектов, Distant Land (хоть и без генератора LOD-ов), анимированная трава, шейдер воды с поддержкой отражений в реальном времени, улучшенная система освещения без лимита в 8 источников света на объект, улучшенная система тумана и многое другое).
  • Улучшенная поддержка анимаций (возможность использовать отдельные файлы для отдельных групп анимаций, возможность добавлять кастомные кости в скелеты, возможность задать новые анимации для топоров, булав и кинжалов, поддержка анимаций открытия-закрытия контейнеров).
  • Начальная поддержка Lua-скриптов для расширения возможностей плагиностроения.
  • Поддержка ICU для локализации Lua-скриптов, шейдеров постобработки и элементов интерфейса.
  • Использование дополнительных ядер процессора для фоновых задач (например, для предварительной загрузки локаций для бесшовного перемещения по игровому миру или для обработки коллизий объектов).
  • Отсутствие лимита 4Гб на адресуемую процессом игры память из-за поддержки 64-битных архитектур.
  • Намного меньшее количество вылетов в сравнении с оригинальным движком.
  • Возможность модификации движка под свои нужды (например, довольно популярен TES3MP - форк OpenMW с поддержкой мультиплеера).

OpenMW выпущен под лицензией GPLv3, весь исходный код написан с нуля.

Нужен ли оригинальный Morrowind для OpenMW?

И да, и нет.

ДА. Прежде чем использовать OpenMW, вы должны легально приобрести и установить Morrowind на ваш компьютер. OpenMW воcпроизводит только техническую сторону игры, и не содержит в себе каких-то материалов, защищенных авторским правом. Используются только данные уже установленной игры, либо с установочных файлов с диска или цифровой копии игры.

НЕТ. OpenMW - самостоятельный игровой движок. Он может быть базой для тотальных конверсий, не использующих файлы Morrowind. В качестве примеров можно привести Robowind Construct и StarWind.

Каково текущее состояние проекта?

Статус

OpenMW уже находится в состоянии "бета": основные функции реализованы, идет работа по оптимизации и паритету с MGE и MWSE. Кроме этого есть ряд проблем, в основном с физикой и поддержкой модов, использующих баги и недокументированные возможности оригинального движка.
OpenMW играбелен (можно нормально пройти сюжет игры и аддонов, ветки гильдий и т.д.), хотя и местами уступает MGE в качестве графики, но выигрывает по стабильности, а на многих машинах и по производительности и скорости загрузки локаций.

Какие технологии вы используете?

OpenMW построен с использованием различных библиотек и инструментов с открытым исходным кодом:

  • Языки программирования: C++ (стандарт C++17 с частичной поддержкой C++20), GLSL, Lua
  • Графика: OpenSceneGraph
  • Физика: Bullet
  • Звук: OpenAL
  • Ввод-вывод: SDL2
  • Интерфейс: MyGUI
  • Поиск пути для ИИ: Recast & Detour

 
Я не программист, как я могу помочь проекту?

 

1. Можно просто играть и отсылать багрепорты

2. Можно тестировать разрабатываемый код, до того, как он попадёт в основную ветку. Там же можно вести обсуждение и предлагать изменения.

3. Можно тестировать моды. Основная цель - выявить проблемы с совместимостью.

4. Можно исследовать механики оригинального движка, особенно актуально в области тонкостей работы скриптов.

5. Можно обновлять Wiki.

6. PR тоже не помешает, особенно если он позволит привлечь тестировщиков и плагиностроителей.

7. Можно донатить разработчикам на Patreon'е:

  • psi29 — проджект лид, поможете закрыть траты на хостинг
  • Capostrophic — тысяча и один фикс + вагон фич
  • AnyOldName3 — тени в OpenMW
  • David Cernat — работа над TES3MP
Изменено пользователем akortunov
Ссылка на комментарий
Поделиться на другие сайты

  • 9 месяцев спустя...
  • Ответов 3.1 тыс
  • Создана
  • Последний ответ

Топ авторов темы

Топ авторов темы

Изображения в теме

UnPinned posts

Про первый, от которого сами разработчики MWSE отказались, или про второй, который добавляет кучу низкоуровневого функционала и потому не совместим с OpenMW, т.к. на низком уровне это совершенно другая программа

Имелось ввиду про второй. Так, ну тут всё примерно понятно. А как же быть с функционалом, который несёт в себе MWSE. Тобишь его вообще никак не реализовать?

 

 

И что значит "подстраиваться под каждый мод"?

Здесь я неверно выразился. Имелось ввиду, что с каждым запросом от разработчиков будет добавлятся новый функционал? 

Ссылка на комментарий
Поделиться на другие сайты

А как же быть с функционалом, который несёт в себе MWSE. Тобишь его вообще никак не реализовать?

А здесь уже про первый MWSE? Никак. Изобретение велосипеда в виде расширения самопального морровиндовского скриптового языка было признано нецелесообразным (в т.ч. самими разработчиками MWSE, которые в итоге переехали на Lua).

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

Ссылка на комментарий
Поделиться на другие сайты

Нужны тестировщики для переработанной логики обработки оружия.

Что там сделано:

1. Львиная доля логики обработки разных типов оружия вынесена из кучи мест в одну таблицу. Список полей:

 

а) ID типа оружия - целое число, на которое ссылаются собственно записи оружия;
б) Указание, какие группы анимации использовать для анимации движения с оружием данного типа в руке
в) Указание, какие группы анимации использовать для анимации боя с оружием данного типа в руке
г) ID звука - указание, какие звуки использовать для экипировки или зачехления оружия данного типа
д) Название кости, к которой должно крепиться оружие данного типа в руке
е) Название кости, к которой должно крепиться зачехленное оружие данного типа
ж) Навык, используемый и тренируемый оружием данного типа
з) Класс оружия - ближний бой, метательное, амуниция, дальнобойное с амуницией (луки, арбалеты)
и) Ссылка на тип оружия, используемый в качестве амуниции для оружия данного типа
к) Флаги - пока можно задать, является ли оружие данного типа одноручным или двуручным и надо ли вращать его в полете при метании

 

2. Можно добавлять новые кости в скелеты, причем не через зашитый в код xbase_anim_sh.nif один для всех рас, а через директорию с анимациями отдельно для зверорас, для анимаций от первого лица и т.д.

 

Поскольку кода затрагивается много, обязательно что-нибудь поломалось, соответственно, нужно нормальное тестирование. Обращать внимание на баги, связанные с оружием - не работают анимации, неверно формируется всплывающая подсказка, ИИ в бою тупит тупит и т.д.

 

Если все будет нормально (ну и если разрешат), то потом можно будет таблицу с настройками типов оружия вынести из кода в конфиг или в ESP-файл.

Соответственно, в этом случае существующие типы оружия будут настраиваемыми плюс можно будет добавить новые.

 

Ссылка на архив со сборкой: https://ci.appveyor.com/api/buildjobs/jtj6i7kbynaewh74/artifacts/OpenMW_MSVC2015_x64_2134_82f36fe8df84e3b69711e8cae8d9f01706c79d82.zip

Патч для Weapon Sheathing: https://github.com/OpenMW/openmw/files/2775564/Sheath.zip

Арбалеты здесь хранятся на спине персонажа, так что на их положение пока можно не обращать внимание, если что.

 

 

 

Также если кому интересно, на основе этой фичи есть прототип мода для переноса лука в левую руку:

51427649-d41ae700-1c13-11e9-84fd-3725429

51427650-d67d4100-1c13-11e9-9837-ebf74da

 

Ссылка на архив со сборкой: https://yadi.sk/d/Of_qzgu6A26CGg

Ссылка на архив с самим модом: https://github.com/OpenMW/openmw/files/2775575/Left.zip

Колчаны здесь тоже перенесены на правую сторону, т.к. анимации зеркальные.

Здесь кроме тестирования было бы неплохо поточнее колчаны выровнять и помочь тов. CemKey с анимациями.

 

 

 

Ссылка на комментарий
Поделиться на другие сайты

Также если кому интересно, на основе этой фичи есть прототип мода для переноса лука в левую руку:

 

 

51427649-d41ae700-1c13-11e9-84fd-3725429

51427650-d67d4100-1c13-11e9-9837-ebf74da

 

 

 

Колчаны здесь тоже перенесены на правую сторону, т.к. анимации зеркальные.

А вот это годнотища. Еще бы стрелы пофиксили как раньше вам писали, так вообще великолепно было бы.

Ссылка на комментарий
Поделиться на другие сайты

А вот это годнотища. Еще бы стрелы пофиксили как раньше вам писали, так вообще великолепно было бы.

А что не так со стрелами? Здесь про сопротивление обычному оружию, что ли? Так его не трогали. Сейчас пока как раньше - материал проверяется у снаряда, а не у самого оружия.

Было обсуждение на форуме OpenMW, оставлять ли как было, или сделать как в Морровинде (проверяется как материал лука, так и материал стрелы). Никто не откликнулся, так что пока оставили как есть, pull request висит.

Изменено пользователем akortunov
Ссылка на комментарий
Поделиться на другие сайты

Так его не трогали. Сейчас пока как раньше - материал проверяется у снаряда, а не у самого оружия.

Если это в таком виде:

простой лук - серебряные стрелы -> сопротивление обычному оружию игнорируется

даэдрический лук - простые стрелы -> сопротивление обычному оружию не игнорируется

то пожалуйста не трогайте. 

Это вполне нормальное и логичное поведение.

Ссылка на комментарий
Поделиться на другие сайты

Я в гитхабе не разбираюсь, но разве Капострофик это не переделал?

Переделал, но эти изменения еще не приняли.

Ссылка на комментарий
Поделиться на другие сайты

А что там с recastnavigation?

В основной ветке. Есть косяки, всплывшие в процессе тестирования, но они понемногу чинятся, т.к. elsid активен.

Ссылка на комментарий
Поделиться на другие сайты

С 14 января.

fredz10:

  • crashcatcher вновь работает на FreeBSD.

zear:

  • Сравнения названий папок и файлов в Wizard теперь регистро-независимые, что позволяет установить игру с дисков на Linux и может обойти какие-то другие проблемы.

Александр Колодеев:

  • Контент-селектор перестанет пытаться очищать файлы, если никаких файлов для очищения нет, что позволяет избежать ошибки assert при создании нового плагина в редакторе, собранном в режиме Debug.

Stomy:

  • Попытки гарантировать уникальность номера вновь созданного/клонированного/перемещенного экземпляра объекта в большинстве ситуаций в редакторе.

Azdul:

  • Портирована поддержка BSA-архивов Oblivion, Fallout 3, Fallout New Vegas и Skyrim из ветки cc9cii.
  • GoogleTest/GoogleMock можно собирать на Windows прямо при сборке движка и покрывать код юнит-тестами.

я:

  • Коллизии актёра будут обновляться в кадр телепортации (через PositionCell), даже если телепортация произошла в ту же ячейку. Позволяет правильно работать скрипту трубы из Sotha Sil Expanded (если в нём поправлено использование else if вместо elseif, для чего висят отдельные фиксы): он прекратит отключать управление персонажем непосредственно после телепортации из-за запоздалого обновления коллизий.
  • Перед декларацией Begin в скрипте может быть произвольное количество специальных символов без прекращения компиляции, они просто игнорируются. Позволяет собираться двум скриптам рычагов какой-то головоломки из Sotha Sil Expanded.
  • Поправлена вышеуказанная поддержка на не-Windows-системах, а кроме того, генерация хэша, совместимого с форматом, заменена на собственноручно написанную функцию вместо кода из BSAOpt (короче в два раза, быстрее на 25%, функционально разницы никакой).

Андрей:

  • Исправлено несколько предупреждений сборки.
  • Меши с частицами с выключенным флагом Has Sizes могут отображаться спокойно.

elsid:

  • Предотвращен потенциальный фриз, если рендеринг навмешей отключен.
Ссылка на комментарий
Поделиться на другие сайты

Портирована поддержка BSA-архивов Oblivion, Fallout 3, Fallout New Vegas и Skyrim из ветки cc9cii.

Значит ли это, что когда нибудь мы увидим tes4 и fo3/nv на движке OpenMW?))

 

Попытки гарантировать уникальность номера вновь созданного/клонированного/перемещенного экземпляра объекта в большинстве ситуаций в редакторе.

Если я правильно понимаю, речь идёт о FormID?

 

Поправлена вышеуказанная поддержка на не-Windows-системах, а кроме того, генерация хэша, совместимого с форматом, заменена на собственноручно написанную функцию вместо кода из BSAOpt (короче в два раза, быстрее на 25%, функционально разницы никакой).

Имеется ввиду скорость работы движка с bsa-архивами?

 

От себя ещё несколько вопросов)

- На форуме OSG опубликовали инфу об OSG v.3.6.4. Судя по ченджлогу, там дофигища различных исправлений. Будет ли обнова движка в OpenMW? По крайне мере я на это очень надеюсь. 

- Помню OpenMW играл ещё в 0.42. Но вот только сейчас возник сей вопрос. Насколько мне известно, на ванильном двигле морки, облы и фолла отсутствует поддержка в кириллице буквы "Ё". В OpenMW она присутствует или тут тоже не ушли от канонов?  :-D  

 

зы: кстати, по поводу товарища bzzt (он же Wang Rui), узнал, что это довольно опытный кодер в среде OSG, принимал участие в разработке, ещё и является соавтором пару книженций по OSG. Кажется понятно, откуда столько высокомерия у этого человека. Очень надеюсь, что команда с ним сработается и сотрудничество (а не соперничество) будет продуктивным. 

Ссылка на комментарий
Поделиться на другие сайты

Значит ли это, что когда нибудь мы увидим tes4 и fo3/nv на движке OpenMW?))

http://www.fullrest.ru/forum/topic/40699-openmw-dlja-oblivion/

http://www.fullrest.ru/forum/topic/40705-openmw-dlja-skyrim/

Ссылка на комментарий
Поделиться на другие сайты

1. Ну старался же для чего-то человек.

2. Нет, имеется в виду refnum. У каждого экземпляра объекта в ячейке есть свой собственный номер, он раньше мог в редакторе совпадать по какой-то причине и не мог заменить предыдущий экземпляр того же объекта.

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

4. Не надо так пугать, он же ещё не вышел полностью. Официальные сборки OpenMW основаны на модифицированном OSG 3.4.1, поскольку в нём есть патчи для производительности повыше, пока обновлений в планах нет. Но вообще OpenMW можно собрать под любым OSG, начиная с 3.3.8. Стабильность работы под нестабильными сборками OSG не гарантируется. С стабильными 3.6.1 и 3.6.2 все было в порядке, в 3.6.3 кое-что на стороне OSG поломали, и вот в 3.6.4 починили, можно им упарываться.

5. Вообще ё вводить можно, только ни в одном из оригинальных шрифтов для буквы кириллических глифов нет вообще, поэтому используется латинская е с диарезисом для строчной ё и заглавная Е. Можно поставить TrueType-шрифт типа Pelagiad на замену битмаповому, в шрифтах с поддержкой Юникода костыльной замены не происходит, зато полноценная кириллическая ё наверняка есть.

6. Стиль речи Wang Rui в мейлинг-листах OSG и wang ryu на гитлабе и даже wang ryu в документации, которую он писал, довольно разный, как ни странно (хотя в последнем случае узнать bzzt можно по опечаткам). Ещё bzzt писал, что он "тоже неопытный, но по крайней мере свое барахло тщательно тестирует, не то что некоторые", что тоже довольно странно.

Изменено пользователем Capostrophic
Ссылка на комментарий
Поделиться на другие сайты

Спасибо за ответы :)

 

1. Верим, надеемся, ждём  :dance3:

3. А в теории, для чего вообще эти вычисления хэша?

4. Тобишь ещё пока не известно даже, когда будет полноценный переход (со всеми патчами) на последнюю версию OSG?) Жаль, но надеюсь, что когда нибудь это произойдёт ;)

6. Фигасе, тобишь это вообще два разных человека?  =-O

 

И ещё вопрос. В ванильном двигле GB есть ограничения по bsa. Есть ли такие же ограничения в OpenMW?

Изменено пользователем Infest
Ссылка на комментарий
Поделиться на другие сайты

Хэши нужны, чтобы быстро найти определенный файл. Без хэшей сложно определить его истинное местоположение внутри архива.

На новую версию OSG невозможно совершить "переход", использование конкретной версии OSG зависит не от кого-то, кто как-то связан с OpenMW, а от того, кто делает конкретную сборку.

Нет, похоже. Звуки, сплэши и видео можно запихнуть в архивы и ничего страшного не случится. Заменять файлы в других BSA архивы могут.

Ссылка на комментарий
Поделиться на другие сайты

Нет, похоже. Звуки, сплэши и видео можно запихнуть в архивы и ничего страшного не случится. Заменять файлы в других BSA архивы могут.

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

Ссылка на комментарий
Поделиться на другие сайты

Если на последней "ночнушке" несколько минут полетать над Вварденфеллом с tcl и speed 5000, то OpenMW скушает всю доступную память и начнёт безбожно тормозить...

Ссылка на комментарий
Поделиться на другие сайты

Если бы такая проблема существовала, она бы затрагивала и морровиндовские архивы.

 

С 23 января:

Андрей:

  • NiSwitchNode теперь поддерживается и работает, как в оригинале (используется только один узел из подконтрольных). С помощью них в будущем могут быть реализованы всякие классные штуки — светящиеся окна как в Glow in the Dahrk, гербализм как в Скайриме.
  • Оптимизировано обновление HUD; время обновления сокращено на 0.1 мс за кадр за счёт прекращения обновления названий окон не тогда, когда они собственно меняются, а постоянно, и выполнения другой ненужной работы.
  • NiUVController применяется только к заданному UV-набору, а не ко всем сразу.
  • Оптимизатор больше не пытается выкинуть пустые узлы LOD в моделях.

fredz10:

  • iLevelUpMinorMultAttribute и iLevelUpMajorMultAttribute по ошибке выполняли работу друг друга, что было исправлено (по умолчанию они 1, так что в игре без модов разницы никакой); в окружающем коде сокращены циклы.

я:

  • Поглощение заклинаний вновь позволяет поглощенным эффектам не применяться — я это поломал, когда правил сопротивление для 0.44.0. В отличие от поведения 0.43.0, применяться не будут и положительные эффекты.

Ожидает своей очереди:

Андрей:

  • При прохождении времени, кроме прохождения его во время отдыха, регенерация у актёров происходит только один раз в зависимости от количества прошедшего времени, дабы при отсиживании игроком месячных сроков в тюрьме она не заняла космическое количество времени из-за своей почасовой природы
  • Правки документации по TrueType-шрифтам

я:

  • Существа попытаются использовать звуки первого существа, кроме них, с той же моделью, если своих у них нет по какой-то причине, а дефолтные звуки использовать рано, как то могут делать активаторы.
  • SetJournalIndex не влияет на статус квестов
  • Journal влияет на статус квестов, даже если новый индекс ниже предыдущего
Если на последней "ночнушке" несколько минут полетать над Вварденфеллом с tcl и speed 5000, то OpenMW скушает всю доступную память и начнёт безбожно тормозить...

Ну навмеши же, ну.

Ссылка на комментарий
Поделиться на другие сайты

Ну навмеши же, ну.

Учитывая, что elsid утверждает, что кэш навмешей занимает максимум 256 МБ памяти, такого по идее быть не должно. Хотя тут еще вносит свою лепту то, что использованные тайлсеты не выгружаются.

Ссылка на комментарий
Поделиться на другие сайты

Ну навмеши же, ну.

Ой, стёр случайно свое сообщение, вместо того чтоб его отредактировать... =__=

 

Восстановил. S-P.

 

На гитлабе elsid пишет, что всё в порядке, could't reproduce и всё такое. И багрепорт прикрыли.

Изменено пользователем Scarab-Phoenix
Ссылка на комментарий
Поделиться на другие сайты

На гитлабе elsid пишет, что всё в порядке, could't reproduce и всё такое. И багрепорт прикрыли.

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

Ссылка на комментарий
Поделиться на другие сайты

Хотя тут еще вносит свою лепту то, что использованные тайлсеты не выгружаются.

И они могут откусить всю свободную память?

Ссылка на комментарий
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...