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

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

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

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

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

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

UnPinned posts

скравл выковырял osganimation в сентябре прошлого года, но одну ссылку на библиотеку из cmakelists не убрал

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

Там positioncell принимает переменные?

Выжгли ли напалмом ограничения на количество ifов в скриптах?

Да кто такие тонкости знает? Проверьте.

Вроде обработка переменных у всех команд в OpenMW единообразна, переменные должны поддерживаться.

Про ограничение на if-ы в вообще не слышал, но в теории его быть и не должно, т.к. OpenMW ванильный байт-код не загружает.

Кстати, из-за этого не работают переносы строк в MessageBox'ах, которые в оригинале вообще через НЕХ-редактор проставляли, т.к TES CS скрипты с ними не компилирует.

Из-за этого квест с театром в Морнхолде до сих пор сломан в версии от 1С.

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

Ещё че хотел, говорили что в openmw в кадре сначала локальные скрипты потом глобальные исполняются, но в оригинале то наоборот.

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

но в оригинале то наоборот.

Чтобы было наоборот, нужно две строчки поменять местами в engine.cpp (на строках 119-123). Но хз, вдруг что сломается

 


С 3 августа

Андрей:

  • Редактор научился делать нормально логи и использует тот же код, что и опенмв
  • Исправлена пачка косяков, найденных Coverity
  • ForceGreeting теперь невозможно использовать на неживых объектах
  • Исправлена зависимость от регистра функции, которая использовалась для проверки имени узла на зарезервированность в оптимизаторе -- позволяет нормально отображаться некоторым перчаткам, надетым в единственном экземпляре
  • Фиксы регрессий

я:

  • Существа больше не будут от ликантропов убегать (похоже, что в оригинале так)
  • Автозавершение в консоли теперь работает с явными вызовами объектов
  • Расположение торговца, измененное в сделках, теперь опционально сохраняется и после закрытия диалога с ним
  • Нулевое максимальное/минимальное расстояние записей звуков теперь по отдельности на дефолтное заменяется, а не только когда оба равны нулю. При нулевом расстоянии уменьшение громкости звука на расстоянии не работает.
  • Специальное поведение теперь используется для любого топика, который назван, как специальный (сравнивается название с сооветствующей GMST), в том числе находящегося под сепаратором
  • Шейпы без текстур теперь всегда скрыты (раньше они отображались, используя назначенный им материал). Better flora Моранар теперь нормально будет выглядеть.
  • Когда ИИ выбирает оружие, он будет оценивать реальный шанс им попасть, а не просто навык.
  • Аналогично ИИ будет оценивать реальный урон, который зависит от атрибута силы, а не базовый
  • ИИ будет предпочитать оружие дальнего боя с бонусом в 50% к базовому рейтингу, если противник не может его достать текущим оружием. Раньше был простой бонус в 1.5, который применялся невзирая на расстояние до супостата. По-хорошему бонус должен меняться в зависимости от расстояния, но пока пофиг

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

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

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

Что вполне ожидаемо: кулачный бой в OpenMW имеет низший приоритет (0) независимо от навыка рукопашного боя и значения силы.

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

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

  • Шейпы без текстур теперь всегда скрыты (раньше они отображались, используя назначенный им материал). Better flora Моранар теперь нормально будет выглядеть.

Оставили бы лучше как есть - некоторые моды используют шейпы без текстур, ТР например.

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

Оставили бы лучше как есть - некоторые моды используют шейпы без текстур, ТР например.

А Better Flora как тогда работает?

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

А где там шейпы без текстур? Я вижу только коллизии.

В моделях, вестимо. Иначе их не требовалось бы скрывать.

Там сейчас в одном месте два разных шейпа должно быть - один с текстурой, один без.

OpenMW в этом случае может показать тот, который без текстуры, в зависимости от расстояния.

Подозреваю, что это тупо z-fighting.

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

Можешь прикрепить пример меша? В упор не могу найти такой.

Этим багом Capostrophic занимался. Сам багрепорт здесь. Объект "flora_tree_ai_05", значит, модель "flora_tree_ai_05.nif".

 

Отдельный вопрос по анимациям есть - как эти несчастные комплекты доспехов вообще работают? Там у анимаций в Text Key время неправильное выставлено.

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

Этим багом Capostrophic занимался. Сам багрепорт здесь. Объект "flora_tree_ai_05", значит, модель "flora_tree_ai_05.nif".

Посмотрел, так то ошибка в самом меше, получается?

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

Посмотрел, так то ошибка в самом меше, получается?

Ага. Там где-то два шейпа в одном и том же месте, и движок не знает, что ему выбрать.

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

Ага. Там где-то два шейпа в одном и том же месте, и движок не знает, что ему выбрать.

Ну так, значит надо сам меш пофиксить, а не сам опенмв, при этом поломав некоторые меши в других модах?

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

Ну так, значит надо сам меш пофиксить, а не сам опенмв, при этом поломав некоторые меши в других модах?

Ну так млин, никто так и не сказал, что это фича. Кроме меня самого, но нет, решили, что будем скрывать -- значит будем скрывать. Meh.

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

Ну так млин, никто так и не сказал, что это фича. Кроме меня самого, но нет, решили, что будем скрывать -- значит будем скрывать. Meh.

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

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

Запуск локальных скриптов раньше глобальных — это фича. Где бы нормальную спецификацию по таким вещам достать...

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

