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

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

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

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

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

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

UnPinned posts

C 30 ноября.

Григорий Латышев:

  • Немного исправлено поведение показа шанса каста заклинания. Суть в том, что теперь, если игроку просто маны не хватит на каст заклинания, показываться будет 0.

Андрей Кортунов:

  • Боевая музыка начнёт проигрываться сразу во время диалога, если был начат бой, а не после закрытия интерфейса.
  • Исправлен вылет при быстрой загрузке в меню подбора предметов. Этого вылета не было в 0.42.0, но он попал в 0.43.0, так как уж очень спешили с уже и так затянувшимся (опять) релизом.
  • В кириллическом дневнике не будет твёрдого и мягкого знака как первой возможной (очевидно, нет) буквы топиков.
  • Технические топики (такие как Greeting <число>) перестанут появляться в том же меню.

Ace:

  • SDL в Windows-сборках обновлён с 2.0.4 до 2.0.7

Конца-краю подбору сучков и задоринок в обозримом будущем не будет.

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

Конца-краю подбору сучков и задоринок в обозримом будущем не будет.

 

 

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

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

Что нужно сделать чтобы скомпилировать Моррку на своем компе? Что делать, какое ПО там надо ставить?

 

Вообще кто нибудь хочет форкнуться с гитхаба и скомпилить свою Моррку?

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

Что нужно сделать чтобы скомпилировать Моррку на своем компе? Что делать, какое ПО там надо ставить?

 

Вообще кто нибудь хочет форкнуться с гитхаба и скомпилить свою Моррку?

 

Не совсем понял вопрос. Что такое "своя Моррка"?

К исходникам приложена инструкция по сборке: https://wiki.openmw....vironment_Setup

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

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

"Моррку" скомпилировать нельзя, во-первых, потому что не из чего, во-вторых, потому что нарушение пользовательского соглашения.

OpenMW, понятное, можно. На Windows проще всего использовать скрипты от Ace, на линуксах достаточно достать все зависимости (через PPA опенмв в том числе, самому их собирать чревато проблемами) и скормить make склонированный репозиторий.

Вообще кто нибудь хочет форкнуться с гитхаба и скомпилить свою Моррку?

Что это вообще значит? Зачем что-то форкать? Почему "свою"?

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

Ставить много, в принципе ожидаемо.

 

"Моррку" скомпилировать нельзя, во-первых, потому что не из чего, во-вторых, потому что нарушение пользовательского соглашения.

 

Какое еще соглашение, тема то OpenMW.

 

Что это вообще значит? Зачем что-то форкать? Почему "свою"?

 

Форк - обычный термин гитхаба. Означает создать новую ветку кода для реализации чего то своего. Ну представляете, существуют такие люди которые могут помочь с доработкой. Не?

 

Зачем что-то форкать? Ничего себе вопросы задаете. А зачем OpenMW на гитхаб выложили?

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

Какое еще соглашение, тема то OpenMW.

Дык. Опенмв не морровинд.

Ну представляете, существуют такие люди которые могут помочь с доработкой.

Да знаю я, что такое форк, я один из таких людей и есть. Пару фиксов делал.

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

Товарищи, нужна помощь, чтобы починить работу пары модов в OpenMW:

 

1. Может кто-нибудь объяснить, в каком порядке выполняются скрипты в Морровинде? Это надо для Animated Morrowind: https://bugs.openmw.org/issues/3823

2. Какие группы анимаций проигрываются при движении силт-страйдеров из мода Абота и почему? Фактически, это же существа с пакетом wander с дистанцией 0. Эти существа протаскиваются по локациям с помощью команды SetPos. По идее, там же должны проигрываться Idle-анимации (в данном случае - "дрыгать передними лапками"), или же я чего-то не учитываю?

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

Может кто-нибудь объяснить, в каком порядке выполняются скрипты в Морровинде?

Насколько я знаю скрипты запускаются в каждом кадре не в алфавитном порядке а в порядке их создания в редакторе (в порядке их внутренних ID). При этом вроде нет разницы глобальный\локальный скрипт.

startscript не передает управление в другой скрипт (это не вызов функции) а дает указание что скрипт должен начать исполнятся со следующего кадра.

