Dwarfinator - Блог

Dwarfinator

Панк-рок для панк-орка

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

Выползая из хижин

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

Порк

А я тут продолжаю наполнять вторую часть первой сюжетной главы второстепенными персонажами. Встречайте - Порк! И нет, ко свинине он не имеет ровным счётом никакого отношения. Он орк. Он панк. В руке его то самое Мочило, которое унаследует Вильфред, а за спиной - Дрынчало, на котором он играет - что бы вы думали? - разумеется, панк-рок. Предназначение его в этом мире - передать гному топор, вольно или не очень. Ну и добавить пару штрихов образу орочьего племени. Помимо этого я планирую сделать из него первого представлителя ряда персонажей для одной новой геймплейной механики, но о ней я расскажу позже.

Хижины гоблинов

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

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

Столкновения танка

Некоторые из вас наверняка задумывались, зачем гному вообще нужен танк, или почему в жанре игры упоминается также side-scroll shooter. Ответ прост - помимо режима обороны от толп мобов в игре с момента самого раннего концепта запланирован также режим погони за теми же толпами, но уже удирающими со всех ног. Во времена прототипа со старой графикой, режим этот в каком-то виде даже присутствовал, но работа над ним с тех пор не велась.

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

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

Смена облика Вильфреда

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

Лесной Вильфред

Мысль постепенно переодевать главного героя по мере продвижения по сюжету была у меня уже давно, но оставалась скорее в разделе "было бы прикольно". Извлечь её на свет и реализовать меня заставила недавно написанная катсцена победы над Костоломом, в которой Вильфреду понадобился топор. Ну а если дать гному топор, он попросит и какой-нибудь брони. Так что во второй половине лесной локации Вильфред станет немного защищённее и опаснее даже без танка. Ну и заодно я немного обновил его основной облик - никаких кардинальных изменений, просто добавил чуть-чуть объёма. В целом это не помешало бы и ряду других персонажей и мобов, но дойдёт ли до них очередь - пока неизвестно. А вот Вильфреду, как главному герою, да к тому же, нарисованному аж 5 лет назад только-только взявшим перо от дешёвого маленького планшета мной, это явно было необходимо.

Сопляк

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

Соотношения сторон катсцен

И последний момент, касающийся разных соотношений сторон - катсцены. Ввиду двухмерности игрового пространства (а точнее, фиксированного направления камеры относительно него), просто расширять/сужать кадр было недостаточно. Оставался ещё простой вариант с чёрными полосами и фиксированного размера кадром, но это было бы слишком скучно. Поэтому я добавил в команды перемещения и телепортации актёров возможность привязки целевого положения к камере, да не фиксировано, а по якорю, позаимствовав идею последнего у RectTransform Unity. Таким образом, я получил возможность отправить актёра, к примеру, "в левый верхний угол экрана", "за правую границу" или "чуть правее и ниже центра", и адаптировал с её помощью существующие катсцены под любую ширину экрана - в качестве примера привожу скрины катсцены победы над циклопом с целой пачкой гоблинш разной степени мёртвости.

Соотношения сторон

Ну и следом за интерфейсом окна прогресса, к разным соотношениям сторон были адаптированы остальные элементы интерфейса и сам геймплей. Тут стоит остановиться поподробнее - изначальная концепция игры подразумевала фиксированное положение камеры, то есть поле боя занимало ровно столько, сколько вмещал в себя экран. И если все мобы спаунятся за правой его границей, то при соотношении сторон 4:3 до базы игрока им идти гораздо меньше, чем при 16:9. Во времена первого прототипа я компенсировал этот момент подстройкой скорости их перемещения, чтобы время достижения базы оставалось одинаковым в любом варианте.

Однако с реальной графикой оказалось, что при более "квадратных" соотношениях сторон база начинает занимать почти половину экрана, и разница в расстоянии от её края до границы экрана между самым узким и самым широким соотношением сторон достигает 4 раз! Простой подстройкой скорости такое не компенсировать. Так что теперь поле боя имеет фиксированный размер - под 21:9, а в более узких соотношениях сторон отображается только его часть, с возможностью перемещения камеры к его границам. Способов управления этим перемещением я изобрёл аж три с половиной, какой из них лучше - покажет только время и игроки, а пока что они переключаются из настроек.