Вопрос есть по моделированию. Допустим, у модели есть RootCollisionNode и она анимированная (через KeyFrameController'ы). В этом случае для коллизий надо RootCollisionNode использовать, или все-таки генерировать коллизии на основе шейпов?

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

Вопрос есть по моделированию. Допустим, у модели есть RootCollisionNode и она анимированная (через KeyFrameController'ы). В этом случае для коллизий надо RootCollisionNode использовать, или все-таки генерировать коллизии на основе шейпов?

А в чем надобность то? И есть ли у тебя под боком такая модель? Я попробовал анимировать коллизию через скининг. В Морре вроде сработало, по крайней мере, когда включил отображение коллизии, она была, но вот работала ли реально не смог проверить. А вот в OpenMW не сработало. Поразбираюсь дальше. 

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

А в чем надобность то? И есть ли у тебя под боком такая модель? Я попробовал анимировать коллизию через скининг. В Морре вроде сработало, по крайней мере, когда включил отображение коллизии, она была, но вот работала ли реально не смог проверить. А вот в OpenMW не сработало. Поразбираюсь дальше. 

Я приложил модели корабля из Abot's Boats. Там в OpenMW вообще треш, угар и содомия творится.

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

Сам я только в скинниге не разбираюсь и не знаю, в каком порядке там матрицы перемножать надо.

А вот с коллизиями вообще ерунда какая-то творится (проверял на корабле из упомянутого мода, стоящего возле Сейда Нин - ab01boship21act).

Там в модели куча всего: и Bounding Box, и RootCollisionNode (в глубине иерархии), да еще и автосгенерированная коллизия (работающая криво).

Как я понял, этот корабль - активатор, и игнорирует BoundingBox.

ship.zip

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

Приветствую. А можно как-нибудь импортировать старые сейвы из оригинального морровинда в openmw? Если, да, то как?

В комплекте с OpenMW идет программа для импорта сохранений, но она не доделана, так как никому нафиг не сдалась.

Так что лучше начать новую игру.

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

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

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

С 9 августа.

 

Андрей:

  • Из-за ошибки в коде дальность тумана под водой не была ограничена 6666 единицами.
  • В виде от первого лица персонаж игрока головой не следит за другими персонажами. Это значит, что при переходе в режим от третьего лица персонаж повернет голову к ближайшему персонажу, а не изначально будет глядеть на такового. Ваниль такого не делает и это эдакий костыль, который предотвращает спонтанное движение камеры, которая, в отличие от мурокрыла, пока что закреплена на узле камеры, а не в одной точке.
  • Коренным узлом в мешах с точки зрения RootCollisionNode теперь считается первый узел, у которого в детях есть что-то, кроме другого узла. Если RootCollisionNode не подключена к такому узлу, печатается предупреждение.
  • Анимации перезагрузки только у арбалетов будут проигрываться только у верхней части тела.
  • Идл не будет начат заново, если игрок не может скастовать заклинание или выстрелить из лука. При совершении движений он пока что будет начинаться заново.
  • Оружейные анимации в виде от первого лица и у непрямоходящей живности будут проигрываться только у верхней части тела.
  • При повороте игрока будет проигрываться часть анимации поворота ("шаг"), а не маленькая её часть.
  • Логирование переделано, теперь поддерживает цвета (не на венде) и уровни отладки, и предотвращено возникновение ситуаций, когда при логировании из двух потоков логи получаются кривые. Пока мало чем используется.
  • Немедленно применяющиеся заклинания теперь на один кадр добавляются в список активных заклинаний, что позволяет некоторым модам работать правильно.
  • Непрямоходящие существа, у которых включен флаг Weapon & Shield теперь и в самом деле могут правильно пользоваться своим оружием, даже если у них нет для этого анимаций (используются стандартные анимации атаки, а если нет анимации экипировки, то экипируется немедленно) и даже если это самое оружие некуда закрепить.

elsid:

  • Добавлены юнит-тесты для физической части загрузчика nif'ов.
  • Исправлен race condition в коде ландшафта.

я:

  • Откатил правки рендеринга бестекстурных шейпов.
  • Как оказалось, Морровинд для того, чтобы определить, за что отвечает фасттревельный непись, использует не класс (что было бы логично, но это ж беседка), а тип его ячейки, то есть интерьерные NPC -- это проводники гильдии, и соответственно используется цена-константа и звуки каста телепортирующего заклинания, а экстерьерные -- это погонщики силт страйдеров и капитаны кораблей, и у них цена зависит от расстояния до цели. В опенмв же для определения цены использовался тип ячейки цели путешествия, и в итоге проводники гильдии магов, у которых направление вело в экстерьер, требовали кол-во денег, зависящее от расстояния до таковой экстерьерной ячейки, хотя scrawl, когда добавил звук каста заклинания, использовал правильную проверку. Короче, интерьерные NPC теперь строго гильдгайды, а экстерьерные строго погонщики, и цены будут соответствующие.
  • Исправлено прицеливание NPC магическими фугасами — использовалась неправильная скорость снаряда в вычислениях направления при движущейся цели и они не могли толком в игрока попасть.

Yohaulticetl:

  • Добавлена опция, которая позволяет Силе влиять на урон в безоружном бою, как в MCP. В одном её режиме оборотни учитываются, в другом нет.

Allofich (старый-старый PR):

  • Эффекты восстановления/отнятия здоровья/магии/усталости применяются до вычислений атрибутов, а не наоборот (позволяет больным крысам в одном из квестов трибунала не терять сознание)
  • Много фиксов магических эффектов восстановления и отнятия в целом (например, постоянные эффекты отнятия будут постоянно же отнимать соответствующую стату, а кроме того, отнимаемые статы можно восстанавливать положительными магическими эффектами (не только уменьшенные)).
Ссылка на комментарий
Поделиться на другие сайты

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

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

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

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

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

Войти

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

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

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