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

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

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

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

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

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

UnPinned posts
Да, надо. Где про это узнать?

Чаще всего для Windows разработчики используют это руководство: https://gist.github....0454e99b3952405

В общем, надо Visual Studio, Git for Windows и CMake. Далее запускается скрипт, который скачивает и устанавливает зависимости типа OpenAL и Bullet.

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

 

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

Код здесь: https://github.com/akortunov/openmw/tree/extended_blocking

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

Чаще всего для Windows разработчики используют это руководство: https://gist.github....0454e99b3952405

В общем, надо Visual Studio, Git for Windows и CMake. Далее запускается скрипт, который скачивает и устанавливает зависимости типа OpenAL и Bullet.

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

Ну вроде как сделал все это. Только вот что я сделал и что мне с этим делать?

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

Ну вроде как сделал все это. Только вот что я сделал и что мне с этим делать?

Если все отработалось нормально, скрипт должен был файл OpenMW.sln создать.

Его можно либо через Visual Studio открыть и там сборку запустить, либо можно попробовать build.msvc.sh использовать, чтобы из командной строки OpenMW собирать.

В крайнем случае, можно тему на форуме OpenMW создать. Берутся же откуда-то сборки под Винду?

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

Если все отработалось нормально, скрипт должен был файл OpenMW.sln создать.

Его можно либо через Visual Studio открыть и там сборку запустить, либо можно попробовать build.msvc.sh использовать, чтобы из командной строки OpenMW собирать.

В крайнем случае, можно тему на форуме OpenMW создать. Берутся же откуда-то сборки под Винду?

Неа. Не нашел такого файла.

Угу... Создать... Берутся... :wall: :kenny:

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

Неа. Не нашел такого файла.

Ну тогда жду в личку (чтобы не мусорить в основной теме) вывод CI/before_script.msvc.sh с дополнительным ключом -V (регистр важен).

Также не забываем, что скрипт надо запускать из корневой директории проекта (там еще директория CI есть).

Можно скриншотом. Если там какая-то ошибка, он ее должен был вывести.

Установщики Boost, MyGUI и прочего барахла запускались?

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

С 28 февраля.

 

Thunderforge:

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

scrawl:

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

я:

  • Для соответствия оригинальному поведению барахло персонажей, которые когда-либо умерли в загруженных игроком ячейках (ради оптимизации - не искать же по всему острову) на момент первого взятия какого-либо предмета, перестанет считаться украденным и не будет конфисковано стражей, но взятие таких предметов останется преступлением. Барахло живых или несуществующих (типа a shady smuggler, иначе же мёртвых вне загруженных ячеек) персонажей будет конфисковываться. Предмет, владелец которого погиб уже после того как он был украден, не перестанет быть украденным даже после сохранения и загрузки игры.
  • Форматирование числа предметов для отображения его на иконке предмета теперь более-менее правильно работает с миллионами и миллиардами (количество предметов — четырёхбайтовая переменная). Если у вас, скажем, два с половиной миллиона дрейков (2 500 000), ранее они могли округлиться с погрешностью до, например, 2496k, причём на иконке отображалось бы только 496k, так как больше четырёх обычной ширины символов там не помещается. Теперь оно будет округлено вниз до 2 миллионов (2m), более точное число отобразится при наведении. Сокращение для миллиарда — b(illions). Для этого используется заведомо более точное число, т.к. вместо деления чисел с плавающей точкой используется целое деление, что ведёт к тому же результату, так как дробная часть всё равно опускалась, но без проблем с точностью.

Заметка насчёт барахла мёртвых: преступлением, как всегда, будет только первое взятие предмета. В OpenMW скопирован знаменитый эксплойт с алебастровым блюдом: у предметов, которые перестали быть точными копиями их записей из плагина игры, всё в методе предметВзят после этой довольно ранней проверки перестаёт обрабатываться, дабы не увеличивать счётчик украденных предметов несколько раз — это ведёт и к тому, что взятие предмета перестаёт быть преступлением. От него довольно просто избавиться и приблизительно скопировать поведение Скайрима: повторное взятие выкинутого украденного предмета останется преступлением, но не приведёт к повторному увеличению счётчика украденных предметов... будет ли смысл сделать такое опциональной фичей?

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

От него довольно просто избавиться и приблизительно скопировать поведение Скайрима: повторное взятие выкинутого украденного предмета останется преступлением, но не приведёт к повторному увеличению счётчика украденных предметов... будет ли смысл сделать такое опциональной фичей?

Будет. В оригинальной игре воровство упоротое донельзя.

 

К слову как избавиться от ванильной фичи с "Алмазами Налькарии"? Когда при краже предмета у непися ты больше никогда ему предмет такого типа не продашь без штрафов и криков "ВОоооор!", даже если давно избавился от изначального предмета непися и у тебя на руках вообще абсолютно новые предметы с таким же id, но легально добытые. Это ой как бесит в оригинале.

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

Будет. В оригинальной игре воровство упоротое донельзя.

 

