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

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

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

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

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

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

UnPinned posts

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

Да, Налькария будет ругаться на любой бриллиант из стопки "Украдено". Но это намного лучше оригинала и намного проще реализовать.

Ну вот и отлично. Можно флаг в класс ESM::CellRef запихнуть, там как раз хранятся переменные вроде текущего состояния и заряда.

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

 Как я понял, проблема с локализацией, которая не будет решаться до выхода версии 1.0?

Там основная проблема в том, как и кому продавать ворованные предметы.

Самый простой вариант: торговцы покупают ворованное, проверка "Это мое!" работает, как раньше, но только для предметов с флагом "Украдено".

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

Проверка идёт не на соответствие фракции торговца фракции предмета, а на наличие предмета в списке предметов такого типа, украденных у фракции (именно украденных), так же как и при проверке на единственного владельца сравнивается не ID владельца предмета и торговца, а наличие предмета с таким типом, украденным у владельца с таким ID.

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

Что-то scrawl совсем разошелся:

 

> Are you going to take a break from coding for a while until we migrate to non-github-ness?

 

No thanks, I'll rather take a break until Microsoft is dead.

The only reason I kept working on OpenMW was because I wanted it to be hallmark of engineering, of collaboration between OSS projects and of free software culture in general. I've long since stopped caring about 'playing morrowind', and if that's the only thing this project is still about (as evidenced by most of the comments in this thread), then there's no need for me to be here anymore. Thanks to drummyfish, werdanith and Chris for being a voice of reason, but it looks like we're the minority.

To be fair, between work and other stuff I haven't had much time to work on anything substantial for OpenMW anyway, but if I did, I'd just make a fork and I'd be sure to make it Linux only to weed out the "free as in free beer" suckers (thanks for the idea, Blue).

So I guess that's a 'bye'. Don't try to win me back because you could hardly say or do anything in earnest at this point.

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

Такое чувство, что он просто искал причину наконец-то закончить этот проект, но так, чтобы уйти красиво. Вот и зацепился за Майкрософт.

 

Глупо все это выглядит, чесслово.

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

Такое чувство, что он просто искал причину наконец-то закончить этот проект, но так, чтобы уйти красиво. Вот и зацепился за Майкрософт.

 

Глупо все это выглядит, чесслово.

Если это так, то непонятно зачем портить работу другим участникам. Назначил бы преемника(ов), передал дела и ушел.

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

Может кто-нибудь объяснить, для чего предназначен сей опус из "NPC LCV Schedules":

;--SC_INIT: SeydaNeen 
set SC_temp to "adraria vandacia".nolore
set SC_temp to "albecius colollius".nolore
set SC_temp to "arrille".nolore
set SC_temp to "chargen captain".nolore
set SC_temp to "chargen class".nolore
set SC_temp to "darvame hleran".nolore
set SC_temp to "draren thiralas".nolore
set SC_temp to "eldafire".nolore
set SC_temp to "elone".nolore
set SC_temp to "erene llenim".nolore
set SC_temp to "fargoth".nolore
set SC_temp to "fine_mouth".nolore
set SC_temp to "foryn gilnith".nolore
set SC_temp to "hrisskar flat-foot".nolore
set SC_temp to "indrele rathryon".nolore
set SC_temp to "raflod the braggart".nolore
set SC_temp to "tandram andalen".nolore
set SC_temp to "teleri helvi".nolore
set SC_temp to "teruise girvayne".nolore
set SC_temp to "thavere vedrano".nolore
set SC_temp to "tolvise othralen".nolore
set SC_temp to "vodunius nuccius".nolore
set SC_temp to "wr_morEri_s1".nolore
set SC_SeydaNeen_State to -1
;messagebox "Initialized SeydaNeen"

Компилятор OpenMW сейчас ругается на необъявленную переменную nolore у некоторых персонажей.

 

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

No thanks, I'll rather take a break until Microsoft is dead.

 

Проблема в том, что когда умрёт Microsoft, то ему на смену индустрия родит кого-нибудь с новым названием или эстафету примет кто-нибудь из нынешних крупных игроков, так что:

 

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

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

Вот сборка для Windows. Здесь ресурсы за авторством CemKey. В конфиге должно быть такое:

[Game]
weapon sheathing = true
use additional anim sources = true

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

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

Кстати я тут в Дискорде наткнулся на BlenderCS. Как я понял что-то с Блендером сделали и его можно использовать как CS. Правда инфы почти никакой. Там небольшой междусобойчик или вообще один чел это сделал.

