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

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


MEZON

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

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

Wiki

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

Репозиторий с исходным кодом на GitHub
IRC: #openmw на irc.freenode.net
Полезные ссылки:
Wiki-статья о совместимости модов для Morrowind'а с OpenMW
Руководство по портированию ретекстуров в OpenMW
OpenMW на Youtube
OpenMW на ModDB
OpenMW на GitLab
Диздоки планов развития после 1.0
 
Сторонние проекты, основанные на OpenMW:
TES3MP - реализация мультиплеера для OpenMW.
Тема OpenMW на 4PDA - здесь можно найти сборки OpenMW для Android 5+ и гайды по решению проблем.

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

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

Что такое OpenMW?

 


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

  • полноиграбельная реализация Morrowind.
  • кроссплатформенность, запуск на Windows, Linux, MacOS X.
  • поддержка уже существующего контента, включая Tribunal и Bloodmoon и львиную долю созданных пользователями плагинов.
  • значительная модифицируемость: изменение игровой механики, создание новых эффектов заклинаний, доработка ИИ и т.д.
  • исправление ошибок системного проектирования: "грязные" GMST записи в плагинах, проблема "удвоения" в сейвах.
  • улучшение интерфейса и игрового дневника.
  • улучшение игровой механики, физики, боевой системы и ИИ.
  • поддержка мультиплеера.
  • улучшение графики путем поддержки функциональности современного аппаратного обеспечения.

Это очень амбициозный список, и ещё многое предстоит сделать, чтобы эти задачи стали реальностью.
OpenMW выпущен под лицензией GPLv3, весь исходный код написан с нуля.

В чём разница между "старым" и "новым" OpenMW?

Старый OpenMW был написан на языке D с небольшими кусками кода на C++. Позже главный разработчик решил полностью перейти на C++, потому весь код проекта был заново переписан.

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

И да, и нет.

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

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

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

Статус

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

Поддерживаемые платформы

Проект переписан на чистом C++ (с поддержкой стандарта С++17), потому должен работать на большинстве платформ, поддерживаемых OpenSceneGraph и остальными инструментами, в том числе на Windows 7 (или новее), Linux, MacOS X, FreeBSD и Android. Windows XP и более старые версии не поддерживаются, т.к. их не поддерживают используемые библиотеки и компиляторы.
Если вы хотите помочь портировать OpenMW на другие платформы, мы будет рады видеть вас на нашем форуме.

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

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

  • Языки программирования: C++, GLSL
  • Графика: OpenSceneGraph
  • Физика: Bullet
  • Звук: OpenAL
  • Ввод-вывод: SDL2
  • Скриптовый язык: Самостоятельная реализация скриптов Morrowind
  • Интерфейс: MyGUI
  • Поиск пути для ИИ: Recast & Detour

Код загрузки ESP/ESM и BSA был написан с нуля, но с помощью документации, созданной сообществом. Кроме того, и код загрузки NIF был написан с помощью имеющейся в сети информации.
Особая благодарность NIFLA/NifTools!

Главный разработчик Marc Zinnschlag (Zini) о OpenMW 1.0:
Целью OpenMW 1.0 является полная замена Morrowind.exe. Не больше, не меньше. Это также означает, что практически все улучшения оригинальной игры на данный момент исключены. Я настаивал на этом подходе, так как это самый безопасный способ завершить версию 1.0 наиболее быстро.
Релиз 1.0 будет очень важным этапом, ведь OpenMW наконец станет полноценной игрой. Мы надеемся, что OpenMW 1.0 привлечет много внимания, новых разработчиков и активных тестеров.

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

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

Во-вторых, мы можем изменять всё, что не является частью внутриигрового опыта. Например, опции командной строки и файлы конфигурации OpenMW выглядят совершенно иначе, чем в Морровинде. Сюда же входит и лаунчер.

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

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

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

 

 

1. Можно просто играть и отсылать багрепорты
2. Можно тестировать разрабатываемый код, до того, как он попадёт в основную ветку. Там же можно вести обсуждение и предлагать изменения.
3. Можно тестировать моды. Основная цель - выявить проблемы с совместимостью.
4. Можно исследовать механики оригинального движка, особенно актуально в области тонкостей работы скриптов.
5. Можно обновлять Wiki.

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

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

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

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

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

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

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

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 пользователей онлайн

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