К слову как избавиться от ванильной фичи с "Алмазами Налькарии"? Когда при краже предмета у непися ты больше никогда ему предмет такого типа не продашь без штрафов и криков "ВОоооор!", даже если давно избавился от изначального предмета непися и у тебя на руках вообще абсолютно новые предметы с таким же id, но легально добытые. Это ой как бесит в оригинале.

А чего бы не переделать квест на уникальный id алмаза?

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

А чего бы не переделать квест на уникальный id алмаза?

А зачем? Хабаси хоть какой алмаз нужен, а не уникальный алмаз Налькарии - на Налькарию она просто наводку дает, потому что прошла информация, что у нее алмазы есть.

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

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

К слову как избавиться от ванильной фичи с "Алмазами Налькарии"?

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

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

В принципе, можно ввести ограничение на торговлю - краденные предметы можно продавать только Хаджитам и торговцам из Гильдии Воров и Мораг Тонга (такие предметы не будут отображаться в меню торговли),

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

Не уверен, что делать, если предмет был украден у скупщика краденого. Как Скайрим подобные ситуации разруливает?

 

В любом случае, у такого подхода есть проблемы:

1. Требуется изменение формата сохранения

2. Оно не совместимо с оригинальной системой воровства, и как опцию сделать будет сложновато.

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

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

 

Хгмм. А если мы берем предмет, у которого прописан owner в инвентарь, эту значение нельзя сохранить? То есть может ли находящийся в инвентаре предмет иметь поле owner?
Значение сохранять можно, но не нужно, т.к. у одной стопки один владелец.
Быть может, например, сделать стак раскрывающимся.
А как потом отдельно предметы выбирать? Например, конкретно краденный алмаз, или поврежденный меч? Идея стопки в том, что в ней все предметы полностью взаимозаменяемы. Изменено пользователем akortunov
Ссылка на комментарий
Поделиться на другие сайты

А чего бы не переделать квест на уникальный id алмаза?

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

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

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

 

http://abload.de/img/14577920362830uqph9.jpg

 

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

В принципе, можно ввести ограничение на торговлю - краденные предметы можно продавать только Хаджитам и торговцам из Гильдии Воров и Мораг Тонга (такие предметы не будут отображаться в меню торговли),

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

Не уверен, что делать, если предмет был украден у скупщика краденого. Как Скайрим подобные ситуации разруливает?

 

В любом случае, у такого подхода есть проблемы:

1. Требуется изменение формата сохранения

2. Оно не совместимо с оригинальной системой воровства, и как опцию сделать будет сложновато.

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

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

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

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

Неужели нельзя работу со счётчиком украденного отдать на откуп только страже?

Это не решение проблемы. Те же стражники могут отобрать алмаз, купленный в Морнхолде, в качестве алмаза, украденного у Налькарии, или где-нибудь в крепости Дагот Ура (там у некоторых предметов тоже владельцы есть).

 

Сложно. Может просто есть способ отключить эту фичу у торговцев?

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

Моя позиция такова: если уж менять существующую систему, делать это надо по-человечески, а не городить новые костыли.

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

Это не решение проблемы. Те же стражники могут отобрать алмаз, купленный в Морнхолде, в качестве алмаза, украденного у Налькарии, или где-нибудь в крепости Дагот Ура (там у некоторых предметов тоже владельцы есть).

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

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

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

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

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

 

Может, просто сделать отчистку статуса "украденно" через 72 часа\месяц\сколько-то там еще времени?

 

А вообще, по уму всю механику стака надо переделывать.

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

Потому что вот этот самый алмаз только что у него на прилавке перед носом лежал.

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

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

 

 

1) Может, просто сделать отчистку статуса "украденно" через 72 часа\месяц\сколько-то там еще времени?

2) А вообще, по уму всю механику стака надо переделывать.

1) Как вариант. Ну и стража тогда не будет изымать всё что не попадя. Удобно.

2) Типа складывать спёртые предметы, у которых есть владелец отдельно от тех, где ownership не выставлен? Ну, это ещё более захламит инвентарь. Плюс золото так не поделить, например, но его и не надо.

 

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

Моя позиция такова: если уж менять существующую систему, делать это надо по-человечески, а не городить новые костыли.

Это не новые, это улучшенная ревизия старого костыля)))

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

Более того, в Морровинде счетчик краденных предметов далеко не всегда очищался (не в курсе, чинит ли это MCP).

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

В OpenMW такого произвола нет.

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

Именно.

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

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

Ну если этот тот алмаз, то это вполне реалистично - у него какие-то особые приметы могут быть, по которому можно узнать безошибочно.

 

2) Типа складывать спёртые предметы, у которых есть владелец отдельно от тех, где ownership не выставлен? Ну, это ещё более захламит инвентарь.
Нет, это тупо.

 

Что понимается под механикой стака, и что с ней не так?
Механика стака - это, очевидно, когда однотипные предметы в стак складываются. Не те с ней то, что в стак не складываются зачарованные, заскриптованые и прочие предметы - или, вот как тут, складываются с неукрадеными украденные, отчего украденным весь стак становится.

 

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

 

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

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

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