https://streamable.com/961c1

https://streamable.com/o8hfw

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

Кстати я тут в Дискорде наткнулся на BlenderCS. Как я понял что-то с Блендером сделали и его можно использовать как CS. Правда инфы почти никакой. Там небольшой междусобойчик или вообще один чел это сделал.

https://streamable.com/961c1

https://streamable.com/o8hfw

Да, это работающие скрипты от гиганта моддинговой мысли Greatness7. Проверял, работает.

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

Вот это да ! Неужели еще BlenderCS может внешние ячейки также сделать? Например Альдрун или Балмору . Вот бы еще для 3ds Max такой бы инструмент.

 


Почитав сообщения я так и не смог понять , OpenMW закрывается что ли ?

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

Ничего не закрывается. Это scrawl громогласно ушёл, а разработка продолжается и со стороны стаффа проводятся ответные действия. Выдали права на объединение PR'ов Давиду (тес3мп) и AnyOldName3, решили приблизить полный переход на гитлаб, в том числе перенести вики и багтрекер, но в обозримом будущем репозиторий на гитхабе оставить.

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

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

Возможность заразиться болячкой NPC убирает буквально одно условие в отвечающей за это функции, что актёр, получающий болячку -- игрок, но функционал работает для любого актёра. Теоретически можно заменить это условие простым условием, что болячку получает актёр, и отдать мелкую правку на растерзание коршунам совета OpenMW. Стоит ли?

 

@akortunov, не могу прокомментировать никак насчёт манекенов и анимаций, это для меня слишком сложно. Кроме замка Хестатур ничего не тестировал.

 

C 10 июня:

 

Thunderforge: версия релиза OpenMW теперь отображается в свойствах приложения редактора на macOS.

Андрей: копируется поведение оригинала, связанное с последним тегом <br>: если такого тега нет вообще, текст книги/записки не отображается. Если таковые есть, текст после последнего не отображается. Позволяет избавиться от невесть как образовавшегося мусора в некоторых локализациях игры.

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

wareya: поведение блендинга текстур земли сильно приближено к оригиналу, но швов всё ещё не будет.

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

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

А для кого легко? Работать с анимациями, что в Морровинде, что в OpenMW, вообще гиблое дело.

По идее, комментировать рановато, так как работа еще в процессе.

 

Но основные идеи следующие:

1. Скриптовые анимации (запускаемые через PlayGroup) должны иметь больший приоритет, чем обычные, к тому же они должны уметь игнорить SkipAnim.

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

 

2. Когда игра подчищает тела персонажей через 72 часа после смерти, она должна сначала проверить, что завершилась анимация смерти.

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

Это должно прекратить случаи, когда игра подчищает манекены (мертвые персонажи со SkipAnim в скрипте) вместе со всеми вещами у них.

 

4. "PlayGroup idle" почему-то освобождает персонажа от скриптовых анимаций и возвращает его к нормальному состоянию.

 

 

Отдельно по поводу Силт Страйдеров от Abot'а: у меня одного они дергаются при сценической поездке? Насколько я могу судить, там движение в анимации WalkForward есть, и оно конфликтует со скриптовым перемещением.

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

Может кто-нибудь объяснить, для чего предназначен сей опус из "NPC LCV Schedules":

;--SC_INIT: SeydaNeen 
set SC_temp to "adraria vandacia".nolore
set SC_temp to "albecius colollius".nolore
set SC_temp to "arrille".nolore
set SC_temp to "chargen captain".nolore
set SC_temp to "chargen class".nolore
set SC_temp to "darvame hleran".nolore
set SC_temp to "draren thiralas".nolore
set SC_temp to "eldafire".nolore
set SC_temp to "elone".nolore
set SC_temp to "erene llenim".nolore
set SC_temp to "fargoth".nolore
set SC_temp to "fine_mouth".nolore
set SC_temp to "foryn gilnith".nolore
set SC_temp to "hrisskar flat-foot".nolore
set SC_temp to "indrele rathryon".nolore
set SC_temp to "raflod the braggart".nolore
set SC_temp to "tandram andalen".nolore
set SC_temp to "teleri helvi".nolore
set SC_temp to "teruise girvayne".nolore
set SC_temp to "thavere vedrano".nolore
set SC_temp to "tolvise othralen".nolore
set SC_temp to "vodunius nuccius".nolore
set SC_temp to "wr_morEri_s1".nolore
set SC_SeydaNeen_State to -1
;messagebox "Initialized SeydaNeen"

