Переделал босса в своей игре: теперь это дерево, которое вообще не двигается. На первом же тесте выяснилось, что бой стал даже динамичнее и интереснее, чем раньше
Началось всё с комментария здесь, на Пикабу. Мне предложили заменить обычный прыжок магическим полётом, а босса-энта сделать неподвижным деревом.
Обе идеи понравились, решил попробовать. Спасибо автору — вот что в итоге получилось :)
Раньше энт мог ходить за игроком. Его основные атаки были: бросок деревом, захват лианой. Теперь он врос в землю и достаёт тебя корнями: под ногами вылезают острые стебли, от ствола идут дорожки шипов, кидается острыми шипами, а часть арены зарастает колючками. Приходится постоянно смотреть, куда отступаешь.
Тут как раз пригодился полёт вместо прыжка. Можно быстро сменить позицию, но приземлиться тоже желательно куда-нибудь, где тебя не проткнут.
Правда, с настройками босса я пока переборщил. Запустил проверить, что получилось, — от атак очень сложно увернуться, здоровье заканчивается быстро. При этом сама суета мне понравилась: бой стал гораздо динамичнее. Сейчас хочу немного снизить урон и ещё проверить, везде ли хватает времени среагировать.
Вообще приятно вот так вернуться к комментарию и показать результат. Когда читаешь предложение, ещё не очень представляешь, как оно будет играться.
Заодно обновил модель героя, несколько моделей врагов и переделал туман. Если видели прошлые посты, возможно, заметите разницу на видео.
Как вам бой? По ролику понятно, где сейчас вылезут шипы, или предупреждения стоит сделать заметнее?
На сей раз мне захотелось раскрасить текст картинками, поэтому я буду подставлять нейро-картинки и иногда мемы чтобы.. Выглядело интереснее. Надеюсь вам понравится X)
У любого, кто пытается прикрутить нейросеть к реальному коду, рано или поздно сгорает задница от одной и той же привычки моделей: они обожают трепаться вместо того, чтобы выполнять команды.
Сижу ночью, тестирую свежую сборку Aetheria. Мой персонаж стоит на складе, рядом бочка с маслом. Мне нужно проверить, как движок отработает физику разлива и горения.
Пишу: «Бью топором по чану с маслом».
Что должен сделать нормальный скрипт? Вызвать item.damage, расколоть объект, вылить жидкость на пол.
Что делает LLM? Она включает режим великого писателя: «Ты крепче перехватываешь топорище. Холодный металл тускло блестит в полумраке склада, а в воздухе стоит тяжелый запах старой древесины и смолы. Ты чувствуешь, как напрягаются мышцы перед ударом...»
И всё. Ни вызова функции в коде, ни разбитого чана. Текст есть, действия нет.
Пишу второй раз: «Я не чувствую мышцы, я бью по бочке со всей дури, прямо сейчас». Модель: «Лезвие со свистом рассекает воздух и с глухим стуком врубается в толстые дубовые клепки! Щепки летят в стороны, чан содрогается, но дерево держится крепко. Ты ощущаешь отдачу в ладонях...»
Смотрю в дебаг-панель движка — здоровье чана 100/100, масло внутри, флаг удара не вызывался. Нейросеть просто сочинила красивую анимацию удара на словах, забыв дернуть триггер в коде. В ее воображении мы уже полчаса рубим этот несчастный чан, а в памяти движка мы просто стоим столбом посреди комнаты.
На четвертый ход я уже пишу капсом: «ПРОБЕЙ ЕГО НАХРЕН».
И только когда в системный промпт прилетел жесткий пинок по рукам («сначала вызывай инструмент в движке, а потом пиши свои поэмы»), модель наконец соизволила отправить честный JSON-запрос на урон. Чан треснул, масло залило пол, физический движок с радостью всё это поджег.
Это главная болезнь текстовых нейроигр. Модели патологически лень дергать код, ей проще родить три абзаца художественного текста ни о чем. Приходится буквально вбивать ей в голову правило: если игрок бьет, ты сначала обязана изменить состояние мира в движке, и только потом открывать рот.
В общем, после тонны таких правок, споров с ИИ и борьбы с бесконечными пожарами, мы наконец упаковали текущую версию в играбельный билд (v0.1.7-alpha) и выложили на itch:
Переоформил я недавно свой профиль. Ой, как же мне он нравится XD
Кому интересно пощупать, как это играется вживую — заходите, качайте. Предупреждаю сразу: игра работает от внешних API-моделей (лучше всего скармливать ей DeepSeek или Qwen), так что в настройках надо будет вбить свой ключ.
Если кто-то тоже пытался заставить LLM стабильно вызывать функции без пустой болтовни — делитесь в комментах, какими костылями лечили.
Всем привет! Продолжаю делиться разработкой своей игры Arcforge.
Под предыдущими постами мне неоднократно писали, что по трейлеру сложно понять, как игра выглядит на самом деле. Где-то камера красиво пролетает над локацией, где-то несколько секунд боёвки, а что происходит между этими моментами — непонятно.
Поэтому решил записать целый час настоящего геймплея, без комментариев и попыток спрятать недостатки за монтажом.
Для тех, кто впервые слышит об игре: Arcforge — кооперативная Action RPG про магов, которую я разрабатываю уже около восьми месяцев. В ней можно сражаться с различными противниками, комбинировать магические способности, покупать новые книги заклинаний, исследовать мир и проходить боссов вместе с друзьями.
Что есть в часовом видео:
Первые задания и знакомство с игровым миром.
Бои с противниками и волны гоблинов.
Первый полноценный босс-файт.
Покупка новой магической книги.
Сражение со вторым боссом.
Использование способности полёта феникса.
Конечно, проект ещё далёк от идеала. Есть недоработки в анимациях, эффектах, балансе и других механиках. Сейчас активно занимаюсь исправлениями и подготовкой демоверсии для Steam.
Мне особенно интересно услышать мнение со стороны. Не только о графике, но и о самом игровом процессе: насколько интересно выглядят сражения, не кажется ли мир пустым, хочется ли продолжать играть после первого босса?
Всем привет! Продолжаю рассказывать о разработке своей кооперативной Action RPG Arcforge.
За последнее время в игре накопилось довольно много изменений. Я постепенно дорабатываю боевую систему, улучшаю анимации и заменяю некоторые старые модели. Но сегодня хочу показать не очередного противника или заклинание, а то, с чем игрок сталкивается ещё до начала самой игры — главное меню.
Почему решил переделать менюшку?
Раньше всё было довольно просто: обычная 2D-картинка на фоне, поверх которой располагался интерфейс.
В принципе, такой вариант вполне рабочий. Он не требует особых ресурсов, быстро загружается и выполняет свою задачу. Игрок заходит, выбирает нужные настройки, подключается к друзьям и отправляется играть.
Но со временем я понял, что это выглядит слишком скучно. Особенно на фоне того, как постепенно меняется сама игра.
Хотелось, чтобы уже при запуске Arcforge игрок попадал в атмосферу фэнтезийного мира, а не просто видел статичную картинку с кнопками.
Вот как лобби выглядело раньше:
1/2
Вместо картинки — полноценная 3D-сцена
В итоге решил отказаться от старого подхода и сделать настоящее трёхмерное окружение.
Теперь вместо обычного изображения в лобби используется полноценная 3D-локация. И, на мой взгляд, разница получилась весьма ощутимой.
А вот что получилось теперь:
1/3
Конечно, такой подход сложнее в реализации. Теперь приходится думать не только о расположении элементов интерфейса, но и о самой сцене, камере, освещении и производительности.
Но мне кажется, что результат того стоит. Всё-таки хочется, чтобы игра выглядела цельно, начиная с главного меню и заканчивая битвами с боссами.
Параллельно переделываю персонажа
И это далеко не единственное визуальное изменение.
Сейчас я постепенно внедряю в Arcforge новую модель главного персонажа — мага.
Со старой моделью и анимациями накопилось немало проблем, поэтому решил основательно заняться этим вопросом.
Для новой модели уже работаю над ригом, костями пальцев, весами и анимациями применения магии. Особенно хочется сделать более выразительные движения при использовании заклинаний, чтобы персонаж не просто стоял и выпускал снаряды, а действительно выглядел как маг.
Сейчас всё это ещё находится в разработке. Впереди немало работы с анимациями, но первые шаги уже сделаны.
Что дальше?
Продолжаю постепенно приводить игру к тому состоянию, которое хотелось бы увидеть в финальной версии.
В планах — дальнейшая работа над анимациями, новыми противниками, боевой системой и визуальной составляющей.
На самом деле приятно иногда отвлекаться от исправления багов и заниматься вещами, после которых можно просто запустить игру и увидеть, насколько она изменилась.
А теперь интересно ваше мнение: как вам идея с полноценным 3D-лобби вместо обычной картинки? Стоит ли уделять таким деталям больше внимания или лучше сосредоточиться исключительно на геймплее?
Как обычно, буду рад конструктивной критике. Многие замечания из прошлых публикаций уже помогают мне улучшать Arcforge.
Если впервые слышите об игре, Arcforge — кооперативная Action RPG с магией, комбинациями заклинаний, боссами и исследованием фэнтезийного мира.
«Война. Война никогда не меняется. В 1962 году Карибский кризис не разрешился мирным путём. Отказываясь принять американские условия урегулирования кризиса, СССР начал мобилизацию и активизацию военной промышленности. Согласно ультиматуму, американцы начинают бомбардировки советских ракетных позиций на Кубе; в ответ советские ракетчики наносят три ядерных удара по территории США. Начинается полномасштабная ядерная война, в которую включается и Европа. К 15 ноября 1962 г. инфраструктура ведущих европейских держав, а также двух ядерных гигантов, США и СССР, полностью разрушена. Тотальное заражение местности, уничтожение запасов продовольствия, гибель огромного числа людей... продолжение войны невозможно. Конец человеческого мира не произошёл только потому, что Советский Союз был к этому готов, создав огромную сеть подземных бомбоубежищ и бункеров, где можно было жить, развивать науку и промышленность, а также возвращать в мир светлые идеи коммунизма...»
В 2012 году состоялся анонс российского Fallout, или российского Fallout + S.T.A.L.K.E.R., от украинских разработчиков Best Way (известных по стратегической серии «В тылу врага») и от российского разработчика-издателя 1С-СофтКлаб (ныне просто СофтКлаб). Соответственно, новость об игре стала гулять по просторам интернета будоража всех геймеров. Я к тому времени прошёл и Fallout 3, и Fallout: New Vegas и просил добавки, поэтому жадно принялся рассматривать скриншоты «Нового Союза» и читать информацию об игре, как только она попала в моё инфополе. И всё увиденное внушало уверенность, что мы получим отличный action-RPG в открытом мире с советским колоритом. За сценарий отвечал Александр Зорич, который на самом деле не Александр и не Зорич, но кто знает – тот знает. Не читал ни одну из его книг, но люди хвалят. Не так давно я узнал, что к созданию мира игры в сценарном плане был также привлечён историк и блогер Клим Жуков. Итогом стало то, что «Новый Союз» оказался максимально приближенным к реальности, где все явления объяснялись с научной точки зрения, без примеси «волшебства».
К сожалению, в 2014 году издатель 1С-СофтКлаб отменил игру, оставив разработчиков ни с чем. Разумеется, игра была ещё далека от завершения, но некую альфа-версию журналистам уже показали, и основные концепции сформированы. «Новый Союз» сначала заморозили, потом попытались найти для него нового издателя и дополнительное финансирование, однако, как мы понимаем, проект потерпел крах.
Собрав всю имеющуюся информацию о проекте, мне хотелось бы проанализировать, а на самом ли деле «советский постап» получился бы дельной игрой, дойди он до релиза?
Миру мир!
Немного слов о мире игры. К сожалению, одной ядерной войной все беды не закончились. После суровой ядерной зимы арктические льды приказали долго жить, затопив почти всю Евразию (Китай, Япония).
Однако те страны, что уцелели, например Испания, вошли в союз, став советскими республиками. Из-за отсутствия авиации, мореплавания и связи контакты с США полностью прекратились, в результате чего сложилось мнение, что извечный враг сгинул, хотя это не так. Сохранились отношения с Кубой, куда граждане добираются на специальных дирижаблях, подпитываемых особыми двигателями, основанными на подчинённых аномалиях.
Однако враг в этом мире остался, и враг безжалостный – мутанты. Против сумрачных порождений радиации ведётся беспощадная борьба с привлечением танков. Любопытно, что в игре мутации объясняются «пробуждением» животных генов. Человеческий геном совпадает с геномом разнообразных животных, и под воздействием радиации стали появляться человек-амфибия, человек-скат и даже человек-паук, умеющий плести паутину, но более уродливый. Скорее всего, в игре бы мы встретили и другие варианты всяких разных «человеков».
Но самый главный человек – это протагонист игры. Александр Лаврин в 1962 году участвовал в бомбардировках США после того, как они нанесли удар по Кубе. Как же он дожил до 2012 (время действия игры) без единой морщинки? Здесь, конечно, обошлось без шикарной косметики от Maybelline с оздоравливающими частичками гамма-излучения, но не обошлось без хитрой временной аномалии. Сюжетный твист схож с тем, что мы видели в начале Fallout 4, только вместо заморозки в «Новом Союзе» Лаврину помогла временная аномалия, через которую герой переместился из 1962 в 2012. Попав в разрушенный мир, освобождённый от власти капитала, он тем не менее не потерял родину.
Что же представляет собой родина? СССР и в 2012 сохранился, перетерпев некоторые изменения. Теперь вся жизнь кипела под землёй, в гигантских городах-бункерах, где так же стояли заводы и велось бурное производство стахановскими методами и, без сомнения, обязательными пятилетними планами. Столицей нового СССР оказался подземный город Победоград, в который должен попасть главный герой и отчитаться перед начальством об успешном выполнении задания... пятьдесят лет назад.
Факты об игре
Постъядерный пятачок
Хотя заявлено, что нас ждёт исследование масштабных территорий, множество нелинейных заданий и знакомство с разнообразными группировками, реальность оказывается более прозаичной. По факту в игре должно было быть несколько десятков локаций и НЕ бесшовный мир. Меня пугает данное заявление от разработчиков. Нет, и Fallout не был полностью бесшовным, ведь там нужно было переходить в некие «подземелья» как отдельные локации, но вот основная карта была именно что бесшовной. Как бы «Новый Союз» весь не состоял из этих отдельных подземелий-локаций и малой толики открытого мира. Опасения подтверждаются тем, что в игре не ожидалось сменяемости дня и ночи в реальном времени, только при переходе между локациями.
Так же как и в Fallout, и в STALKER, покататься на машинках нам бы не дали, зато герой получал силу быстрого перемещения в уже открытые локации.
Ещё огорчал тот факт, что в мире игры не ожидалось фракций. Главный герой мог встречать бандитов, военных и прочих диссидентов, но, похоже, вступить в их партию или хотя бы профсоюз не было возможности.
Я не узнаю вас в гриме
К сожалению, разработчики не хотели нас порадовать известными историческими личностями. Была отсылка к Хрущёву (его мавзолей есть в игре), но и всё. Почему так? Отвечая на вопрос журналиста, тестировавшего игру, директор студии заявил, что, например, у Брежнева есть живые родственники, и отсылки к нему могут дорого обойтись студии.
Подарки природы
Аномалии однозначно планировались как одна из фишек игры. Мало того что их пагубный эффект действовал и после выхода из аномалии (так что можно было откинуться в тот момент, когда вы уже расслабились), так ещё эти явления природы становились интерактивными, создавая пространственные головоломки. И да, в них можно было бы заманивать врагов. Конечно же, аномалии являются источником ценных артефактов – всё по заветам «Сталкера».
Одни джинсы на троих
Видимо, даже в новом СССР какие-то проблемы с производством нужного количества разнообразной одежды, ведь главный герой всегда будет ходить в одной кожаной куртке, без возможности поменять свою броню. Из интерактивного Саше подарят обвес на спине, на котором отображается оружие, экипированное в слоты быстрого доступа.
У лучших берём только лучшее
Боевая система порадовала бы поклонников Fallout, так как в «Новом Союзе» тоже планировалась активная пауза в бою, со специальными очками действий. Причём сохраняется зависимость от того, куда вы попадаете: при попадании в ноги пациент сильно замедлится, в руки – снизится точность, а если вы угодили в голову, то там будет самая «болючая вавка».
На вопрос журналиста о том, будет ли в игре ближний бой (перекаты, комбо), директор ответил прямо: «Мы думаем, возможно, ближний бой отменить вообще». И знаете, чем он это аргументировал? Это долго, сложно и, можно сделать вывод (собственный), – это дорого. Цитирую: «Ближний бой – это огромное количество анимации, и для врагов, и для героя. То есть сейчас у главного героя где-то 700–800 разных анимаций, а для того, чтобы сделать красивый ближний бой, понадобится ещё 400–500». Честно говоря, не представляю, как в такой игре можно взять и вырезать ближний бой. Теоретически да, но неужели игрок такой доходяга, что даже не сможет врезать прикладом подскочившему к нему мутанту или капиталисту?
На вопрос о мини-карте в игре директор ответил: «Радар? Нет, радар не планируем. А он нужен?». В альфа-версии героя вёл обычный компас, и я догадываюсь, насколько это неудобно.
Кузькина мать
Строить коммунизм в постъядерном 2012-м мы будем не столько серпом и молотом, сколько автоматами, пулемётами и гранатомётами – именно такое оружие нас точно ожидало бы в игре. Подразделяются смертоубийственные штучки только на лёгкое и тяжёлое. Будет присутствовать самопал, но всё в пределах реализма, а вот лазера, плазмоганов и прочего фантастического оружия в игре не ожидалось.
По поводу крафта. Здесь система не такая, как в Fallout, где из подручных материалов герой мог создавать оружие на любые случаи жизни. Крафтить ствол нельзя, но можно его улучшать. Кое-что всё-таки создавать можно, типа медикаментов, гранат (коктейль Молотова) и всяких подручных средств, используя рецепты. А рецепты, как мы знаем из многих ролевых игр, стоят денег или потраченного времени на их поиск. На этапе разработки рассматривалась идея по использованию артефактов для придания особых свойств оружию, я думаю, что это могли быть эффекты типа заморозки или поджигания или острого приступа отказаться от частной собственности.
Крафт зависел от интеллекта Сашки – напрямую определял бы результативность действия.
Каждому по потребностям
У главного героя должны были присутствовать некие параметры – это же всё-таки ролевая игра. Мы знаем о силе, ловкости, восприятии, интеллекте. С ростом уровня Александр открывает новые перки – боевые, исследовательские, разговорные. Я так понимаю, что при «левел апе» ему давали бы возможность выбрать какую-то способность из нескольких предложенных. В общем, всё как в Fallout. Изначально разработчики планировали дать каждому оружию свой уровень владения... то есть ограничение по уровню – пока не наберёшь столько-то опыта, то не возьмёшь в руки. Хорошо, что чуть позже они от такой чуши отказались.
Но всё перечисленное ещё не точно, так как даже на момент конца 2013 года, когда была представлена демонстрационная альфа-версия для журналистов, ролевая система переделывалась раз пять.
Интернационал
А в мире живут разные существа. Основными врагами выступали бы животные и животные-мутанты, а также разные злые люди. Видов врагов планировалось около двадцати. По поводу крупных врагов или боссов у разработчиков не было чёткого решения. Вроде и собирались ввести одного босса, но под сомнением, что он доживёт до релиза. Здесь тоже любопытная цитата: «Серьёзных боссов делать достаточно сложно, работы там непочатый край».
Однако что повергло меня в шок, так это наличие респавна врагов. Да, в игре разрабатывалась система для спавна разных противников на разных местах, что я считаю дурным тоном, а не поводом хвалиться. С другой стороны – та же Fallout 4 этим грешит.
Пятилетка за двадцать часов
Манчкин мог бы пройти «Новый Союз» за двадцать часов, но это только сюжетный квест. Для исследования и совершения побочных квестов уйдёт часов пятьдесят. Масштабы достаточно скромные по сравнению с тем же Fallout, но для пробы пера – более чем достаточно. Главное, было бы что исследовать.
Обидно то, что игра ожидалась чрезмерно линейной, так как принимать решения, совершать выбор между фракциями и влиять на судьбу мира разными методами нам практически не позволят. А ответ один: «Это достаточно сложно делать всё-таки».
Вывод
Скажу прямо – в гипотетическом успехе игры (если бы она вышла) я сомневаюсь. Слишком часто на протяжении интервью мы видим слова: сложно, долго, пока не знаем, переделывать. И слишком много ограничений накладывалось на action-RPG с открытым миром. У меня возникло впечатление, будто разработчики замахнулись на проект, который просто не смогли потянуть. Это пример не просто «Сталкера», но «Сталкера» с глубокими ролевыми элементами и проработанным сюжетом, что поднимает планку сложности многогранно. Скорее всего, закончилось бы тем, что после постоянных переносов «Новый Союз» выпустили бы где-то в 2016-м или 2017-м, после торжественного шествия Fallout 4, жутко бы облажались, и на этом всё. Игра бы получилась забагованной и жутко устаревшей. Однако не такого заслуживает прекрасная атмосфера советского постапокалипсиса – только взгляните на скриншоты.
1/4
Поэтому вынужден констатировать: наверное, хорошо, что «Новый Союз» так и не увидел свет, хотя и обидно за пустой труд огромного количества разработчиков и сценаристов. С другой стороны, зачем нам играть в жалкую пародию на Fallout, когда есть просто Fallout?
Продолжаю делиться новостями по проекту Venom's RP Azeroth. Давно не было новых постов, я был занят большим блоком, и вот, есть что показать.
С NPC можно говорить, языки учить, магию комбинировать, а погода влияет на геймплей. Играя в такую версию, все равно не покидало ощущение, что я играю в ММО. Мы так же бесконечно били болванчиков по заданиям, мы так же проходили буквально перед носом врагов благодаря радиусу агро, мы так же убивали десятки медведей в поисках пяти сердец. И я понял, нужно менять сам подход к тому, как этот мир функционирует. Больше всего в игре встречаем мы зверей, поэтому первыми под модернизацию попали они.
Сенсорика
И начать предлагаю с главного.
Зрение
Как устроено классическое зрение в игре? А никак, его попросту нет. Все мобы имеют скан 360 градусов вокруг себя. Погода, время суток, рельеф и т. д. совершенно никак не влияет. Единственное, что меняет радиус агро, это разница уровней и наличие или отсутствие стелса у игрока.
Как можно понять, это совершенно точно рушит любой отыгрыш, да и просто мир ощущается картонным. Как это исправить? Всё уже придумано, добавить лучи, которые будут определять, что же видят NPC.
Что же было сделано.
Базовая дальность и острота зрения
Базовая дальность зрения игрока, а именно подгрузка мобов, в обычном варианте около 100-150 ярдов. Я поднял эту планку до максимально возможной для сервера — 250. Это теперь наш предел, на который можно смотреть как игрокам, так и NPC.
Но, думаю, очевидно, что дать всем такой радиус было б ошибкой, поэтому каждому виду была присвоена своя острота зрения. Опирался где-то на лор, где-то на живую природу нашего мира. Орел или лев куда более дальнозоркий, чем краб или кабан.
Игроков тоже не обошло стороной, для примера стандарт для человека в ясный день можно заметить стоящего в полный рост человека примерно на расстоянии 180–200 ярдов. Кровавый эльф — до 230-250 ярдов. Опираясь на лор, это самая зрячая раса в игре. По крайней мере, из играбельных.
Думаю, уже и так очевидно, но упомяну, всем выданы корректные конусы зрения, согласно их биологическим особенностям. Подкрадывание сзади теперь работает для всех, но не у всех это получится, но об этом позже.
Погодные эффекты и барьеры
Если заметили, что я упомянул ясный день, молодцы.
Да, в зависимости от освещенности, погоды, тумана, времени суток и размера цели расстояние меняется.
Ночью оно сокращается для рас без ночного зрения примерно на 35%. Ночным эльфам, естественно, выдано полное ночное зрение, нежити тоже, так как их глаза давно функционируют на некротической энергии, также оркам ночь порежет зрение лишь на 20–25%. Среди животных это, очевидно, все кошачьи и т. д.
Разглядеть сложно, но на горизонте появился медведь, за счет ночного зрения кошки
Холмы, деревья, туман, непогода скрывают игрока от NPC, стелс стал доступен обычным классам, достаточно только быть внимательным и использовать окружение. Более того, для локаций с плохой освещённостью, типа того сумеречного леса, указаны свои параметры видимости, так что там, даже если в Элвинском лесу ясный день, видимость будет ограничена.
Ночью, в сильный ливень с туманом, удалось получить дальность видимости у человека около 65 ярдов. На фоне 200 днем это действительно заметно, а главное, выглядит естественно, за счет тумана и прокачанного рендера света.
Коров в ливень уже не видно
Размер имеет значение
Помимо освещенности и непогоды, как уже догадались, размер объекта тоже учитывается.
Для игрока это работает нативно, т. е. сам игрок на обычном мониторе гнома за 200 ярдов увидит с трудом. И чтобы имитировать это и для NPC, у них видимость прямо привязана к размеру модельки. Гнома они увидят сильно позже, чем человека, орка или таурена. Но есть лайфхак: если тот же таурен ляжет, его станет хуже видно, примерно как гнома. Т. е. расчет идет именно от видимой части модельки. Соответственно, зелья уменьшения и увеличения тоже работают.
Видеть не значит заметить
Можно было решить, что теперь при появлении на локации все агрессивные NPC сразу вас заметят и побегут отрывать вам лицо, но нет. Вас видят, но замечать вас начнут сильно позже. Как это работает: на границе зрения шанс заметить у рядового NPC около 1%, т. е. практически нулевой, но чем ближе вы к нему, тем выше шанс, что на вас обратят внимание. Причем шансы для разных рас разные. Скажем, ночных эльфов или тауренов животные подпустят ближе, чем человека или орка. А друида в форме зверя вообще могут принять за своего. Кривая внимания динамически зависит от действий игрока или NPC, его расы и текущего состояния, об этом подробнее тоже ниже. Итак, зрение у них теперь есть, но чего-то не хватает... Ах да, слуха!
Слух
Звук — это уровень в децибелах (дБ) на расстоянии 1 ярда от источника + частота (Гц). Нет, это не справка из Википедии, звук в игре теперь считается в децибелах и имеет частоту. Звук летит без потолка/ограничений по дальности, пока полностью не затухнет от дистанции (закон затухания −6 дБ на каждое удвоение расстояния), впитывания воздухом (ISO 9613-1), стен, дверей, рельефа и углов зданий. Ухо слышит звук, только если он выше фонового шума («тишины» локации) с учётом остроты слуха существа. Да, NPC теперь выданы уши, у каждой расы разная чувствительность. Краб слышит хуже, чем лев. У гуманоидов пока все слышат одинаково, но в будущем и это поправлю. Как же это работает на практике? У всех появился порог слышимости:
Уравнение Arrival > (QuietAt(listener) - Acuity), где QuietAt — фоновый шум места, Acuity — острота слуха (у кошек/волков +4...+6 дБ, у раков −6 дБ, у спящих −4 дБ).
Звук в игре не рассекает стены по прямой, он ходит так же, как ходит всё остальное, по пути. Если зверь стоит за углом здания, слышит он то, что дошло вокруг угла, а не сквозь стену. На ослабление влияет всё, что звук встретил:
Двери и преграды на пути;
Комнаты и помещения: закрытое помещение гасит звук, открытое нет;
Ввода;
Повороты. Чем больше крутишь, тем меньше доходит.
Важна и частота. Низкий звук проходит преграды лучше высокого, поэтому шаги и шёпот ведут себя по-разному. Стоишь за стеной таверны и тихо говоришь с товарищем, и зверь снаружи тебя не услышит, а вот шаги ещё можно уловить.
На границе слуха слово доходит обрывками. Понять, что кто-то говорит, можно, а о чём именно, нет.
Что же создает звук?
Базовые типы
Шаги/бег (зависят от походки, типа доспехов, маунта, размера);
Шёпот (40 дБ), обычная речь (60 дБ), громкая речь (72 дБ), крик (85 дБ) (да, теперь волк услышит, если вы закричите или будете говорить с товарищем). Ах да, крики воина — тоже крики, а не безвредный бафф. Когда и где кричать, нужно учитывать;
Шум драки (растёт на +0.25 за каждого участника). Чем больше потасовка, тем больше внимания она привлечёт;
Реальные физические параметры выстрелов (~130 дБ) и взрывов (~150 дБ). Да, взрыв динамита, зов инфернала или выстрелы из ружья теперь имеют последствия;
Звуки заклинаний. Причем важен тип заклинания, фаерболл громче, чем фростболл. Для примера. Что разделено по логике, что-то по типу. Звук есть как и от каста, так и от точки попадания, NPC отлично слышат, что и где произошло.
Ну и, естественно, звуки самих животных. Рык, вой и т. д.
Фоновый шум
Для корректной работы звука в разных условиях разному окружению был добавлен разный фоновый шум.
Например:
Поле ночью: 25–30 дБ
Лес днем: 40 дБ
Деревня / Город: 45–50 дБ
Погода: дождь, снегопад, шторм не срезают дистанцию звука искусственно, а поднимают фоновый шум местности (например, сильный дождь = 55 дБ), из-за чего тихие звуки в нем естественным образом тонут.
Фоновый шум меняется динамически от местности, времени суток, погоды, как уже стало понятно из списка выше. Также внутри помещений на открытом пространстве он различается. Вы будете спокойно слышать в пещере спокойную речь (/s) товарища на куда большем расстоянии, чем в городе или в лесу. И да, теперь, если вы слышите речь на границе слуха, то это не есть текст в чате или нет, а именно обрывки фраз. Т. е. понять, что что-то говорят, можно, но сложно. Итак, звери нас слышат и видят, что же осталось? Верно, нюх!
Обоняние
Тут всё просто. Велосипед изобретать не стал, в игре нет понятия ветра, пока я отбитый, может и появится, но сейчас запах распространяется просто по кругу. Я думал, чтобы заставить пахнуть всех, но понял, что это, во-первых, перегрузит игру. А во-вторых, игроку будет крайне непонятно, почему его замечают звери, так как запах очень сложно объяснить интерфейсом. НО, может быть, в будущем... Сейчас же пахнут две вещи. Трупы и кровоточащие раны. Да, если у вас открытое кровотечение, то шанс, что на вас обратит внимание хищник, выше. А трупы... Чем дольше лежат, тем больше радиус, и тем выше шанс, что его заметит хищник... А зачем NPC замечать труп? И вот тут мы переходим к самому вкусному.
В мире животных
И так. У животных теперь есть зрение, слух и обоняние. И что им с ними делать? Гулять по заданному квадрату, нападать на всех, кого увидит? Нет, это поведение мобов с радиусом агро из какой-то ММО. Пора вдохнуть жизнь в этот мир.
Живой мир активен только в радиусе 300 ярдов вокруг живых игроков. Вне этой зоны звери ведут себя как в стандартной игре. Вынужденная мера из-за особенностей движка. Вдали от игрока мобы просто отключены для экономии ресурсов. Но если учесть, что максимальная дальность зрения 250 в идеальных условиях... Тесты показали, что 300 ярдов хватает с головой.
Насекомые — тоже питаются мясом, от хищников отличаются отсутствием приоритетов. Ребята отбитые, готовы сожрать кого угодно.
Травоядные — жертвы природы и моей экосистемы;
Далее каждая категория уже дополнительно делится на:
Стайные — сбиваются в группы, вместе охотятся, заботятся друг о друге;
Одиночки — живут свою лучшую жизнь в гордом одиночестве;
Каннибалы — могут есть своих сородичей;
Ночные или дневные — когда идет максимальная активность вида;
Домашние или дикие - влияет на то, где обитает и кого боится;
Прайд львов на отдыхе
Отдыхающий медведь
Также каждому животному выданы параметры личной пугливости, травоядные более пугливые, и хищники менее, а также голода. И вот мы подобрались к основным механикам.
Охота
Хищники теперь умеют охотиться. И нет, они не просто нападают на мимо проходящих оленей и не грызут мышей. Как это было в оригинальной игре. Они могут гулять по огромной территории, обычно от половины до трети средней локации. Переходить в соседние локации, ориентируясь на новые органы чувств, они ищут, чем заняться. Сытые хищники будут отдыхать, спать, сидеть или просто гулять по округе. Но голодные будут искать жертву. Цель животных теперь — выжить.
При встрече с другими животными, NPC или игроком бросаются кубики действия.
Результат может быть один из трех. Агрессия, бегство или игнорирование. И в зависимости от состояния зверя шанс смещается в одну или другую сторону. Сытый зверь с большей вероятностью или проигнорирует, или убежит. Ему нет цели сражаться. Даже если игрок его атакует первым. Животное оценивает размеры цели, ее уровень, ее состояние, свое состояние. Скажем, раненный на 5% игрок или другой хищник, истекающий кровью, будут восприниматься как легкая добыча. Тогда как полностью здоровая цель, представляющая опасность, — нет. И все это вместе формирует новое поведение.
Звери заняты своим делом, если их не трогать и они не тронут
Система привязки к конкретной точке тоже убрана. Теперь, если зверь решит, что не прочь вами перекусить, будет гнаться за вами, несмотря на расстояние, пока не устанет. И даже потом не «улетит» на стартовую позицию, а останется там, куда добежал, и продолжит жить там или пойдет домой, оставаясь доступным для атаки.
Более того, звери запоминают, кто их обидел. И если, скажем, вы убили члена прайда львов, а потом вновь появились в поле зрения этого прайда, то с большой вероятностью они на вас нападут. И да, стаи, прайды и иные сборища социальных животных теперь действуют сообща. Они охраняют сородичей, сообща охотятся, защищают спящих и т. д.
Вот так, например, охотятся львы. Они предпочитают подкрадываться вне поля зрения жертвы. А что случилось во время второй демонстрации охоты, даже я не понял. Межвидовая конкуренция?
Помимо охоты, звери могут ходить на водопой или рыбачить, последнее могут не все. Скажем, медведи с этим отлично справляются.
Рыбачащий медведь
Системы агрессии теперь тоже две, есть режим охоты, где они будут пытаться загнать и убить цель для трапезы, и режим защиты территории. Скажем, если подойти к занятому поеданием добычи зверю, он зарычит и кинется на вас, но стоит отойти, как он вернется к своей туше. Зверю, у которого есть еда, нет смысла тратить силы на убийство кого-то, кто ему не мешает.
И да, это всё работает не только NPC — игрок, а также NPC — NPC. Животные пытаются отбить друг у друга добычу, дерутся за территорию. Гоняют друг друга ради пропитания (так уж устроена экосистема мира, что хищников там в разы больше, чем травоядных) и т. д.
Питание
Как уже стало понятно, животные научились есть, но что это значит для игрока.
Первое, у трупов появилось четыре стадии:
Свежий — обычный нетронутый труп;
Растерзанный — труп, который изрядно потрепали, из него пропадает часть лута, который можно съесть, а предметы получают повреждения;
Обглоданный — животные съели почти все мягкие ткани, такой труп уже нельзя лутать.
Съеден — по сути, трупа уже нет, труп исчезает;
Визуальное отображение стадий трупа
Второе, у животных есть чувство голода:
Сытый — зверь практически не реагирует на трупы и потенциальную еду, от опасности предпочитает убегать;
Голодный — зверь активно ищет пропитание, старается найти травоядных или свежие трупы, может решить, что игрок, который на него напал, неплохая еда;
Голодающий — зверь на грани смерти от голода. Страх почти полностью уступает чувству голода, может атаковать любого, кого посчитает съедобным;
У мёртвого тела есть запас прочности, и каждый укус зверя отнимает часть этого запаса. Величина укуса зверя рассчитывается исходя из его размера и размера тела.
Для примера, обычный голодный медведь за трапезу спокойно съест тело гнома, а вот трупом тауренка можно будет накормить несколько медведей или небольшой прайд львов.
Третье, у тел появился уровень свежести:
Свежий — только убитый, не успевший еще протухнуть;
Гниющий — над телом начинают роиться мухи, тело больше привлекает падальщиков, а также крыс или тараканов;
Гниющие трупы, можно увидеть летающих мух
Скорость гниения зависит от климата. В жарком оно проходит быстрее, чем в умеренном. В зимних же локациях гниение отсутствует.
В итоге получается цельная система. Звери могут загнать и убить добычу или найти уже убитую, например, игроком, и в случае голода начать ее есть. Тем самым оставляя для игрока меньше лута. С другой стороны, животные естественным образом очищают территорию от мертвых тел.
*В серии роликов ниже, представлен таймлапс работы экосистемы. Для большей наглядности, игровые сутки были установлены на один реальный час. От чего голод у животных наступал гораздо быстрее, а трупы гнили за минуты, разнося аромат по округе. В штатной игре, данные процессы займут часы реального времени
Я всего лишь убил пару десятков жителей деревни, а потом стал наблюдать, что будет происходить. В какой-то момент трупы начали гнить и привлекать полчища крыс
Важный момент. Звери также могут есть и игрока. В случае если тело игрока было растерзано, он уже не сможет воскреснуть, а его одежда получает сильные повреждения, вплоть до полного разрушения прочности. Дополнительно, в зависимости от размера игрока и размера едока, он может проглотить предмет, как надетый на игрока, так и лежащий в сумке. Причем это может быть что угодно. Шанс минимальный, но он есть. Чтобы вернуть предмет, придется выследить и убить зверя, который его съел. Также звери при поедании игрока будут есть либо его, либо то, что у него в сумках, если оно подходит им для пищи.
Скажем, собирали вы сердца медведей по заданию или просто нажарили кучу вкусных стейков, а вас растерзали голодные львы. Но, вернувшись к телу, обнаружите, что оно не тронуто, скорее всего, львы нашли у вас в запасах более вкусное мясо и полакомились им, не тронув саму тушку. Зверь может совмещать как поедание содержимого сумок, так и самого игрока. Но он всегда прекратит, когда насытится.
При этом лев никогда не съест ничего крупнее кольца или ожерелья с тела человека, а вот с тела гнома вполне может слопать и перчатки, и шлем. А тот же T-Rex из Кратера Унгоро спокойно проглотит целиком и таурена, оставив его без меча, нагрудника или штанов. Но, повторюсь, цель зверей не в том, чтобы съесть одежду игрока. Но мизерный шанс есть.
Для всех живых существ, включая гуманоидов, добавлены новые состояния:
Выброс адреналина — ускорение атаки и скорости бега. Может активизироваться при атаке у хищников или побеге. Работает у всех, у кого бьётся сердце;
Критические ранения — падают скорость бега и атаки. Существо получило серьезные повреждения. Появляется после выброса адреналина, который случается при сильном падении здоровья;
Предсмертная агония — отключается пассивное восстановление здоровья, открывается кровотечение, которое можно остановить только лечением;
Эти эффекты накладываются как на игроков, так и на всех живых NPC. А что ж с мертвыми и конструктами? Адреналина у них нет, как и предсмертной агонии, зато они получают «критические ранения». При битве с нежитью в какой-то момент ее атаки становятся медленнее, как и скорость бега. Сама она от полученных ран не умрет, но и выброса адреналина для финального броска или побега у нее тоже не будет. То же касается механизмов. Над драконами и демонами пока думаю.
Смерть от полученных ран в бою, он пытался вернуться к стае, но не успел
Что это дает? Во-первых, добавляет иммерсивности, раненные существа теперь действительно раненные. Они больше не могут бегать и прыгать, как раньше. Во-вторых, животные получили реальный шанс спастись, если все пошло не по плану, или, напротив, догнать раненную добычу. А сильно раненные звери, если не найдут пропитание, просто умирают, становясь едой для других.
А теперь немного о страхе. Зверя можно испугать. Скажем, громким звуком. Падение метеорита того же Инфернала или взрыв динамита способен распугать зверей вокруг. Крик, в целом, тоже может испугать. Охотник с ружьем теперь рискует распугать всю округу. Это можно использовать в своих целях. Скажем, отогнать стаю от тела или, напротив, погнать животных в деревню, и пока жители ими заняты, проникнуть на территорию незамеченным. Также зверей пугает смерть их сородичей. Животные, получившие много урона или один, но очень болезненный удар, могут убежать. Смерть или побег сородичей при атаке стаи сигнализирует остальным, что враг силен, и, возможно, лучше его оставить в покое.
Стая попыталась отогнать меня со своей территории, и как только я вышел за пределы, оставила меня в покое, но атака по сородичу, заставила из передумать, а его смерть передумать второй раз
А вот что действительно пугает, так это орущее дерево
Лут и мелкие правки баланса
Пару слов о переработанной системе лута. Может показаться, что теперь выполнять квесты станет значительно сложнее, ведь мало того, что нужно выбить какой-то крестовый предмет, еще и нужно зверя поймать и т.д. и вы будете и правы и нет. Теперь со зверей, и с гуманоидов, да и вообще со всех, шанс выпадения органов и частей тела 100%. Если нужно добыть три кабаних сердца, вам потребуется убить ровно трех кабанов. Клыки - тоже самое. Более того, все что может выпасть из зверя при убийстве и относится к его телу (кишки, глаза, клыки, перья, когти, мясо и т.д.) выпадает также со 100% вероятностью. Убив зверя вы получаете с него все, что возможно вообще выбить с этого животного.
Дополнительно, рассматриваю возможность увеличить количество выпадаемых предметов. Скажем, если выпадает глаз, то сразу два. Мяса, 5-10 или 15 шт с туши и т.д. Так как охота стала сложнее, и награда должна быть. Что бы обеспечить себя медвежатиной, должно быть достаточно загнать и убить одного медведя. Но это пока на тестировании.
Также исправлена логика массовой атаки. Так как у моделек NPC и игрока нет коллизии, они могут стоять друг в друге. Что приводит к некоторым условностям, когда игрока бьют 20 человек, они все могут стоять в одной модельке. Это сильно ломает погружение. Поэтому теперь бьющие рассредоточиваются вокруг цели. Причем один «танчит» ее, а остальные стараются держаться позади. Если же место вокруг цели закончено, то те, кому не хватило места, просто ожидают своей очереди, как только кто-то будет убит или убежит, его место сразу будет занято свежим бойцом. Это немного исправляет ситуацию с балансом, если сорвалась целая деревня, а также выглядит более корректно. Также дальнобойные ребята теперь стараются отходить, если к ним подходят.
Наглядная демонстрация, как разница в размерах влияет на количество одновременно атакующих и чем заняты остальные. Ну и бонусом, экосистема не спит, ворги пришли на запах крови и трупов
Экосистема вне зверей
Эта часть пока проработана очень поверхностно. Основные силы были брошены на проработку животных. Но вот что уже сделано:
Защита территории — гуманоиды и разумная нежить теперь охраняют свои границы от враждебных индивидов. Скажем, фермеры защищают свои поля и скот от хищников. Причем, если к ним приблизится игрок, они не бросятся в атаку, а вначале попросят уйти. Если же игрок их проигнорирует — атакуют;
Поддержка — в случае если кто-либо вступает в открытый конфликт с жителями поселения, на защиту выходят все, кто видит драку, в зависимости от своей смелости. Женщины чаще будут убегать и звать подмогу. Первыми в бой вступают стражники. Но и остальные мужики быстро присоединяются.
Распорядок дня — теперь в поселениях жители могут ходить спать, гулять в вечернее время. Собираться в тавернах и у костров и т. д. Это пока на очень ранней стадии, но частично работает. И да, если игрок потревожит тренера или торговца в момент отдыха, ему придется заплатить повышенную цену как компенсацию прерванного отдыха;
Запоминание обиды — если игрок или зверь напал на поселение, его отогнали, и он вернулся, то стража сразу бросится в атаку, и поднимется тревога. Так как враг, с которым уже был конфликт, вернулся. И чем больше убийств на счету, тем больше сил будет брошено;
Так как им также выданы слух и зрение, теперь можно это использовать в своих интересах. Выманивать NPC в уединенные места, где с ними расправляться без лишних глаз и ушей;
Настройка
Как и во всех предыдущих модулях. Этот так же можно полностью настроить под себя. Шансы охоты, страха, углы обзора, острота зрения, слуха и т.д. и т.п. Все константы и шансы задаются непосредственно в таблицах базы или в файле конфигурации.
Итоги
Если кто-то дошел до сюда, спасибо за внимание!
Я далеко не всё упомянул, планы по развитию той же экосистемы зверей также есть, как и экосистем других видов. Как минимум обязательно нужно закончить блок гуманоидов и нежити.
Сейчас мир игры ощущается уже куда живее. Периодически случаются разные события, вне зависимости от действий игрока. Банально, частенько можно увидеть, как те же мурлоки кошмарят местных воргов или две стаи грызутся за чью-то тушу. Этот блок отнял у меня порядочно времени, думаю, ближайшее время сосредоточусь на мелких задачах, чтобы немного передохнуть. Спойлер, появились мысли, как улучшить систему погоды, возможно, этим и займусь =)