По порядку:

1. Зачарованные и незачарованные - это совершенно разные предметы с разным Id, и объединить их в одну стопку не получится. Разве что только объединять одинаковые предметы с разным числом зарядов.

2. С заскриптованными надо проверять - в Морровинде они точно не складывались (например, пепельные статуи), в OpenMW такого пока не видел. Там вроде надо, чтобы скрипт одинаковый на предметах висел.

3. С украденными/неукраденными проблемы в OpenMW нет, о чем уже неоднократно упоминалось, да и механика стака здесь вообще не при делах.

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

Разве что только объединять одинаковые предметы с разным числом зарядов.
Об этом и речь.

Хотя то, что два одинаковых меча с двумя абсолютно одинаковыми зачарованиями получают разные ID и из-за этого не стакаются - тоже не особо хорошо.

 

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

 

3. С украденными/неукраденными проблемы в OpenMW нет, о чем уже неоднократно упоминалось...
А о чем же мы тут всю последнюю страницу говорим?
Ссылка на комментарий
Поделиться на другие сайты

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

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

 

А о чем же мы тут всю последнюю страницу говорим?
Хотя бы о том, что нельзя отличить украденный предмет от неукраденного, если в игре нет метки "Украдено" у конкретных экземпляров объектов. А если ее добавить, ну или сохранять оригинального владельца предмета, возникают проблемы с группировкой предметов в инвентаре. Изменено пользователем akortunov
Ссылка на комментарий
Поделиться на другие сайты

О, воровство вы зацепили так зацепили... Тут работы непочатый край.

 

1) Стражники. Моё мнение - страже как раз насрать должно быть, именно этот предмет украли или нет. Более того, они вообще могут "беспределить" и неизвестному персонажу первого уровня заявлять что-то вроде "Откуда у тебя этот алмаз, бомжара? Ты ведь его спер, сцуко! И денег с тебя сдерем за беспокойство..." Т.е. по-хорошему тут вообще надо делать привязку к репутации, и чем "неизвестнее" персонаж, тем более дешёвые предметы нужно изымать у игрока.

Если более конкретно и просто - страже должно быть плевать на ID предмета, но делать это нужно только для вещей определенной стоимости. Например, батат украденный стража не опознает, а алмаз заберёт любой ("А, это тот алмаз, который у Налькарии украли!" - "Нiт, нiт, я яго чэсна нашоу у даэдрычэскiх руiнах!" - "Ага, потрынди мне тут, ворюга").

И привязку к регионам придется сделать тогда, ну да это другой разговор.

Резюме: со стражей все ок, им бы только не изымать совсем дешёвые предметы. И то не беда - действительно можно списать просто на произвол.

 

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

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

Если предметы не модифицируются, то они сохраняют в себе статус принадлежности?
При взятии предмета игроком поле "Владелец" очищается (иначе предметы группироваться не будут), а в специальный массив заносится запись о том, что игрок украл предмет с таким-то id у такого-то персонажа. При конфискации игра использует этот массив. Поскольку проверка идет по id предмета, то стражникам пофиг, какой конкретно алмаз конфисковать.
если у предмета флаг "украден"
Флага "Украден" в игре нет, его только в Обливионе добавили. Добавление флага потребует изменения формата сохранений, но его надо в основной ветке OpenMW добавлять, иначе сохранения несовместимы будут.

Вообще, флаг "Украдено" был бы простым логическим признаком, по которому можно изымать или фильтровать предметы: не надо никакой проверки на владельца, регионы, репутацию и т.д. Не нужен также глобальный массив со списком всех когда-либо украденных героем предметов.

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

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

Ну вот в целом менеджмент этих контейнеров (со стороны интерфейса) не очень удобный.

 

1) Стражники. Моё мнение - страже как раз насрать должно быть, именно этот предмет украли или нет.
Ну тут вообще для начала надо что-то со стражнической телепатией делать.

 

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

Флага "Украден" в игре нет, его только в Обливионе добавили. Добавление флага потребует изменения формата сохранений, но его надо в основной ветке OpenMW добавлять, иначе сохранения несовместимы будут.

Вообще, флаг "Украдено" был бы простым логическим признаком, по которому можно изымать или фильтровать предметы: не надо никакой проверки на владельца, регионы, репутацию и т.д. Не нужен также глобальный массив со списком всех когда-либо украденных героем предметов.

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

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

 

Но чисто технически, вообще возможно это поле у предмета в инвентаре сохранять?

Тогда возникнут моменты:

а) как их стакать? В один общий контейнер? В разные? Если в общий, то:

б) как их продавать из общего стака-контейнера? Сначала краденые или сначала легальные? Дать возможность выбора?

в) Где отображать подсказку об Ownership? В простой всплывающей подсказке? А если в стаке много предметов и много владельцев, то как выводить информацию?

 

Без допила интерфейса что-то не очень получается.

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

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

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

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

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

Вы сможете оставить комментарий после входа в



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

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