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

akortunov

Граждане
  • Постов

    1101
  • Зарегистрирован

  • Посещение

Весь контент akortunov

  1. Так потому и не проваливаешься, что RootCollisionNode прикреплен к перилам, а не к корневому узлу, поэтому OpenMW его сейчас игнорирует. Это неправильно - генерируются сложные коллизии по всем шейпам, что плохо сказывается на производительности.
  2. Товарищи, нужно четкое определение, как работает RootCollisionNode. Я правильно понимаю, он определяет коллизии для узла, к которому он прикреплен, а не для всей модели? И что таких узлов в модели может быть несколько? Т.е. для вложенной модельки из Morrowind Rebirth этот узел упрощает коллизии для поручней, но при этом остальная модель генерирует обычные коллизии на основе NiTriShape? А то сейчас OpenMW берет RootCollisionNode, только если он дочерний для корневого узла, и заменяет им коллизии всей модели. ExHlaaluCanal01.nif
  3. Уже немного поздно - изменения ушли в основную ветку, никто вроде пока не жаловался. Для тестирования можно скачать крайнюю "ночную" сборку (ссылка есть в шапке темы "Мечты сбываются"). Теоретически, короткое оружие там должно работать.
  4. Я пользуюсь QtCreator'ом в качестве среды разработки, GDB в качестве отладчика и GCC в качестве компилятора С++. Под Windows, наверное, проще Visual Studio пользоваться - там есть и свой отладчик, и свой компилятор С++. По поводу развертывания рабочей среды, я мало чего могу добавить к этому гайду. Кто-нибудь из местных осилил сборку под винду? Вот технические консультации по архитектуре проекта - это пожалуйста, но там небольшим гайдом не обойдешься. Тут надо что-то типа "Morrowind Scripting for Dummies" делать, но на это много времени надо.
  5. Или объединять их в одну ветку, устраняя конфликты между этими фичами. Еще одна причина для "меняй не больше кода, чем нужно".
  6. 1. Да можно использовать поле "Состояние" для зелий, но в результате опять получается возня со стопками (одинаковые предметы с разной прочностью не стакаются). Также нужно серьезно ослаблять яды, чтобы делать их многоразовыми, т.е. отвязывать их формулу крафта от формулы зелий, одной правкой GMST здесь уже не обойтись. 2. Да. По поводу "по поводу "По поводу "еще мыслей":" 1. Не понял вопроса. Здесь конкретно про яды или про разработку OpenMW вообще? 2. Геймплейные фишки надо настраивать и балансировать. Для этого нужен полнофункциональный редактор, в который можно будет колонки добавлять, новые GMST и т.д. В идеале, еще формулы можно в Lua-скрипты вынести. Но сейчас редактор не допилен, поэтому новые механики надо зашивать в код, а вся настройка - через один многострадальный текстовый конфиг. Zini - глава проекта OpenMW и ему принадлежит решающее право голоса, какая фича попадет в основную ветку (и будет доступна всем), а какая нет. Из геймплейных фишек я уже добавлял застревание стрел в объектах, нормальные колчаны и ножны, и теперь яды, фейс-контроль ничего не прошло. Если запилить свой форк, то сложность его обновления растет пропорционально количеству кода, который он затрагивает, причем обычно нелинейно. Фактически, затраты времени на поддержание патчей актуальными могут превысить затраты времени собственно на их разработку. Поэтому я стараюсь затрагивать настолько мало кода, насколько это возможно. Да скорее всего, примерно так и получится. Это проще, чем кулдаун. Высокий шанс у мелкого метательного оружия и коротких клинков, средний у стрел, болтов, длинных клинков, копий и топоров, низкий у дробящего оружия. Что-то типа 30/20/10%? С другой стороны, у коротких клинков и метательного оружия скорость атаки большая, у дробящего оружия - низкая, т.е. там и так яды реже срабатывать будут. Как вариант, шанс не трогать, но применять яд всегда при скрытной атаке с помощью коротких клинков и мелкого метательного оружия.
  7. 1. Где хранить, как рассчитывать? Я хотел использовать оригинальную механику для зелий, а не костылить новую. 2. Для второго варианта будет функция по экипировке ядов в бою, в зависимости от сопротивляемостей цели, аналогично как для заклинаний. Первый вариант более запутанный, скорее всего будет второй. 3. Яд срабатывает при попадании, но для метательного оружия он расходуется при запуске снаряда, хотя тоже применяется при попадании. По поводу "еще мыслей": Сопротивления от ядов действуют как для обычных зелий - с учетом сопротивляемостей жертвы и ее силы воли. Касательно любого вопроса с пометкой "возможно ли": 1. Возможно, вопрос в трудоемкости. 2. Zini категорически не принимает новые механики и изменение старых, так что любые изменения только для личного пользования. Изменения в ИИ и в интерфейсе принимаются более охотно. Сейчас у меня яды новые механики-то вообще не используют - все формулы оригинальные. Просто игрок вместо того, чтобы жрать яды, экипирует их и применяет к противнику при попадании (или запуске снаряда). Вот и вся фича. Две трети кода - это доработка интерфейса.
  8. Да, примерно так я и понял. Но у нас зачарования всегда применяются, и яды по идее должны себя вести аналогично. Но без низкого процента срабатывания яды слишком мощные - экипировал 100 штук и пошел валить все, что движется. Хотя отдельный слот под яды сам по себе довольно удобен. Сейчас я разрешаю применять яды к оружию только вне боя. Как вариант, можно действительно сделать слот для яда, но использовать его только при при ударе в спину (когда цель не видит игрока). Добавил иконку яда на HUD: Яд пока что применяется на экипированное оружие (включая луки и арбалеты). Если в слоте оружия несколько предметов (например, метательные ножи), то яд применится только к одному предмету, который уйдет в инвентарь. Это должно упростить массовый крафт отравленной мелочевки. Такой подход делает мелкое метательное оружие более полезным - теперь оно основное средство доставки яда до цели, и его можно подготовить перед боем в довольно большом количестве. Короче, пока наклевывается два варианта реализации ядов: на основе Скайрима и на основе TESO. Первый вариант более-менее готов, с некоторыми оговорками: 1. Применение яда к оружию пока не особо удобное. Возможно, все-таки будет отдельное окошко. 2. ИИ пока не умеет использовать яды. 3. Яды не выветриваются с течением времени - только при первом ударе. Второй вариант проще в реализации, но он более манчкинский. Может, кулдаун сделать, типа одно применение яда раз в 30 секунд? Реализация второго варианта: https://github.com/akortunov/openmw/tree/poison_equip Пока без всяких кулдаунов и ИИ - экипировал стопку ядов, при каждом попадании яд применяется, количество предметов в стопке уменьшается на 1.
  9. В Онлаене вообще как-то хитро: You must apply the poison to your weapon, consuming the item. Any light attack, heavy attack, or weapon ability has a 20% chance to apply poison effectsWhen a poison is equipped, the weapon enchant and charge will be suppressed and replaced by the poison description and count.Most poisons have a maximum duration of 6-10 seconds.Poison effects dillute if many effects are added.С одной стороны, судя по описанию, яд применяется к текущему оружию, при этом расходуясь, а с другой - яд экипируется. Получается, что яды подавляют эффекты от зачарований, а при каждом применении яда (при каждом ударе?) расходуется бутылка? Вариант неплохой, но в Морровинде яды более сильными получаются. Слишком часто их использовать - больно жирно.
  10. По аналогичному принципу сейчас работает скрытие предметов при карманной краже и источников света без флага CanCarry. Здесь основный вопрос - по какому критерию вообще скрывать предметы.
  11. На фига? Флаг "это яд" все равно хранить негде. Сейчас ядом автоматически считаются зелья, имеющие только негативные эффекты (включая пиройловое масло, древнее бренди Дагота и ванильные зелья паралича, обузы и прочий неликвид). Zini уже зарубил эту идею. Мол, лучше не грузить сохранение вообще, чем грузить его с ошибками и потом получать на него багрепорты. OpenMW такое сохранение сейчас не загрузит, а я с этим ничего сделать не могу.
  12. Проблема не в том, что менять формат сейвов нельзя, а в том, что сохранения измененного формата нельзя будет в немодифицированном OpenMW загрузить. Например, если будете багрепорт слать. Плюс не забываем о том, что чем больше изменений, тем сложнее обновления накатывать из основной ветки. Кто не верит, может разработчиков TES3MP спросить. А изменения игровой механики в основную ветку принимаются примерно никогда, т.к. они практически все субъективны. В качестве решения предлагалось вынести часть игровой механики в Lua-скрипты (пусть пользователи правят формулы сами), но учитывая, что плагиностроители в основной массе - не программисты, это чревато вылетами и глюками на ровном месте, плюс конфликтами плагинов.
  13. Да была у меня похожая идея, но там надо не на уровне типов экипировки разруливать, а на уровне самих предметов. Это надо новые поля в редактор вводить и заполнять - тип урона напротив каждого удара для оружия и множители повреждений для доспехов. Например, кольчуги, костяные, орочьи пластинчатые доспехи и доспехи из драконьей чешуи все относятся к средним доспехам, но характеристики материалов должны быть разные. То же самое с древковым оружием: у копья, алебарды и полэкса будут разные типы атаки, хотя все они - древковое оружие. В первом случае будет две режущих атаки и одна колющая, во втором - две рубящих и одна колющая, в третьем - рубящая, колющая и дробящая. На Id предмета вязаться бессмысленно, у зачарованных предметов он свой, особенно для предметов, зачарованных самостоятельно. Мысль интересная, но да, муторно.
  14. Пфф... запретить ГГ мазать клинки ядом во время боя, и проблема решена. Аналогичным образом в бою нельзя варить зелья и чинить предметы.
  15. Уже. Эмм... Основная идея была в том, чтобы не в бою клинки мазать, а вместо него: нанес яд на кинжал или стрелу, подкрался, атаковал, потом уже к нормальным атакам перешел, если противник выжил. И почему именно 30, а не 20, 10 или 40? Также дисбаланс получается: зелья с положительным эффектом применяются один раз, яды - по количеству ударов, хотя формулы те же самые по мощности. Т.е. зельем "восстановить 30 ед. здоровья на 60 сек." можно один раз полечиться (и то не факт, что скорости лечения хватит), а ядом "отравление 30 ед. на 60 сек." за 30 секунд можно целую толпу положить. Мне уже мозги проклевали тем, что в Морровинде кража привязана к идентификаторам, а не к конкретным предметам, а вы предлагаете то же самое для ядов сделать. Да и технически оно нифига не проще. Но идея с "выветриванием" яда при выкладывании предмета из инвентаря или при продаже здравая.
  16. Нет. Иконку яда все равно надо перетягивать на персонажа или применять через быстрый слот. Только персонаж яд не жрет, вместо этого яд применяется на экипированное оружие. С отравлением ножа или дротика проблема в том, что надо остальные в сумку убирать, иначе косяки будут. Т.е. у игрока экипировано 100 дротиков, он применил яд, отравленной стала вся стопка. Он 50 штук на землю выложил, они тоже отравленные. Метнул один, осталось 49 экипированных обычных и 50 отравленных не земле.
  17. Тогда даже проще. Только это не решает проблему с метательным оружием - отравляться будет только тот дротик/нож, что в руке, остальные в инвентарь уйдут. Залил отображение ядов на всплывающей подсказке у оружия. На скринах в качестве яда используется пиройловая смола: Этого достаточно для отображения? Яды теперь опциональны: [Game] poisons = true Отключены по умолчанию. Собственно, основные проблемы сейчас: 1. Как применять яды для оружия дальнего боя, особенно для метательного? 2. Как обрабатывать сопротивление магии? Сейчас оно тупо работает как для остальных зелий. Возможно, нормальный вариант. 3. Как ИИ должен пользоваться ядами? 4. Сколько ударов можно нанести ядом из одной бутылки и в течение какого времени? Сейчас можно нанести один удар, время не ограничено.
  18. Запилил начальную поддержку ядов: https://github.com/akortunov/openmw/tree/poison Работает пока один удар для оружия ближнего боя. UI, ИИ тоже пока не трогал.
  19. Хотя бы то, что в воздухе в Морровинде распылить ничего нельзя - это не NWN с его токсичными облаками. А если уж очень хочется сделать газовый баллончик, то его можно сделать через скрипты, не трогая движок.
  20. Как минимум, для этого надо: 1. Как-то идентифицировать яд. Возможно, считать ядом зелья только с негативными эффектами. 2. У каждого экземпляра оружия хранить поле "текущий яд" и применять этот яд при ударе (тот же участок кода, что отвечает за зачарования при ударе). Для этого надо формат сохранений менять, да и не знаю, будет ли оно для самопальных зелий работать. 3. Надо предусматривать, сколько яд будет оставаться нанесенным на оружие. Один удар (или несколько) без ограничений по времени? Бесконечное количество ударов, но удалять яд по истечении какого-то времени? Второй вариант намного сложнее - надо как-то отслеживать все отравленное оружие в игре и убирать яды по истечении времени, плюс опять балансировать надо. 4. Научить ИИ собственно ядом пользоваться. 5. Не складывать в одну стопку оружие с ядом и без. 6. Продумать, как должно сопротивление магии для ядов должно работать. 7. Крафт ядов. Сейчас высокий навык алхимии снижает негативные эффекты практически до нуля. 8. Нужен полный ребаланс алхимии, иначе она станет еще большей имбой из-за ядов "100500 ед. урона на 1000 сек.". 9. Отображать яд на всплывающей подсказке, могут быть проблемы с локализацией. 10. Наверное, нужны будут всплывающие информационные сообщения (типа "яд применен" или "невозможно применить яд, не экипировано оружие"), но мы пока не можем их локализовать. Короче, по-человечески сделать можно, но из-за пп. 6-10 Zini скажет "прикольно, но это расширенная фича для плагиностроения, после 1.0, через скрипты", как это уже было с зачехлением оружия, колчанами и подкидыванием предметов неписям. Правда, непонятно, как применять яд к снарядам - сразу ко всей пачке? К одной стреле? Могут быть сложности. Также яды надо по умолчанию отключать - без модов на ослабление алхимии они будут ломать баланс нафиг.
  21. Уже поправили? Там была как минимум парочка мест, которые надо было обрабатывать отдельно: 1. Когда ветка диалога запускает StartCombat Player или создает врагов у игрока за спиной. Диалог идет, враги атакуют. 2. Когда стражники толпой набегают на игрока и пытаются арестовать его. Я к тому, что нельзя просто взять и отключить паузу, не завозя пачку костылей.
  22. А причем здесь GFM, если при локализации в движке что-то поломали и он строки из конфига не читает (они там есть)? Это разработчиков MCP просить надо.
  23. Эм... А разве он их не показывает? Это же черт его знает когда реализовали. Даже в моррке они только в русской версии не отображаются.
  24. Будут анимации, будет разговор. У нас и так приличное количество наработок (кода) без анимаций или с недоделанными анимациями (зачехление оружия, парирование, ручная блокировка и т.д.) Также не забываем о том, что фишку с уклонением в NWN провернуть проще - там нет прямого управления в бою в стиле ARPG. Я к тому, что посреди анимации уклонения в моррке персонаж может получить удар, уйти в нокдаун, блокировать другой удар, умереть и т.д. Здесь может быть куча проблем с переключением анимаций.
  25. Это тогда надо CRPG делать типа KOTOR-а, с переключением между персонажами и отсутствием управления от Action-RPG. С очередью действий, тактической паузой и т.д. Или что-то типа тактической паузы в MassEffect'е. Вот только удобной она не будет. Контент Морровинда (низкие уровни врагов, сложный ландшафт, узкие коридоры) на отряд не рассчитан. В Морровинде спутники в первую очередь обуза.
×
×
  • Создать...