stopscript предотвращает запуск скрипта и снимает цель на которую скрипт запущен. Важный момент, startscript не меняет цель если цель уже есть, даже если попытаться перенаправить его на другую цель. Чтобы это правильно работало, нужно перед вызовом startscript FOO вызвать stopsript FOO. stopsript очистит цель и startscript сможет принять новую цель. Я обнаружил это, когда клепал плагин про отображение урона.

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

startscript не передает управление в другой скрипт (это не вызов функции) а дает указание что скрипт должен начать исполнятся со следующего кадра.

 

Примерно так я и думал. Интересно, что вернет конструкция вида:

 

StartScript A
if ( ScriptRunning, A == 1 )
  MessageBox "Running!"
else
  Messagebox "Not running!"
endif

 

Насколько я знаю скрипты запускаются в каждом кадре не в алфавитном порядке а в порядке их создания в редакторе (в порядке их внутренних ID). При этом вроде нет разницы глобальный\локальный скрипт.

 

Вот это поворот! Может кто-нибудь подтвердить?

 

 

Как оно работает сейчас в OpenMW:

1. Выполняются все локальные скрипты, черт знает в каком порядке

2. Выполняются глобальные скрипты в алфавитном порядке.

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

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

Примерно так я и думал. Интересно, что вернет конструкция вида:

Это смотря, что на самом деле возвращает ScriptRunning.

 

Тут есть кое-какая информация: http://www.fullrest.ru/forum/topic/3058-tonkosti-skriptov/

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

Это смотря, что на самом деле возвращает ScriptRunning.

 

А что, тут варианты есть?

 

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

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

Я потестил и выяснил порядок работы скриптов. Сначала работают локальные в алфавитном порядке объектов на которых висят. Потом глобальные в порядке из запуска с помощью startscript а не в алфавитном.

 

Примерно так я и думал. Интересно, что вернет конструкция вида:

 

StartScript A
if ( ScriptRunning, A == 1 )
  MessageBox "Running!"
else
  Messagebox "Not running!"
endif

Выдает Running! в этом кадре и в следующих. Но вызова функции как таковой нет, сначала этот скрипт отработает до конца, а потом отработает A.

 

2. Выполняются глобальные скрипты в алфавитном порядке.

 

Думаю это не совсем правильно, не должно быть так. Допустим startscript вызывается из глобального скрипта, тогда если если по алфавиту запущенный скрипт идет после этого, то он отработает в этом кадре, а если нет, то он только со следующего начнет. Это заставляет скриптописателя следить за алфавитным порядком.

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

Потом глобальные в порядке из запуска с помощью startscript а не в алфавитном.

 

Скорее всего, в Морровинде тупо хранится список глобальных скриптов. StartScript добавляет скрипт в конец этого списка, StopScript удаляет скрипт из списка.

Но тогда непонятно, почему скрипты не выполняются в том кадре, в котором были запущены. Какое-то кэширование для единообразности поведения?

 

OpenMW хранит словарь, упорядоченный по названию скрипта - можно быстро найти скрипт по его имени. Для повышения быстродействия скрипт не выпиливается из списка, а просто помечается isRunning = false.

При включении он помечается isRunning = true.

 

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

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

Призываю Мортууса в эту тему

Краем глаза слежу за проектом в этой теме. Что сейчас вообще позволяет сделать редактор(особенно интересуют скрипты) из того, что нельзя было реализовать на CS?

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

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

Я видимо не тот плагин скачал?

 

Возможно, этот тоже сойдет. Проблема с бардами, которые в тавернах (которые заменяют фоновую музыку через StreamMusic).

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

 

 

Возможно, этот тоже сойдет. Проблема с бардами, которые в тавернах (которые заменяют фоновую музыку через StreamMusic).

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

Ссылки на мод:

1. Оригинальная версия: http://mw.modhistory...ownload-55-6351

2. Русифицированная версия: http://www.fullrest....mated_morrowind

Проблема в порядке выполнения скриптов.

 

Багрепорт: https://bugs.openmw.org/issues/3823

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

Ссылки на мод:

1. Оригинальная версия: http://mw.modhistory...ownload-55-6351

