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

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

Чисто технически - возможно, но это не нужно, если флаг добавить.

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

В этом случае игрок хотя бы точно знает, с чем рискует расстаться при аресте.

С рамкой – норм идея.

Было бы удобно ещё отдельную вкладку "Краденое" в инвентарь завезти, для удобства сбыта.

 

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

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

Манчкинами, скидывающими перед попаданием в руки стражи весь краденый хабар на землю, можно пренебречь.
Можно добавить простую проверку, есть ли в радиусе N метров предметы с флагом "Украдено", и возвращать их в инвентарь игрока для обыска.
Ссылка на комментарий
Поделиться на другие сайты

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

Можно добавить простую проверку, есть ли в радиусе N метров предметы с флагом "Украдено", и возвращать их в инвентарь игрока для обыска.

Или сразу переносить их в сундук с конфискатом.

 

Со вкладкой могут быть проблемы с локализацией, т.к. нужных GMST нет, а идею с выгрузкой локализации в отдельные файлы Zini зарубил, мол, у него свои идеи по локализации есть, но он нам до 1.0 о них не скажет.

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

Можно добавить простую проверку, есть ли в радиусе N метров предметы с флагом "Украдено", и возвращать их в инвентарь игрока для обыска.

Тогда будут скидывать в контейнеры.

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

Тогда будут скидывать в контейнеры.

А если проверять контейнеры, будут скидывать в другие локации. Все варианты тут не проверишь.

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

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

 

 

Тогда будут скидывать в контейнеры.

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

 

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

 

 

А если проверять контейнеры, будут скидывать в другие локации. Все варианты тут не проверишь.

Так пусть скидывают в другие локации. Это исторически лучший вариант при личном обыске ИРЛ, лол.
Ссылка на комментарий
Поделиться на другие сайты

Согласен с Фениксом. Убирать надо явно абсурдную ситуацию "скинул награбленное под ноги @ ничего не нашли". А на сундуки и другие локации - пофиг :)

 

Придумывать и развивать всё можно бесконечно ("нет предела совершенству"). Важно сосредоточиться в первую очередь на убирании явных косяков, ИМХО, и не усложнять процесс излишне.

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

В итоге стража просто будет изымать только украденные предметы, а торговцам уже опционально можно будет сделать Service Refusal на покупку краденого (как в Обливе и Скуриме), чтобы продавать краденые вещи только в Гильдии Воров, или ростовщикам или ещё каким-нибудь торговцам.

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

 

А если Service Refusal не прописать, то опять вернемся к ситуации, когда торговцу можно будет продавать его же вещи у него из-под носа.

 

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

Зато можно для каждой вещи выдавать описание - украдено у Налькарии, украдено у Арилла, украдено у...

 

Чисто технически - возможно, но это не нужно, если флаг добавить.
Гм. А надо ли флаг добавлять, если вместно него можно просто проверку на наличие поля делать?

Тогда можно и при торговле с торговцем отдельно фильтровать украденные именно у него цацки.

Правда, тогда повится возможность "отмывать" вещи путем подкидывания их в чужие сундуки (и еще через продажу и выкуп у другого торговца, но это совсем уж извращение).

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

Гм. А надо ли флаг добавлять, если вместно него можно просто проверку на наличие поля делать?
Хотя бы затем, что наличие поля ничего не говорит о том, каким способом был получен предмет - украден у владельца, забран в качестве трофея (см. недавние патчи от Capostrophic) после его смерти, куплен и т.д.

К тому же, будет отдельная стопка для каждого владельца, см. 30 пепельных статуй. Я уже не говорю о том, что обработка поля "Владелец" - это дополнительная головная боль. Пример с сундуками вы привели сами.

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

Хотя бы затем, что наличие поля ничего не говорит о том, каким способом был получен предмет - украден у владельца, забран в качестве трофея (см. недавние патчи от Capostrophic) после его смерти, куплен и т.д.
А я вот, кстати, думал, каким образом предмет с полем "владелец" может оказаться в инвентаре у игрока. Ведь проверка на живого-мертвого владельца проводится во время поднятия предмета и записи ID в массив ?

А при продаже поле можно и очищать.

 

Я уже не говорю о том, что обработка поля "Владелец" - это дополнительная головная боль.
Сложнее, чем обработка нового дополнительного тэга?
Ссылка на комментарий
Поделиться на другие сайты

А если Service Refusal не прописать, то опять вернемся к ситуации, когда торговцу можно будет продавать его же вещи у него из-под носа.
А какая принципиальная разница, продавать эти вещи ему же или торговцу в пяти шагах от него? Неужели ювелир не будет покупать бриллианты, по которым не видно, его они или нет? Если бы это был именной бриллиант "Гордость Налькарии", то другое дело, но две жемчужины друг от друга не отличить.
Ссылка на комментарий
Поделиться на другие сайты

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

Сложнее, чем обработка нового дополнительного тэга?
Новый тэг проще тем, что он специализированный, и мы его должны сохранять при любых операциях с ворованным предметом. Поле "Владелец" же мы меняем, сбрасываем, и т.д. Вот и думай потом - правильно поле было изменено где-то или нет? А если выложить предмет на землю, он автоматически перестает быть краденным?