Компилятор OpenMW сейчас ругается на необъявленную переменную nolore у некоторых персонажей.

 

 

Какая-то срань. Это чтобы все жители не говорили на стандартные темы "мудрость муравинда", "моё занятие", "биография" и прочую муть. Но я не понимаю зачем это надо. Разве что ночью, чтобы посылать куда подальше влезшего в дом переварина.

Что если просто объявить переменную nolore в начале скрипта?

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

Zini и psi29a вообще разошлись, переносят дела на гитлаб и мержат PR'ы like there's no tomorrow. Со вчерашнего дня:

Zini:

  • После Begin и End в скриптах теперь можно ставить запятые
  • "Голые" выражения, начинающиеся с оператора-члена, ошибочно позволялись к использованию вне консоли
  • В результаты поиска добавлен статусбар с их количеством и сообщение, если они отсутствуют

Florianjw:

  • Более точное отображение значений поворота объектов в редакторе.

я:

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

Thunderforge:

  • На маках теперь можно использовать функциональные клавиши в качестве горячих

Андрей:

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

 

Zini отметил, что уже было закрыто 33 косяка, некоторые из которых довольно значительные, (больше трети закрытых с 0.44.0) со времени начала разработки 0.45.0, даже хотя 0.44.0 ещё не вышел, и что 0.45.0 потребует долгого тестирования и скорее всего будет ещё одним массивным релизом.

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

 

Какая-то срань. Это чтобы все жители не говорили на стандартные темы "мудрость муравинда", "моё занятие", "биография" и прочую муть.

А как эта шляпа вообще работает? Ведь у некоторых персонажей вообще нет скриптов и nolore, значит, для них оно работать не должно.

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

 

 

Какая-то срань. Это чтобы все жители не говорили на стандартные темы "мудрость муравинда", "моё занятие", "биография" и прочую муть.

А как эта шляпа вообще работает? Ведь у некоторых персонажей вообще нет скриптов и nolore, значит, для них оно работать не должно.

 

 

В скрипте происходит чтение локальных переменных у неписей. Фиг знает зачем, но возможно это заставляет неписей переподгрузиться в локации.

Но скрипт спокойно компилится, а если nolore не объявлена то хз че там возвращается.

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

В скрипте происходит чтение локальных переменных у неписей. Фиг знает зачем, но возможно это заставляет неписей переподгрузиться в локации.

Но скрипт спокойно компилится, а если nolore не объявлена то хз че там возвращается.

Сдается мне, что команда Set здесь нужна для чисто для того, чтобы скрипт не валился, т.к. что-то типа 'show "fargoth".nolore' резонно ругается на отсутствующую переменную.

Вполне возможно, что если выражение-аргумент для Set валится, то там ноль по умолчанию присваивается, вместо того, чтобы валить весь скрипт.

Но даже в этом случае остается вопрос "нафига читать значение nolore у всех персонажей в локации".

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

 

В скрипте происходит чтение локальных переменных у неписей. Фиг знает зачем, но возможно это заставляет неписей переподгрузиться в локации.

Но скрипт спокойно компилится, а если nolore не объявлена то хз че там возвращается.

Сдается мне, что команда Set здесь нужна для чисто для того, чтобы скрипт не валился, т.к. что-то типа 'show "fargoth".nolore' резонно ругается на отсутствующую переменную.

Вполне возможно, что если выражение-аргумент для Set валится, то там ноль по умолчанию присваивается, вместо того, чтобы валить весь скрипт.

Но даже в этом случае остается вопрос "нафига читать значение nolore у всех персонажей в локации".

 

Может расчет на то что скрипт должен прерваться на одной из этих строк и команда set SC_SeydaNeen_State to -1 не будет выполнена?

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

Может расчет на то что скрипт должен прерваться на одной из этих строк и команда set SC_SeydaNeen_State to -1 не будет выполнена?

Интересная теория, но непонятно, зачем оно может быть надо - прерваться-то оно в этом случае может на любой строке. Интересно, какие вещества и в каком объеме употреблял автор мода?

 

 

На форуме OpenMW началось знатное бурление по поводу MWSE: надо ли его поддерживать (речь о классической версии для MWScript) или забить в пользу Lua, а если надо, то кому и в каком виде.

Как я понял, в сраче даже участвует один из разработчиков MWSE. 

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

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

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

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

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

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

Войти

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

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

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