О нашей первой законченной игре Alien Box
Привет, жители Гамина! В этой статье я хотел бы вас познакомить с небольшой мобильной игрой, разработанной двумя белорусскими парнями, а также немного рассказать о сложностях, с которыми пришлось столкнуться при создании довольно простой, но главное — ПЕРВОЙ полноценной игры.
Началось все с того, что один парень по имени Денис увлекся рисованием в стиле пиксель-арт, а Максим (он же я), C# программист с однолетним стажем, а также автор блога о независимых играх, решил ознакомиться с движком для разработки игр UNITY. Однажды они решили скооперироваться, чтоб вместе шагнуть в увлекательный и волшебный мир геймдева. В то время, как Денис пачками генерировал идеи для потенциальных игр, рисуя при этом концепт за концептом, Максим их тщательно фильтровал, изучая попутно основы разработки на Unity. В итоге было решено для начала сделать незамысловатую и простую мобильную игру под Android.
Задумка
Задумано было сделать классический тайм-киллер на тему борьбы землян с инопланетянами. Вся идея заключалась в бесконечно падающих ящиках с инопланетными тварями, которые необходимо уничтожать, не дожидаясь их приземления. Основная цель — набрать как можно больше очков. Название было выбрано в соответствии с главным предметом игры — Alien Box.
Суровые будни инди-девелоперов
Заниматься игрой по понятным причинам приходилось в свободное от работы время, коего у каждого из нас было не так много. Графика рисовалась, код писался, но жизненные обстоятельства то и дело прерывали процесс. Например, однажды у Дениса сломался монитор, вследствие чего было потеряно около двух недель. Сложно сказать, сколько времени прошло до первой версии, которая максимально была приближена к финальной. Где-то около месяца или двух...
И тут начались косяки, первым из которых стала кривая графика на разных типах экранов. Как известно, пиксель арт требует повышенной точности отображения. Идеалом является отображение пиксель в пиксель. Перерисовывать пришлось много и многократно. На форумах толкового разъяснения, как же сделать картинку, которая бы не искажалась на экранах с разных разрешением, так и не было найдено. В итоге сработала поговорка "если долго мучиться...". Выходом стал спрайт максимально большого для мобильных устройств разрешения.
Unity, Unity... Почему же в тебе так плохо организована работа с текстом, — задавался вопросом Максим, настраивая расположение элементов с динамической текстовой информацией. Пункты меню были сразу нарисованы спрайтами, и это к лучшему, что я понял уже спустя некоторое время. Казалось бы, такая мелочь, настроить расположение элементов, однако и на это ушло неопределенное количество времени. Еще одна проблема заключалась в том, что скомпонованный Денисом интерфейс все равно приходилось раскомпоновывать и размещать каждый элемент по отдельности. Конечно, в итоге все было красиво настроено, но этот вопрос (в первую очередь для программиста) разработки игры остался открытым. Возможно, кто-нибудь из читателей поделится своим опытом создания меню на Unity.
Нетривиальная задача была поставлена перед Максимом, когда Денис, заметив частое кучкование и наслаивание падающих ящиков друг на друга, выразил неодобрение. По изначальному алгоритму они генерировались абсолютно случайным образом, позиции рандомно выбирались по оси X и так же рандомно выбирались временные интервалы их появления. Через три дня и эта недоработка была поправлена. В комментариях можем обсудить различные пути решения.
Финишная прямая
Тихоходный поезд цикла разработки игры наконец приблизился к конечной станции — Google Play. Но перед этим необходимо было "подрихтовать" некоторые части проекта. В частности подобрать звуки, внедрить рекламный блок, нарисовать лого, придумать название студии. Здесь особых сложностей не возникло, разве что с названием студии. И вот он — момент истины! Nearby Shore Studio из Беларуси дебютирует на игровом рынке с бесплатной мобильной игрой Alien Box, готовой развлечь вас в любую свободную минуту и дать возможность попытаться спасти Землю от недружелюбных инопланетян!
Страница игры в Google Play
- 19 июля 2014, 14:08
Поздравляю с почином:-) Я бы сказал, что для первого раза неплохо. Но геймплей, конечно, совсем никакущий. Ту-у-упенький.
Можно было б сделать быстрое увеличение количества ящиков, чтобы сессии были короткими. А так, я выключил, не дождавшись, когда сдохну. Онлайн таблицы рекордов не нашел, без неё смысла играть ваще нет. Геймплей такой вставлять по определению не может, а больше в игре ловить нечего. Пиксель-арт стандартный. Я бы сказал средненький. Художнику есть куда расти и расти много.
Спасибо за отзыв, Киви! Насчет онлайн-таблицы рекордов ты прав наверно. Постараемся сделать. Разработка и так затянулась на неприличное время, а внедрять дополнительные фичи можно бесконечно.
Прав-прав. Писькомерки обожаемы приматами, это же КОНКУРЕНЦИЯ И ИЕРАРХИЯ!
Ну ребята, я просто поражаюсь вашему стремлению впихнуть невпихуемое. Вместо того, чтобы взять инструменты спецом заточенные под 2Д графику, вы пытаетесь станцевать джигу на костылях. Создать 2Д игру в 3Д движке. Гладить простыни асфальтным катком выглядит и то более логичным действом.
А вообще, действительно ли людям уже интересно как кто-то сделал свою первую игру и с какими трудностями столкнулся? Я понимаю постмортемы игр с новыми и интересными механиками, где ДЕЙСТВИТЕЛЬНО есть проблемы решение которых стоит описывать. Но банальный таймкиллер то?
Кстати картинка вторая у меня усердно не отображется. Игру посмотреть не могу потому что она на говномобилки.
Разрываюсь между тем чтобы поставить посту минус и тем чтобы ничего не поставить, т.к. что-то ведь Денис с Максимом сделали. Ну да ладно.
Могу пожелать только делать дальше нормальные игры, на соответствующих инструментах.
UPD. Допрочёл до самого конца:
Застрелитесь, ребята. Теперь точно минус.
Глупым самопиаром занимайтесь луше на гуглоплее а не здесь.
Unity достаточно давно включает все необходимые инструменты для создания 2D игр. К тому же Unity выбирался не просто так, а по вполне весомым причинам: огромное сообщество, гибкость, кроссплатформенность, возможность писать на C# и конечно расчет на будущее. А будущее у Unity уж точно есть.
Да, можно сказать, что такую простую игру стоило делать на каком-нибудь простом движке, но зачем разбираться в неизвестном узкоспециализированном инструменте, если можно сразу начать получать опыт в разработке на серьезном движке.
Почему такое резкое отвращение к рекламным блокам? Что они вам сделали? К слову, блок там совсем незаметный и ненапряжный и в процессе игры он скрывается.
То-то я смотрю вы стали испытывать проблемы с пиксельартом =)
Походу всё-таки не включает. Я так понял, что Юнити выбирался скорее из расчёта "все делают на юнити, а чем мы хуже?". Не знаю как там у вас, а меня в универе учили искать средства разработки исходя из задачи. 2Д в Юнити говёное. Зачастую сильно лагает физ-движок, что ещё можно простить в 3Д, но совершенно непростительно в 2Д.
А почему вы не выбрали Unreal Engine? Он же ещё круче! Там серьёзности ОГОГО! Хорошее комьюнити и все дела.
Как альтернативу (о да, я всех уже этим достал) можно рассмотреть GameMaker. Вот эта штука идеально заточена под 2Д игры. Так же есть экспорт под кучки платформ. По своей идеологии она не сильно отличается от Юнити, разве что ЯП более ограниченный. По крайней мере мне в Юнити не требовалось никогда писать что-то чего нет в GameMaker.
Сейчас у них идут распродажи, так что утянуть нужный комплект можно достаточно дёшево.
А почему бы вам не сделать ВЕБ версию(раз уж вы выбрали Юнити), чтобы местные игроки могли поиграть без рекламы и в браузере?
То-то же.
Сделать веб-версию не проблема, да вот только играть в мобильные игры на компе — это, извините, извращение. Никакого смысла, кроме демонстрации. А учитывая, что игра бесплатная, надобность в демонстрации отпадает сама собой.
Ничего вы не поняли... Основной причиной был ЯП. Вот нравится мне C#, и ничего не могу с этим поделать. А то, что есть некоторые шероховатости с 2D, так это мелочи жизни.
Извращение - делать 2Д игру в 3Д движке, и вы в этом знаете толк =)
Так сделайте веб версию, в чём проблема?
Учитывая, что далеко не у всех есть телефоны с андройдом я бы всё-таки рекомендовал сделать и веб версию, раз игра всё равно бесплатная.
P.S. Не понимаю, чего в вашей игре может быть такого, что играть в неё на компе является извращением. Тачскрин заменяется мышкой, а гироскоп вы вряд ли используете. Или по-вашему я рискую тем что буду управлять небольшим курсором, а не закрывать полэкрана пальцем?
Чтоб не быть голословным, вот вам ссылка на веб-версию, пробуйте. Но за отрисовку графики браузером уже не ручаюсь.
Спасибо! Другое дело.
Гэймплей уж слишком прост. Пиксельарт на пиксельарт не похож, т.к. пиксели на разных объектах разного размера. Это видно даже на первой картинке в посте. Я бы на вашем месте не стал называть это
Сделали так сделали. Делайте дальше.
Сыграл 10 сек. Визуально хорошо. И насыщенно и не рябит в глазах.
Люто хочется хоть какой-то глубины (может в следующей версии осилите). Например: инопланетяне начинают кучковаться толпой, ломать дверь. Инопланетян 3 цвета (разная бронированность, один ещё и пуляет).
Их можно гонять от двери. Например на всё про всё одна пушка на стене дома. Она и ящики сбивает и уже приземлившихся отгоняет. Когда инопланетян накопится, они таки вламываются в дверь (сколько нападало, столько и вламывается). А там дедушка-сторож за коробками с ружьём (та же пушка) Успел отстреляться до того, как они проломили коробки — ок, возвращаемся к отстрелу падающих с неба ящиков. Никаких пуль, детекции столкновения, просто косметическая пушка, дёргающаяся за курсором и пукающая. Изменения в антураже, но играть, имхо, будет интереснее, имея хоть какое-то развитие ситуации.
Спасибо, понравилась ваша идея)) Правда есть одна нестыковка:
игра для тачскрина..
Ну, блин. Значит пушка, дергающаяся за пальцем.
Злой Корум, злой :) Но таки да, пение себе дифирамбов выглядит смешно. Или похабно.
Хотя если нагнать градус, получилась бы самоирония. Или даже самосарказм.
а, забыл. L нужно писать высокой, выше чем I. иначе Aiien или Ajien
Действительно странный выбор инструмента. Игры на юнити выходят неоправданно больших размеров. По хорошему такая игра должна весить пять мегабайт максимум. В геймплее изюминки не обнаружил. Желаю вам все-таки сотворить что-то нестандартное и не гнаться за деньгами (по-крайней мере в первых проектах).
Мы не ставили себе задачу делать игры для Android на Unity. Мы просто захотели делать игры. Вначале был выбран движок, а потом уже было решено начать с чего-нибудь простого на мобилки.
Не с того начинаете, сударь. Сначала была выбрана вилка, а потом что бы такое ей съесть
Выбор юнити это больше, чем выбор вилки. Это, в данном контексте, выбор еды ртом.
Актуально, так как многие начинают свой путь с еды жопой. Потом привыкают, и никаким чёртом не отучишь их.
Самокритичен:)
Взгляд со стороны.
Случайно плюсанул... Тут же наоборот как раз ситуация, и они едят задницей. Как выше писал Корум. И Стингер. Подход какой-то совсем дурацкий.
Ребят, я не понимаю, вы предлагаете каждую новую игру делать при помощи спец. инструмента?) RPG - значит RpgMaker, Android - значит какой-нибудь Construct2, 3D - значит Unreal Engine, Browser - значит Html5 + Js... Да на это жизни не хватит! Это же не вилка/ложка, взял и ешь.
Средства должны подбираться под цель. А навык работы с одним двиглом(конструктором) пригодится и в другом. Так везде. Хоть языки учить всякие буржуйские, хоть музыкальными инструментами бренчать - осваиваешь одно, со следующим уже легче. Опыт-то никуда не девается.
Ключевое слово "бренчать". Вот вы и "бренчите", а не игры делаете. Бегаете с одного инструмента на другой, полуфабрикаты изрыгивая. А следовало бы изучить один и мастерство точить в нем!
Мастерство создания игр не зависит от инструмента. ЛОЛ.
Так киви не о том, а о том, что виртуозно освоить инструмент, можно только плотно им занимаясь. Итоговая красота исполнения от инструмента и навыка владения им таки звисит.
Суть в следующем:
2Д - делать на движках, заточенных под 2Д. Причем тот же GMS поддерживает все платформы, которые вам могут понадобиться.
3Д - делать на движках, заточенных под 3Д. Если мобилки, то тот же Юнити.
Чувак, почти все инструменты разработки используют императивные ЯП. У всех инструментов разработки в основе лежит система событий. И ничего нового помимо if, switch, for, while, foreach не придумали.
Поэтому все игры делаются примерно одинаково на всех инструментах. Если ты понял принцип как это делать, то будь то C#, C++, AS3, PHP, JS - ты всё это быстро освоишь. Инструмент не главное. Главное - игра. Проведёшь аналогии и поймёшь и что и как делать.
А движков на функциональные ЯП я не знаю. Хотя кто-то даже делал игры на хаскеле. Но это экзотика.
Юнити из всех игродвигов самая полезная инвестиция в своё развитие.
Это самое тупое что я вообще когда либо слышал. Ты не в курсе, что век "одностаночников" уже закончился?
Самая полезная инвестиция в своё развитие - это понимать суть вещей и уметь разбираться в неисследованной области.
Можно заучиться что sin(a)^2+cos(a)^2=1, а можно начать понимать почему так получается. Вы что же, думаете что профессора всё знают наизусть? Они просто умеют быстро обучаться, т.к. знают основные принципы. Поэтому самая полезная инвестиция в своё развитие - это пойти учиться в универ. И дело даже не столько в знаниях, сколько в получении методологии от тех, кто ею владеет.
Не обязательно в универ, но всё же по классической программе или близко к ней. Как сказал мне репетитор перед поступлением: «главное, чему там можно научиться — учиться». И таки российская система образования как раз на создание абстрактного каркаса и рассчитана. Практического применения у него особо нет никакого, а вот лёгкость старта в куче областей обеспечивает.
Это верно.
А это как-то сомнительно.
Соглашусь, в университете по настоящему полезное дело - это заиметь связи с представителями будущей профессии, больше там делать нечего, остальное можно дома выучить, если не считать множество часов ненужных общих лекций, потому-что так принято
Связи вообще решают. По крайней мере в этой стране. Можно вообще нихуя не уметь, но если есть к кому примазаться, то будешь кататься, как сыр в масле:)
Если не нужны общие лекции, то нужно в ПТУ идти, там вроде чисто по профессии. А высшее образование на то и высшее, чтобы выпускники ориентировались во всех областях, были хотя бы похожи на представителей класса интеллигенции.
А чтоб денюжку иметь, универ конечно не нужен, учишься копипастить код джаваскрипт и пхп, и идёшь фрилансить.
Это как раз и есть "уметь разбираться в сути вещей". Я часто слышал недовольство студентов, допустим с факультета физики типа нахрена им история если они физики. Дело не в том, чтобы студент знал историю, а в том чтобы он умел разбираться даже в той области, в которой он не спец. И такие вещи понимаешь уже после того как закончил ВУЗ. Не "отсидел на лавочке", а именно ЗАКОНЧИЛ. Да, и как итог уметь только копипастить код и ничего больше =) Здравствуй, идеальный мир Сергея Боброва.
Интеллегенция? Это случаем не те, которые на кухоньках горланили "мы ждем переме-е-е-ен". А на поверку эти перемены означали распродажу своей Родины за бесценок американским жидам.
http://www.haskell.org/haskellwiki/Yampa/game_engine
По крайней мере разраб узнает, что помимо императивных ЯП бывают ещё и функциональные ЯП и более того, на определённых задачах они выигрывают иперативные. В плане гэймдева тоже могу привести пример. В функциональных языках часто имеется такая штука как lazy-sequence которая позволяет хранить бесконечные последовательности. При генеренации миров была бы жутко полезной шуткой. А уж про встроенную работу с коллециями я молчу. Там получается практически халявное распараллеливание.
Но нет же, наши "супер-крутые девелоперы" выучили только один язык(С++ или C#) и думают что мир на нём клином сошёлся и любую задачу можно решить с помощью них наиболее эффективным образом.
О lazy-sequence не слышал, но сомневаюсь, что в современных императивных языках нет достойной замены. Например, в том же C# можно создавать Lazy объекты. Для работы с многопоточностью(распараллеливанием) также есть куча инструментов на выбор.
А бесконечные последовательности понятие конечно интересное:) Любая последовательность будет ограничена ресурсами машины, или я чего-то не понимаю?..
В любом случае, во всех ЯП есть свои достоинства и недостатки. Лично я предпочту для начала стать гуру хотя бы в одном из них (тем более, что я уверен в его мощи), ну а потом посмотрим.
Корум, если года два прогал под гейммейкер, за один день под юнити не перейдёшь так, чтобы он был ощущаем кончиками пальцев.
Ни на что не перейдешь быстро так, чтобы знать нюансы. Мастерство и свобода достигаются только киложопочасами.
За один день и Гэйммекер не изучишь если два года прогал в юнити=)
Мораль в том что если ты УЖЕ юзал GameMaker, то обучение юнити у тебя займёт на 50-70% меньше времени чем если бы ты изучал всё с нуля.Вот и получается что за 1.5ую стоимость ты уже будешь знать два инструмента, а не один. А учитывая ООП в юнити без которого и так с геометрией много гемора, при изучении такого класса инструмента сильно распыляешься. Ну-ка попробуй освоить язык без знания алфавита.
У живых существ в начале эволюции и не было рта – всё поглощалось и выбрасывалось через одно отверстие...