2. Русифицированная версия: http://www.fullrest....mated_morrowind

Проблема в порядке выполнения скриптов.

 

Багрепорт: https://bugs.openmw.org/issues/3823

Ну пока я вижу, что выполняется разовое условие на проигрывание музыки, при смене ячейки бард перестает заменять музыку своей игрой. Тут скорее дело не в порядке выполнения скриптов, а в неправильном сбросе переменных. Пока времени мало у меня, на следующей неделе( а может и раньше выкрою время) гляну.
Ссылка на комментарий
Поделиться на другие сайты

C 6 декабря.

Кортунов:

  • При вычислении защиты бронёй теперь учитывается её состояние (насколько она поломана)
  • Торговцы не будут торговать содержимым принадлежащих им сундуков и, например, цветов, у которых максимальная вместимость обозначена как 0 (или ниже), для соответствия оригинальному поведению.
  • В подсчёте длительности эффектов ингредиентов была опечатка, потому у практически всех они длились 1 секунду, а у тех, которые они должны были длиться 1 секунду, подсчёт был некорректный. Исправлено.
  • Для соответствия оригинальному поведению команда SetPos не будет перемещать никого под землю. Немного улучшает совместимость с силтстрайдерским модом абота, но осталась другая проблема, решение которой ещё объединено не было.
  • При использовании SetPos не будут пропускаться переходы между погодами, как и в оригинальном движке. Тоже улучшает совместимость с силтстрайдерским модом.

Allofich:

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

kcat:

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

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

  • 3 недели спустя...

С 18 декабря.

 

drummyfish:

  • Добавлена секция настроек рендеринга в редактор, в которую пара настроек были перемещены и несколько новых настроек камеры добавлены.

scrawl:

  • Исправлен приоритет источников анимаций в getStartTime (исправлена позиция стрел, когда их натягивает представитель зверорасы)
  • Исправлена проблема в логике прыжков, возникшая при исправлении мерцания анимации поворота, происходящей одновременно с приземлением, из-за которой в 0.43.0 они проходят намного менее гладко, чем в прошлых (есть "задержка", из-за которой прыгнуть повторно можно не сразу) . Вряд ли фикс попадёт в релиз.
  • Исправлено то, что перемещения и поворот корневых нод в анимациях опять в какой-то момент стали отбрасываться.

Да, это всё, праздники ведь. scrawl не спешит объединять накопившиеся пулл реквесты. А из актуальных ждут проверки, подтверждения, а чаще завершения таковые:

Кортунов:

  • Сообщение "скриншот сохранён" отображается при собственно успешном сохранении, а не при попытке снятия скриншота.
  • Прошлый экипированный предмет экипируется автоматически при завершении действия заклинания призванного снаряжения. Основная проблема заключается в том, что так просто конкретный экземпляр объекта в сейве не сохранить.
  • Отображаются эффекты каста заклинания, когда его кастует активатор. Требуется изменять размер снаряда пропорционально размеру такого объекта.
  • ИИ будет пытаться открывать двери до того, как в них врежется.
  • Поиск заклинаний (уже тут обсуждался)
  • В AiFollow и AiEscort хранится идентификатор актёра
  • Фиксы AiWander

drummyfish:

  • Опция для изменения вертикального размера преломленного изображения
  • Инструкция ToggleBorders: отображает границы экстерьерных ячеек
  • 360-градусные скриншоты, как в Nvidia Ansel

AnyOldName3:

  • Тени. Недавно были добавлены настройки теней и было исправлено ещё несколько важных багов, но остались проблемы с удалённым ландшафтом (да-да, тени рендерятся для всего игрового мира, но проблема совсем не в этом) и с фейковыми источниками света ночью и в интерьерах.

Григорий Латышев:

  • Попытка исправления того факта, что при повороте камеры на самой поверхности воды прямо вверх или прямо вниз показывается "подводный" оверлей (аппликата камеры обычно соответствует аппликате ноды головы)

Тем временем Zini считает, что релиз 1.0 будет в этом году — причём всерьёз считает — и заявляет, что выпустит диздок по пост-1.0 весной.

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

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

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

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

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

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

Войти

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

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

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