Bomberlands — история разработки, отчёт за год и советы начинающим
Если ты доделал свою первую игру, значит с тобой что-то не так.
Именно эта фраза, прочитанная в одном из постов, впечаталась в мою память 2 или 3 года назад. И автор был прав. Начав делать свой первый прототип, большинство разработчиков бросают его на пол пути и берутся за следующий по разным причинам.
Несмотря на то, что это не первая игра которую я закончил, это именно та, с которой я начинал. Прошёл уже год с тех пор как я писал здесь о моём прототипе. Если вкратце, то я хотел реанимировать старых ламповых Minebombers. Перенести их в 3D и добавить сетевое взаимодействие. После той статьи мне крупно повезло:). Я получил не только несколько предложений о помощи, но и настоящих компаньонов:).
Сейчас оглядываясь на год назад понимаешь сколько ошибок было совершенно и времени потрачено впустую.
Этим я и хочу поделиться. Историей, ошибками, опытом.
Сразу прошу прощения за некоторую сумбурность.
По поводу авторских прав
Thank you for contacting us about this.
did u guys still working on games ?
No, unfortunately not at the moment. We started developing Mine Bombers II
as a hobby project but I could not find the time to write code while working
full time elsewhere.
if there any chance to made a parody on your awesome mine bombers,
Yes, you may create a Mine Bombers «clone»
but with a completely different name than Mine Bombers.
Also you would need to draw your own graphics, create
you own sounds and compose your own music etc. In
other words, you cannot copy them directly from
Mine Bombers. But I guess you would be recreating
everything anyway to upgrade them to todays standards.
Happy game developing
Regards,
Antti Haapakoski
Skitso Productions
Получив такое своеобразное благословения мы и приступили к разработке.
С чего начать? Диздок!
Сеттинг и герои
С этого всё должно начинаться. После отзывов о прототипе было ясно, что простого перенесения в 3D мало. Нужно создать свой сеттинг, добавить историю и РПГ-элементы и связать их с геймплеем, вынуждающим разносить уровень за уровнем, с помощью большого арсенала всевозможных бомб. Т.к. мы хотели сохранить безбашенность оригинала и добавить юмора, то идеальными героями стали бы миньоны. К сожалению, бренд был занят, так что мы решили создать своих. Т.к. мы вдохновлялись мультфильмами в стиле “Гадкий я”, то всё должно было бы выглядеть весьма органично. Фоновое противостояние “супергероев” и “суперзлодеев”, выливается в уничтожение подземной базы, на которой и живёт один из наших миньонов, после чего на него ложится ответственность за судьбу своих собратьев.
Так как база подземная, то за основу взяли кротов, наделив их хорошей долей мимишности. Так и появились кротаны:)
Много кротанов.
Так выглядят основные классы героев:
Сюжетная кампания и враги
Так как противостояние “супергероев” и “суперзлодеев” было фоновым, а Профессор Копатель после нападения пропал в неизвестном направлении, то нужно было придумать сюжетную кампанию и врагов. К счастью, это было не сложно. Разрушенная подземная лаборатория позволила органично заселить её всеми основными типами врагов: роботами, слизняками, каменными големами и даже зомби:)
Описание типов противников.
Охранная система баз профессора Копателя была основана на огромном суперкомпьютере, который управлял огромной армией специальных подземных роботов, неплохо вооруженных и бронированных. Система была отлично просчитана, но гибель Копателя и разрушение его базы не прошло бесследно: лишенный логической части компьютер, определил всех органических существ, как врагов и начал их уничтожение. Конечно, большая часть роботов поломалась или затерялась, но и те, что остались, представляют собой грозную силу — роботы не боятся огня, им не страшна биослизь, они способны открывать двери и даже пробивать ходы в камне. К счастью, хороший взрыв вполне способен вывести робота из строя, а электромагнитный импульс вообще выжигает им остатки мозгов, оставляя после себя простой кусок металла.
Как полагается всякому злому гению, профессор Копатель имел питомца – хомяка по кличке Бу. Когда тот умер от старости, профессор не завел себе нового, а начал опыты по оживлению. Естественно, опыты увенчались успехом и гигантский космический хомяк (выглядел он, правда, как обычный) ожил. Только вот штамм вируса остался в лаборатории и после разрушения базы вырвался на волю. И ладно бы он просто оживлял мертвых… То ли вирус мутировал, то ли для завершения воскрешения требовались еще какие-то действия, но оживленные мертвецы поднимались с ног безмозглыми бродячими останками, которые руководствуются простейшими инстинктами. Самый главный такой инстинкт — поиск еды. Получилось так, что основным источников белков, жиров и углеводов оказались выжившие миньоны профессора, поэтому зомби, которых можно исключительно сжечь или взорвать мощной бомбой, стали большой неприятностью. Единственный плюс зомби — абсолютная тупость и крайне медленное передвижение.
Песчаник – самая светлая порода. Эти големы медленны и слабы, а хрупкое тело легко поддается взрыву. Главное запомнить – все големы нечувствительны к огню (некоторые предполагают, что он их еще и лечит) и все големы могут прокладывать собственные тоннели.
Известняк куда прочнее песчаника и големы из него намного опаснее – они быстро передвигаются, больно бьют и их трудно убить. Старайтесь уничтожать их по одному и используйте мощную взрывчатку.
Мраморный голем очень прочный и очень сильный. Уничтожить его можно разве что ядерной бомбой или бомбой «Епископ». Но он такой медленный, что от этого голема проще убежать, чем пытаться его убить.
Големы из гранита – самые опасные противники, которые могут вам встретиться. Они быстры, прочны, а их атака легко убьет неподготовленного исследователя. Если вы увидели такого голема – старайтесь оставить его в стороне.
Первоначально протоплазма предназначалась для клонирования миньонов, но после эпической битвы она получила облучение радиацией и начала стремительно разрастаться. Время от времени, натыкаясь на очаги радиации, слизь получала новые мутации, что привело к появлению слизняков — тупых комков биомассы, с зачатками органов чувств. Эти слизняки совершенно игнорируют любую взрывчатку, зато очень боятся огня. Испепелить их сложно, но вот поджарить — очень легко. Самое главное — уничтожить сам источник, который все время будет порождать новых и новых слизней…
Основной геймплей и GUI
Ещё прототип выявил проблему с управлением. Слишком много оружия (около 20-ти видов), и всего 2 кнопки для их переключения. Да и откуда вообще у маленького кротана столько оружия в кармане? Хоть персонажи у нас и мультяшные, но окружение Hi-Tech. Поэтому было решено выпускать кротана на уровни только в специальном прокаченном экзоскелете, главной особенностью которого было наличие оружейного принтера, чтобы он мог быстро создавать любые бомбы на выбор из имеющихся материалов, а не носил их с собой. Так же были введены в игру и 6 типов материалов (металл, пластик, электроника, взрывчатка, топливо и уран) из которых можно было бы мастерить бомбы. Сами бомбы разделили на 6 групп по определённым признакам. А те, что сильно выделялись сделали классовыми. Да, тут нам и пригодилось дерево классов.
Краткое описание сеттинга и сюжета можно сформулировать так:
Битва между добром и злом, закончилась сокрушительным поражением последнего. Объединённые силы супергероев нанесли сокрушительный удар по логову суперзлодея. Его подземная база подверглась сильным разрушениям.
Вы – один из уцелевших, верных ему миньонов. Вы должны найти и спасти своих оставшихся в живых собратьев. Стать их новым защитником. В этом вам поможет один сохранившихся рабочих экзоскелетов МГЭ-ОП-14, в котором вы сможете очистить остатки базы от вырвавшихся на свободу чудовищных экспериментов своего хозяина.
Итак, восстановить базу и совершите возмездие!!!
Создание объектов и персонажей
Эта часть вряд ли будет для кого-то открытием, но всё-таки поясню как выглядит работа над 3D игрой. У вас есть список объектов которые вы хотите нарисовать. Сценарист и/или идейный вдохновитель, сбивая пальцы о клавиатуру в кровь и работая мышкой вплоть до износа кабеля питания, собирает рефы (картинки, фотографии или видео того на что должен быть похож объект) и отдаёт художнику. Конечно, можно и не искать, а ограничиться сухим описанием из двух слов, но тогда от художника можно ожидать чего угодно. В общем, помни, художник-телепат существо редкое, практически вымирающее, так что потрудись объяснить ему чего ты от него хочешь.
Художник рисует концепт, и показывает его тем кто художественных способностей лишён. После нескольких отправок на доработку за дело берётся моделлер. Хорошему моделлеру достаточно одного концепта. Менее опытному подавай и в фас и в профиль. Модель может быть хайполи или лоуполи. Соответственно высоко и низко полигональная. Причём, что интересно, хороший лоуполи моделлер зверь более редкий и ценный, чем хайполи. Кроме самой модели, он ещё должен её размапить (т.е. создать пустую текстуру-заготовку, что-то вроде выкройки для шитья) и отдать текстуровщику. Текстуровщик, естественно делает рабочую текстуру, чтобы модель была похожа на концепт арт (вдобавок может накинуть нормал, дамп, спекуляр и прочие мапы). Затем в идеале, модель передаётся риггеру, который создаёт риг, т.е. скелет модели, а зариганная модель передаётся в чуткие руки аниматора. В итоге, программист получает модель, текстуры, анимации и вставляет их в игру.
Итак, концепт-художник, хай- или лоу- поли моделлер, текстуровщик, риггер, аниматор. Как минимум 6 специалистов необходимы для создания арта для 3D игры. Конечно, некоторые задачи можно совместить и ограничиться только художником, моделлером и аниматором, но всё равно это много по сравнению с 2D играми, где можно обойтись всего лишь одним художником;) Примеры того как создавались наши персонажи заключены в спойлеры выше.
К счастью, нам повезло и с художником и с моделлером. Оба оказались профессионалами своего дела. А вот на аниматора денег не хватило. О чём я, конечно жалею. Но нам повезло, т.к. в наше поле зрения попал сервис Mixamo, который недавно был куплен Adobe. Советую его всем инди разработчикам по нескольким причинам. Во-первых, он позволяет покупать уже зариганные 3D модели персонажей. Во-вторых, анимации к ним. В-третьих, позволяет заливать свои модели с ригом, анимировать их на сайте и покупать полученные анимации (причём, такие параметры этих анимаций как скорость, размах рук, уровень положения рук и т.п. можно калибровать). В четвёртых, если у вас есть только модель, то можно попытаться воспользоваться авториггером Mixamo. Причём, он достаточно хорошо работает с гуманоидными моделями. К сожалению, гуманоидов среди наших персонажей мало, так что большинство ригов заказывали у фрилансера, но сам сервис показал себя с лучшей стороны.
К примеру, мы решили добавить небольшой рукопашный файтинг в нашу игру, при этом на создание анимаций и дерева поведения Mecanim ушло всего 2-3 дня, и то из-за обилия врагов.
Небольшой Совет. Про фейк скрин
Если у вас есть художник и проект не совсем уж примитивный, то потратьте несколько дней на создание фейк скрина, т.е. игрового псевдо экрана, чтобы все члены команды представляли себе конечный результат. Расположите там основные объекты окружения, героя, если получится то и интерфейс. Это сэкономит вам кучу времени в дальнейшем.
У нас он выглядел так:
А вот конечный результат
Классические ошибки. Лишние фишки, не вошедшие в игру.
Pixel-Art режим
Первоначально, была идея отображения миникарты уровня в виде старой доброй пиксель-арт карты, с возможностью переключения в 2D режим игры. Чтобы игроки уставшие от 3D наворотов могли насладиться олдскулом. Первоначально у нас как и в оригинале большую часть карты занимали различные скальные породы, которые нужно было бурить и взрывать.
4 породы отличающиеся по фактуре, цвету и прочности, и делящиеся по высоте на 3 типа.
Они вместе с остальными элементами были перерисованы в пиксель-арт стиле (на скрине, конечно, далеко не все игровые объекты).
Неплохо, но чего-то не хватает. Объёма, если быть точнее. Чтобы игроку было легче определять прочность блоков, мы к цвету и яркости добавили ещё разную по размеру фактуру и падающую тень разной длины. Т.е. высокие блоки давали самую высокую тень, при этом если она падала не на землю, а на блок средней или малой высоты, то её длина уменьшалась. При этом лучше всего смотрелась тень падающая по диагонали, а потому снизу и справа от неё могли быть камни разной высоты. В общем, вы понимаете, что к отрисовке нескольких тысяч спрайтов самой карты, добавлялась бы отрисовка ещё нескольких тысяч спрайтов теней, просчёт высоты соседних объектов и всё это отнимало бы кучу процессорного времени. Поэтому был разработан специальный шейдер, чтобы перенести все эти расчёты на GPU. В результате на основе текущей карты хранящейся в двумерном символьном массиве, создавалась текстура, подающаяся на вход шейдера, и дающая на выходе вот такое игровое поле. И всё это за один DC.
Для работы над эти пришлось задействовать пару фрилансеров (по пиксель-арту и написанию шейдеров). Вся эта красота отняла у меня почти месяц рабочего времени (может и больше, сейчас уже сложно вспомнить). Сюда входит составление ТЗ, отладка шейдеров, обсуждения, согласования и вставка всего этого в игру. Всё это отвечало оригинальной механике, где каждый объект занимал одну клетку.
Но затем, было решено украсить уровни различными декоративными элементами и добавить островную структуру. Перенести это адекватно в пиксель-арт было уже слишком затратно по времени и не гарантировало результата. Поэтому 2D режим можно будет увидеть только на определённых уровнях и в очень ограниченном режиме. Хотя кто знает, может быть удастся сделать ответвление исключительно в этом стиле:)
Серверная часть
На том же погорела и серверная часть. Первоначально серверная логика разрабатывалась для оригинальной механики. Более того. Она была закончена и готова уже была к нагрузочному тестированию, но после добавления декоративных элементов на уровни, на доработку серверной логики уже не осталось ресурсов. Пока же упор было решено сделать на одиночной игре, так что пвп у нас в полуготовом состоянии.
Базовая локация
Вместо банального GUI мы решили визуализировать его в виде базовой локации. Только вместо Нормандии из Масс Эффекта, мы оборудовали подземную лабораторию. При клике на какой-нибудь прибор камера перемещалась к экрану с соответствующим интерфейсом. Не то чтобы это было совсем зря, но на это ушло около месяца работы всей команды.
Неизбежное зло. Интерфейсы.
Лучший интерфейс – отсутствие интерфейса. К сожалению в нашем случае это было нереализуемо. Поэтому работа над интерфейсами заняла месяцы и это не шутка. Месяцы разработки и внедрения. Рутинная работа требующая только усидчивости и концентрации внимания, которой не избежать.
Неожиданное открытие. Проект менеджмент – это и вправду работа.
Руководство работой команды разработчиков это и вправду труд, который отнимает всё рабочее время. Если бы у меня была возможность вернуться на год назад, то я либо нашёл бы программиста вместо себя, либо кого-нибудь на место проект-менеджера (вероятнее всего матёрого геймдизайнера). Не заблуждайтесь, что вы легко совместите работу программиста/художника/моделлера и менеджера. Она отнимет у вас кучу времени, и у вас не будет времени посмотреть на проект целиком. Конечно, у такого менеджера должен быть опыт в какой-то области, чтобы при необходимости он мог подстраховать своих коллег.
Ошибка или нет? Во все тяжкие.
Наполняя RPG часть нас понесло. Мы ведь рассчитывали не только на одиночную кампанию, но и на постоянные онлайн бои. А для этого надо было дать возможность хорошей прокачки игрокам. Кроме дерева классов, выбор профессии игроками открывал доступ к специальному оружию и скиллам.
3 класса, 6 подклассов, 19 скиллов.
Экзоскелет у нас условно состоял из 10 слотов под оборудования различного типа и уровня.
До пяти видов оборудования на слот, которое можно было не только купить в магазине, но и произвести на базе, после изучения соответствующей схемы.
Кроме того практически любое оборудование можно было усилить вставив в него модификатор.
Модификаторов, тоже немало, причём многие из них не просто увеличивают параметры, но и добавляют новые механики в игру.
Про оружие я уже говорил, около двух десятков оригинальных и на подходе ещё с десяток уже новых бомб (замораживающие, световые, магнитные и т.п. предназначенные для борьбы против наших мобов).
Вам всё ещё мало прокачки? Тогда для вас целая подземная база, из 15-ти типов помещений, каждое из которых можно прокачать до 5-го уровня. Здесь можно развить добычу и производство ресурсов, получить доступ к магазинам, режимам боёв, пвп, исследовать схемы оружия, оборудования и модификаторов.
Итого:
- 3 класса;
- 6 подклассов;
- 19 скиллов;
- 49 типов оборудования;
- 50 типов модификаторов;
- 75 типов модулей базы;
- 20 видов оружия.
Вопрос о том зря или не зря мы это реализовывали открыт и судить об этом пока рано, но то что реализация отняла кучу времени это факт.
Даже если ты ничего не умеешь, ты не бесполезен. Лишних людей не бывает.
Если у вас есть человек, который не умеет программировать, рисовать, моделлить или писать музыку, но хочет принимать участие в разработке, то это не беда. Пусть он займётся связями с общественностью. Пусть он из кустов, как настоящий папарацци, наблюдает за вашей работой вооружившись длиннофокусным объективом и фиксируя каждое ваше слово. Пусть он составляет отчёты для верных фанатов, о вашей текущей работе, публикует игровые скриншоты и ролики в ваших группах вконтакте, фэйсбуке, твиттере, и даже в инстаграмме. Выкладывает тестовые билды, собирает отзывы. Всем этим нужно заниматься на протяжении всей разработки, чтобы знать в нужном ли направлении вы идёте, но ни у кого нет на это времени. В условиях кадрового голода, каждая статья для вашей группы вконтакте отнимает ваше драгоценное время, а ведь фанаты это такие люди, которые хотят получать новости если не каждый день, то хотя бы каждую неделю. Одно время мы активно вели свою группу, и наш замечательный сценарист/левел дизайнер выпускал по паре постов в неделю, но сколько же времени у него на это ушло? В общем, каждому можно найти полезное занятие.
Совет на вырост. Конференции.
Конференции и различные джемы это не просто тусовки, но и место где можно получить множество отзывов от профессионалов в игровой области. Так что если у вас есть возможность, то участвуйте в них как можно чаще. Лично я из-за своего места жительства такой возможности лишён, но для столичных разработчиков это весомое конкурентное преимущество.
Суровая правда. Конец разработки – это только середина пути.
Продвижение и создание промоматериалов по трудозатратам не сильно уступает самой разработке. Создание рекламного ролика, игровых артов, описаний игры, рекламных объявлений, отзывов, рассылка и реклама по группам, отнимает кучу времени работы специалистов.
Нефть. Эффект бабочки.
Многое в нашей жизни происходит из-за эффекта бабочки.
… бабочка в Африке села на нос жирафу, жираф чихнул…
… испугал газель, газель впечаталась в носорога…
… а носорог вслепую вбежал в телефонную будку…
… каким-то образом позвонил в ОПЕК и сказал…
«Немедленно увеличивайте добычу!»
… цена на нефть падает
… а доллар по отношению к рублю растёт вдвое
и вот мы смотрим как наш бюджет сжимается не хуже шагреневой кожи.
Вывод: если уж вы рассчитываете бюджет в рублях, то и договаривайтесь об оплате со всеми с кем можете в рублях, а валютные статьи расходов закладывайте с запасом.
Генерация контента. Оправдана ли ставка на игрока?
В оригинале был отличный редактор карт. Простой, понятный, эффективный. Так что ещё в прототипе годичной давности аналогичный редактор карт присутствовал. Была даже возможность загружать собственные карты на сервер в общий доступ и обмениваться ими. Ставка была сделана, на то что игроки смогут сами наполнять игровой контент. Создавать свои интересные уровни, обмениваться ими и т.п. Это было несложно и окупало себя быстротой разработки уровней. Однако, если обычный игровой блок занимал ровно одну клетку, был стандартного размера и его легко было закодировать одним символом в двухмерном массиве, то с добавлением декоративных объектов ситуация изменилась. Их можно было устанавливать в любой точке, в любом количестве, менять их размер и поворот, они могли перекрывать друг друга, могли взаимодействовать с игроком или нет. К этому можно добавить различные сценарные объекты, вроде квестовых триггеров, точек генерации мобов и ресурсов и т.д. Всё это нужно было внести в редактор, отрендерить объекты для иконок (а это несколько сот объектов), поддерживать постоянную возможность загрузки карт на сервер. Вместе с полной сериализацией всего окружения, редактор отнял в итоге ещё месяц-два. Конечно, нашему левел дизайнеру редактор очень пригодился. При этом не было необходимости изучать сам Unity. Плюс система всё-таки работает. Он может легко отредактировать текущую сценарную карт и обновить её на сервере, или сохранить локально и сразу пройти её без внесения изменений в билд. С другой стороны, получившийся в результате редактор несколько монструозен. Обучив левел дизайнера основам работы с Unity, можно было бы также создавать новые уровни без собственного редактора. Их было бы сложнее тестировать, они больше бы весили, но выбор инструментов был бы шире. Стало бы доступно запекание освещения, тонкая настройка эффектов и многое другое. Опять же впоследствии сериализовать все эти данные целиком было даже проще, хотя карты стали бы больше весить и у игроков не было бы доступа к редактору.
Выводы в общем-то неудивительны: усложнение игровой механики, а фактически смена парадигмы разработки, повлекло за собой усложнение сопутствующей инфраструктуры. И хотя у игроков всё ещё есть возможность создавать собственный контент, но из-за повышения трудоёмкости процесса, рассчитывать на большое количество таких игроков не приходится. Редактор вероятно останется, просто штатным средством разработки.
Было ли всё этой ошибкой? Конечно, нет. Но если бы мы сразу выбрали другой путь, то результат мог быть не хуже.
Так оправдана ли ставка на игрока? Тут всё зависит исключительно от самого проекта. Ваш К.о.
Что-то статья получилась слишком объёмной, а я ведь даже толком не рассказал о технической части. Похоже придётся прерваться. В следующей части я расскажу о собственно технической стороне разработки на Unity. Если есть ещё какие-то вопросы, то оставляйте их в комментариях, на короткие отвечу сразу, остальные постараюсь осветить в следующей статье.
P.S. Т.к. денег на маркетинг у нас не осталось, то единственное, что может спасти наш проект — это гринлайт.
Собственно вот ролик для него: