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

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
Ссылка на комментарий
Поделиться на другие сайты

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

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

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

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

UnPinned posts
Непонятные правки MyGUI. NULL же вроде из C++11?

Наоборот. nullptr из c++11, NULL - старый вариант.

 

Хотел ещё спросить насчёт реализации травы в ОпенМВ. Есть какие-нибудь подвижки в этом направлении? И планируется ли завезти PBR?

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

Трава и PBR, очевидно, не в целях на 1.0, поэтому из "членов команды", то есть тех, кто занимаются опенмв на более-менее постоянной основе, никто не тратит на это время и силы. А активисты типа Метелины и allcreater что-то "сдулись", и больше от них ничего слышно не было.

 

Кортунов неудержим:

  • Ещё фиксы интерфейса: много правок разметки чаргеновых меню
  • Время задержки дыхания теперь не захардкожено
  • Визуальный эффект левитации теперь пропадает при отключении левитации скриптом
  • Вместо Level в меню загрузки сохранения теперь используется соответствующая GMST, так что у Акеллы будет "уровень".
  • Исправлен выбор бодипартов: от первого лица теперь будет использоваться не первый попавшийся бодипарт, а наиболее подходящий по полу и его типу. Теперь не будет мужских предплечий перед женскими кистями и тонких ручек перед мужскими кистями — эта проблема заметна при использовании BB и RB.
  • Статус прикреплённых окон теперь сохраняется в ini.

Allofich:

  • Опенмв теперь не будет вопить голактеко опасносте немедленно прекращать выполнение скрипта при обнаружении знаков > или < уже после знака = (=>, =<), а будет считать это написание за знак равенства, как оригинальный движок. При этом будет лёгкое ругательство в обработчик ошибок.
  • У озвученных реплик будут выполняться скрипты.
  • Много исправлений предупреждений cppcheck'а — совсем незначительный прирост производительности и уменьшение потребления памяти.
  • Анимированные скриптом объекты теперь не будут пытаться быть анимированными, даже когда они отключены.

rhtucker дописал документацию по settings.cfg, добавив описания для всех отсутствовавших там новых настроек.

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

Даблпост для привлечения внимания: Кортунов сделал так, чтобы при зачаровании вещь не чинилась полностью, а сохраняла прошлое значение характеристики поломанности, но это отхождение от оригинального поведения Морровинда, возникающего из-за того, что при зачаровании вещь заменяется клоном с исходной нулевой поломанностью и новым зачарованием. Нужен народный консенсус по поводу такого решения перед тем, как его отвергнут или введут в силу.
Ссылка на комментарий
Поделиться на другие сайты

Даблпост для привлечения внимания: Кортунов сделал так, чтобы при зачаровании вещь не чинилась полностью, а сохраняла прошлое значение характеристики поломанности, но это отхождение от оригинального поведения Морровинда, возникающего из-за того, что при зачаровании вещь заменяется клоном с исходной нулевой поломанностью и новым зачарованием. Нужен народный консенсус по поводу такого решения перед тем, как его отвергнут или введут в силу.

Конечно же надо ввести. Зачем копировать ванильные недоработки и баги?

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

Даблпост для привлечения внимания: Кортунов сделал так, чтобы при зачаровании вещь не чинилась полностью, а сохраняла прошлое значение характеристики поломанности.

Это разумно.

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

Даблпост для привлечения внимания: Кортунов сделал так, чтобы при зачаровании вещь не чинилась полностью, а сохраняла прошлое значение характеристики поломанности, но это отхождение от оригинального поведения Морровинда, возникающего из-за того, что при зачаровании вещь заменяется клоном с исходной нулевой поломанностью и новым зачарованием. Нужен народный консенсус по поводу такого решения перед тем, как его отвергнут или введут в силу.

Отличный фикс, надо оставить.
Ссылка на комментарий
Поделиться на другие сайты

Фикс отличный, +.

Но мне тогда не понятна цель опенМВ: делают они кроссплатформенную ваниль в чистом виде или все-таки правят очевидные ее баги?

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

Но мне тогда не понятна цель опенМВ: делают они кроссплатформенную ваниль в чистом виде или все-таки правят очевидные ее баги?

Первый пост:

Главный разработчик Marc Zinnschlag (Zini) о OpenMW 1.0:

В некоторых случаях мы можем отклонятся от оригинала, даже до релиза 1.0.

Во-первых, я не считаю нужным копировать любые нефункциональные особенности. Бессмыслено имитировать сбои и различные ошибки. Равно как и лимиты игры (к примеру, глубину вложенности скриптов).

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

Т.е. копировать игровые баги и не планировалось. Если что-то можно поправить ещё на этапе подготовки к релизу 1.0, то что бы и не сделать? А чудесный ремонт вещи при её зачаровании – самый что ни на есть баг и недоделка.

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

Т.е. копировать игровые баги и не планировалось

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

интересно. При этом в некоторых игровых формулах видно точное копирование оригинала, наследуя явные баги и недоработки

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

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

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

То, что моментально вспомнилось.

Blocking with a shield

 

if player is not moving forward at any speed: playerTerm = playerTerm * 1.25 (note this is not fBlockStillBonus)

а должно быть fBlockStillBonus

On jumping

 

encumbranceTerm = fJumpEncumbranceBase + fJumpEncumbranceMultiplier * (1 - normalizedEncumbrance)

а нужно fJumpEncumbranceMultiplier * normalizedEncumbrance

 

Hit Chance

 

 

Comments

The unaware check is only calculated correctly for projectile attacks. Due to either a design decision or bug, it doesn't apply to melee attacks, but it seems likely to be an design bug. It is recommended to implement it for all cases.

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

прыжки - да, остальное - не смотрел последние версии

 

Можно получить ссылку на используемую вами формулу расчета высоты прыжка? Возможно, Morrowind делит высоту на encumbranceTerm, а не умножает, как OpenMW.

 

OpenMW считает высоту прыжка как:

 

encumbranceTerm = fJumpEncumbranceBase + fJumpEncumbranceMultiplier * (1 - currentWeight/maxWeight);
height = height * encumbranceTerm;

 

Нагрузка уменьшает высоту прыжка (как и в оригинальной игре).

 

Если оставить только currentWeight/maxWeight, то нагрузка будет увеличивать высоту прыжка.

 

 

 

По поводу блока: OpenMW точно применяет fBlockStillBonus, но я не уверен, применяет ли это значение Morrowind.

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

Можно получить ссылку на используемую вами формулу расчета высоты прыжка?

речь о вычислении потраченной на прыжок усталости:
const float fatigueDecrease = fatigueJumpBase + (1 - normalizedEncumbrance) * fatigueJumpMult;

https://github.com/OpenMW/openmw/blob/338592b99b7a9b6f38ec90829bf5d3df95a31d4a/apps/openmw/mwmechanics/character.cpp#L1750

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

 

На счет блока, да, нашел)

if (blocker.getClass().getMovementSettings(blocker).mPosition[1] <= 0)
	    blockerTerm *= gmst.find("fBlockStillBonus")->getFloat();

Значит просто некорректная инфа в вики осталась=)

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

Значит просто некорректная инфа в вики осталась=)

 

Если вы про этот раздел: https://wiki.openmw....Research:Combat то там описаны формулы из ванильной игры. Там fBlockStillBonus действительно не используется.

Другое дело, почему его тогда использует OpenMW.

 

 

По поводу усталости - интересная информация, я проверю. Благодарю за подсказку.

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

Если вы про этот раздел: https://wiki.openmw....Research:Combat то там описаны формулы из ванильной игры

Интересно)

Если теперь выясняется, что (опенМВ - ваниль) это могут быть разные формулы, логично было бы указывать существующие различия)

Скоро опенМВ затмит ваниль и ванильные формулы станут никому не нужны) В это же время лазить по гитхабу и читать код так и останется сложным для многих, а страничка вики доступна всем)

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

Фикс отличный, +.

Но мне тогда не понятна цель опенМВ: делают они кроссплатформенную ваниль в чистом виде или все-таки правят очевидные ее баги?

 

Исправление ванильных багов - понятие довольно противоречивое. После исправления может выясниться, что:

 

1) Исправление бага ломает что-то в чистой игре из-за багов в ресурсах (как в случае с мертвым Дагот Уром).

2) Исправление бага ломает некоторые моды, которые на этот баг опирались.

3) Есть игроки, которые воспринимают баги и эксплоиты как неотъемлемую часть геймплея и просят вернуть как было.

 

Поэтому иногда приходится делать отдельную настройку под фикс. Аналогичным образом действует MCP - там под каждый фикс отдельный чекбокс.

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

 

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

 

Под мой фикс с зачарованием скорее всего тоже будет отдельная настройка.

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

Только такой подход ведет к огромному конфигу с кучей настроек

в котором, скорее всего, никто и разбираться не станет=)

ну что ж, выбрано так выбрано, хотя и на мой вкус тоже - это слишком

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

Интересно)

Если теперь выясняется, что (опенМВ - ваниль) это могут быть разные формулы, логично было бы указывать существующие различия)

Это неминуемо будут разные формулы, рано или поздно.

 

Я так понимаю, что этот раздел в вики никогда и не позиционировался как про OpenMW.

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

Небольшой обзор "неванильных" изменений, которые могут со временем могут попасть в OpenMW;

 

 

1. Доработанные виджеты ремонта и перезарядки:

 

http://i.imgur.com/1pPBNeW.png http://i.imgur.com/lZBrzs1.png http://i.imgur.com/4Tng7cP.png

 

 

Позволяют переключение между инструментами/камнями душ без перезапуска диалога.

 

http://i.imgur.com/YX8lTFS.png http://i.imgur.com/ujoUWlu.png

 

 

 

Правда, поскольку камни с душами не формируют пачки, каждый камень душ пока надо выбирать отдельно - но это все равно быстрее, чем перетаскивать каждый камень на куклу персонажа.

 

 

 

 

2. Отображение шанса на успех при самостоятельном зачаровании:

 

http://i.imgur.com/gUzGrRu.png

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

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

 

Сравнил поведение в оригинальной игре и OpenMW. Действительно, в Morrowind зависимость прямая, а в OpenMW - обратная.

Я создал багрепорт, и если его не отклонят, то починю формулу.

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

Небольшой обзор "неванильных" изменений, которые могут со временем могут попасть в OpenMW;
Хорошо, если все это войдет в релиз.

 

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

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

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

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

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

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

Войти

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

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

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