Плюс новый тэг упрощает группировку объектов в инвентаре.

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

Неужели ювелир не будет покупать бриллианты, по которым не видно, его они или нет? Если бы это был именной бриллиант "Гордость Налькарии", то другое дело, но две жемчужины друг от друга не отличить.

Я думаю, профессиональный ювелир может очень хорошо отличить две жемчижины друг от друга, и помнит, жемчижины какого размера, веса и окраски имеются у него в наличии.

 

Речь идет о ситуации, когда мы заходим к Мельдору в магазин, воруем у него с прилавка кирасу, и сразу же продаем ее ему обратно (а если у игрока карманные кражи очень хорошо прокачены, то абсурдность происходящего вообще уделывает Скурим с его котелками на головах).

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

Я думаю, профессиональный ювелир может очень хорошо отличить две жемчижины друг от друга, и помнит, жемчижины какого размера, веса и окраски имеются у него в наличии.
Ну, а ты предлагал разные жемчужины стакать.

Решение тут только одно - присваивать каждому предмету в игровом мире свой ID.

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

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

А если Service Refusal не прописать, то опять вернемся к ситуации, когда торговцу можно будет продавать его же вещи у него из-под носа.

Палка о двух концах, да.

 

Но это однозначно лучше чем как сейчас, когда стража не только знает, что краденое, а что нет, но и легальные вещи забирает, а торговцы видят свои вещи там, где их нет.

 

Речь идет о ситуации, когда мы заходим к Мельдору в магазин, воруем у него с прилавка кирасу, и сразу же продаем ее ему обратно (а если у игрока карманные кражи очень хорошо прокачены, то абсурдность происходящего вообще уделывает Скурим с его котелками на головах).

Ну, тогда вводить Service Refusal принудительный, чтобы сбывать хабар только ГВ и ростовщикам, которые всё кроме книг и алхимического барахла покупают.

Или делать его ещё более гибким: завязать на разнице навыков Торговли у торгаша и игрока. Если у торговца Mercantile выше этого навыка у игрока, то его не получится обдурить и он откажется покупать краденые предметы, если у игрока >= значению у торговца, то получится заболтать торговца и всучить ему хоть его же собственный меч, хоть кувшин с прахом мамы родной. Ну и выключить Service Refusal у любых неписей из Гильдии Воров.

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

 

В том виде, что есть сейчас, переносить эту нелепость в ОпенМВ — преступно.

 

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

В рот мне ноги тролля. Давайте к чему-нибудь придём))

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

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

Service Refusal тут вообще ни к чему - надо либо отфильтровывать предметы корректно в зависимости от того кем был владелец либо вообще запрещать продавать эти вещи, как сделано с, например, призванными предметами.

Если отфильтровывать, то придётся сохранять поле Ownership (выше писал Кортунов что с этим не так). А смысл вообще запрещать их продавать? Это тоже нереалистичный костыль, только в другую сторону. Можно и так, конечно, сделать, но придётся запиливать новых неписей, которым можно сбывать все краденые товары (в игре мало торговцев, которые покупают вообще всё). Если их не создавать, то сбывать краденое будет некому: смысл тогда играть вором? Тырить только то, что нужно в использовании?

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

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

 

А если выложить предмет на землю, он автоматически перестает быть краденным?
Нет, почему бы.

 

Ну, а ты предлагал разные жемчужины стакать.
Я думаю, ты прекрасно в курсе, что они действительно все разные.

 

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

 

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

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

 

Если отфильтровывать, то придётся сохранять поле Ownership (выше писал Кортунов что с этим не так).
Но зато так можно будет настроить реакцию владельца именно на свои бриллианты, а не на чьи-то чужие.
Ссылка на комментарий
Поделиться на другие сайты

Нет, почему бы.
Ну так поле "владелец"-то в обоих случаях будет одинаковым (что у ворованного предмета в инвентаре, что у ворованного на земле, что у неворованного).

Но так да, у обоих вариантов есть свои достоинства и недостатки.

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

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

 

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

nr6E5zv.png

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

Разбирал формат плагинов и сейвов, структура одна и та же, все состоит из тэгов, но не в этом суть.

Есть три типа структуры тэга, большинство тэгов имеют название, поле размера данных и непосредственно сами данные, но и это не суть.

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

 

Я сымитировал нормальный тэг и вклеил его в сейв, вылезла ошибка при загрузке:

Unknown HUIA_ID in ConstructObject.

Во время загрузки файла 'Novoenac0001.ess' произошли ошибки.

 

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

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

 

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

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

У меня перед моими документами встречаются русские буквы и при запуске файлов опен конструктор вылетает. Бывало ли у кого такое и как с этим бороться ?
Ссылка на комментарий
Поделиться на другие сайты

У меня перед моими документами встречаются русские буквы и при запуске файлов опен конструктор вылетает. Бывало ли у кого такое и как с этим бороться ?

Переименовать учётную запись, чтобы не было кириллицы.

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

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

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

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

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

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

Войти

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

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

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