Pull to refresh

Опыт написания 2D MOBA-платформера за несколько дней

Reading time 5 min
Views 34K


Все началось с того, что на глаза случайно попался конкурс от NextCastle Party, где предлагалось в строго ограниченные сроки (тема была объявлена за неделю) создать игру.

Условием была обязательная возможность играть с живыми игроками за одним компьютером (не важно, pvp или кооператив, синхрон или асинхрон). А так же были ограничения по платформам — необходимо, чтобы игра шла в браузере.

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

Идея и концепт


Первое, что надо было решить — это что именно делать. Делать нечто пошаговое совсем не хотелось, да и в игре на ум слишком важен будет баланс. Балансировать интересную стратегию в условиях ограниченного времени мы не рискнули. Так что остаются аркадные жанры. Из аркад (спасибо HuG'у и его летсплеям — первое, что пришло на ум — это платформер Spelunky).

Также, в условиях конкурса было сказано, что особо будет ценна киберспортивность игры. Что первое приходит на ум при слове «киберспорт»? Мы сразу подумали про Dota / LoL.

Ок, вот вам и концепт. 2D-платформер + MOBA. Да, мы знаем, что есть Awesomenauts. Но никто из нас в них не играл, и специально не стали смотреть, чтобы не быть заложниками чужих идей.

Предварительный геймдизайн


Ок, делаем Доту в 2D. Но ведь в Доту играют 5х5, в Awesomenauts 3x3, а у нас всего 1х1. Ясно, что лайн с башнями и крипами должен быть тоже 1. Но как быть с фармом? И при чем тут платформер?

Подумав, мы довольно быстро пришли к следующему концепту: верхняя часть экрана отдана под фарм, а в нижней части — непосредственно идут волны крипов и стоят башни. Какой фарм обычно бывает в платформере? Сбор монеток. Ок, так и сделаем.

Собственно, весь концепт довольно быстро перенесся на бумагу:


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

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

Арт


С артом долго не думали. Что любят все и можно нарисовать быстро? Pixel art! В процессе раздумий нам пришла в голову идея сделать что-то с прикольными животными. Пускай у нас сражаются хомяки или что-то такое… Дальше все было отдано на откуп художнику (treety). Так что вся заслуга дизайна — его.

Он придумал разных квадратных зайцев.



После того, как выбрали самого крутого зайца, он быстро нарисовал различные анимации. Прыжки, стрельбу… А также — миньонов. Он тоже стали зайцами, но поменьше (тот, что повыше — рэнжевик, тот что совсем мелкий — милишник).



Собственно, называние тоже придумалось сразу — «Rabbit must die».

Чтобы фарм монеток не казался малиной, добавили нейтральных монстров, которые по началу убивают с 1 удара.



Платформа разработки и кодинг


С платформой определились сразу же. Собственно, выбор тут не велик — Flash, HTML5 и Unity. Т.к. от первого давно ушли, второе почти не знаем, а опыта больше всего именно в Unity — то его и выбрали.

Правда, с 2D пришлось воспользоваться сторонней библиотекой (ex2D), т.к. новая версия юнити (4.3) с полноценной поддержкой 2D еще не вышла… Ну да ладно, опыт использования ex2D уже есть (как и сама библиотека куплена), да и разбираться с новой 4.3 все равно не было бы времени.

В принципе, все закодилось (в 4 руки) довольно быстро (большое спасибо моему другу и второму программисту — Dartius). Единственное, что у нас абсолютно не было опыта создания платформеров, то пришлось словить пару граблей.

С самого начала мы кинулись писать все сами. Но потом подумали «а в юнити же есть физика!». И начали пробовать юзать физику. Но через пару часов мы поняли, что оно нам не очень подходит (ну, или руки у нас кривые). Персонажи то и дело пытались скатиться вбок, зацепиться за что-нибудь и т.п. Так что вернулись обратно к самописному велосипеду.

И знаете что оказалось самым сложным? Лестницы!!!



Персонаж постоянно за них цеплялся, не хотел спрыгивать или наоборот — падал… Признаться, мы так и не успели сделать хорошую механику лестниц. Но по крайней мере, при определенном умении — можно научиться ими пользоваться. Главное — побольше прыгать :)

Сделали даже зацепы за края а-ля Spelunky.

Оставалось немного. Сделать башни, крипов и апгрейды. Над апгрейдами много не думали — скорость бега, дамага, HP и armor. Правда, потом мы поняли что не хотим париться с армором и здоровьем, так что первый упразднили и заменили на дальность выстрела.

А запустив первый раз крипов — мы испытали просто-таки колоссальное удовольствие!!! Это было очень забавно — смотреть как они что-то пытаются сделать. Прыгают, кидают что-то во врагов… Вроде, и знаешь, почему они себя так ведут (ведь сам писал логику) — но все равно — смотреть за ними было очень забавно.



Звук


Пиксельарту нужен 8-битный звук, это очевидно. Много времени тратить на звук мы не могли, так что быстренько наклепали эффектов в онлайн-генераторе 8-битных звуков BFXR. Там все предельно понятно и просто. Даже если вы вообще полный профан в звуке — можно тыкать кнопочку «сгенерировать звук прыжка» пока не получится то, что вы хотите.

Первые плей-тесты


Самым волнительным было попробовать сыграть в первый раз. Ведь мы знали, что мы сможем написать «прыгать» и «стрелять». Но будет ли интересно в это играть??

Притащив к другу бутылочку виски и пару геймпадов, мы с волнением в сердце запустили игру…

И знаете? Удивительно, что даже первый баланс, который был написан абы как — уже работал! Да, были косяки, но играть было реально задорно и азартно.

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



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



Так что даже в таком маленьком проекте мы столкнулись с feature cut'ом.

Заключение


Что сказать? Нам очень понравилось! Играть действительно весело и задорно. Получились даже разные тактики (разные закупы). Например, купив ботинки — можно допрыгивать до мест с кучей монеток. Но в то же время ваш соперник может пойти в дамагу и начать уже пушить крипов.

Конечно, не хватило времени чтобы сделать платформинг идеальным. Да и баланс тестился только на нас. Но для столь короткого срока разработки — мы более чем довольны! Когда ты получаешь кучу удовольствия надерая зад второму программисту в свою же игру, или наоборот — хочешь отыграться — это бесценно!

Не знаю уж, каковы будут наши конкуренты… Посмотрим. Через неделю все узнаем. Тогда же организаторы и выложат игры в общий доступ.

Если кому-то интересны конкретные нюансы — спрашивайте. С удовольствием отвечу.

UPDATE: Пощупать игру в онлайне можно здесь.
Tags:
Hubs:
+41
Comments 13
Comments Comments 13

Articles