Как «не программист» игру писал

в 9:57, , рубрики: Action Script, game, game development, tower defense, первая игра, Программирование, социальные сети, метки: , , , ,

Всем привет. Я хочу, чтобы этот пост послужил мотивацией для всех начинающих игроделов, да и не только для них. Статья не содержит сухой научной информации, которая так свойственна настоящим программистам. Хочу поделиться с вами своей историей, на мой взгляд, довольно увлекательной.

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

Опыта нет, а к программированию отношусь лишь тем боком, что работаю рядом с сервером и, если спросят, его обслуживаю. Одним словом — эникейщик и чуточку системный администратор.

С чего всё начиналось

А начиналось всё с выбора платформы. С жанром игры я определился ещё давно. Не отнять у меня любви к Tower Defense, как не пытайся. Но сколько игр этого жанра ни пересмотрел, всегда мне чего-то не хватало. И эта нехватка острая и послужила главным толчком: «Да пропадай оно всё пропадом, сделаю всё сам!» Ну раз решил, отступать некуда. Выбирал-выбирал платформу и остановился на флеше, язык Action Script 3.0 (слышал, не любят на хабре флешеров, хотя сам считаю его таким же языком программирования, как и другие). Выбрал я его потому, что у самого дочка подрастает и любит игрушки всякие в социальных сетях рассматривать. Вот, думаю, оценит папину деятельность, когда вырастет.

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

Как «не программист» игру писал

3ds-max

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

Как «не программист» игру писал

Шел долгий и, признаться, увлекательный процесс. Все положения, повороты орудий рендерил отдельно, ни о каком 3d-движке в игре речи вообще не шло.

Кстати, о движке

Раз уж я задался целью сделать всю игру от начала и до конца, то решил никаких готовых движков, платных или бесплатных, не брать. Всё сам, благо математику в школе учил. В интернет не подсматривал, чужой код не воровал. Даже когда необходимо было сделать нахождение путей, я честно, чтобы не падать в грязь лицом перед самим собою, два дня как в тумане просидел и придумывал этот алгоритм. Да, изобретал велосипед. Да, пусть и так. Это потом я узнал, что, оказывается, заново «придумал» самый медленный из существующих «Волновой алгоритм». Главное — он работал. Восторг был неописуемый!

Пушки уже стреляли, взрывы взрывались, ракеты летали, а некий «замедлитель» замедлял врагов. Вон там вверху база, а враги к ней едут по дороге. А задача игрока, так расставить пушки, чтобы врагам не дать на базу пройти. Пушки, кстати, ставятся только в специальные слоты — зелёные на скриншоте.

Как «не программист» игру писал

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

Как «не программист» игру писал

Работа кипела, к общему интерфейсу было добавлено главное меню и окно выбора миссий.

Как «не программист» игру писал

Сами карты я рисовал вручную, цифрами в матрице. 11 — например, дорога, 16 — слот орудия, 23-28 — деревья всякие и т.д. Трудоёмко, но сделать можно. За каждую выполненную миссию я начислял игроку звёзды. Снабдил игру звуками — стало уютнее. Сделал экраны победы и поражения. Добавил самолёты. Решил, что за звёзды можно покупать какие-то улучшения — сделал магазин с этими улучшениями.

Как «не программист» игру писал

Ну, а дальше то что?

Действительно, что делать дальше, я так и не решил. Игра была уже почти готова, когда я задумался на этим вопросом. Где опубликоваться? Я выбрал Вконтакте.ру (да, пинайте), только потому, что там это можно сделать и у меня есть аккаунт этой сети. Просто залил туда, сделал небольшой сервер (для этого пришлось научиться основам PHP) и подал заявку на одобрение и добавление в каталог. Ни о каком зарабатывании денег речь не шла, в игре не было ни социальной составляющей, ни платёжной системы. Я был наивен в своём стремлении. Естественно, игру тут же отклонили с формулировкой «Для прохождения модерации необходима существенная доработка графики».

Вежливо. Очень вежливо. Любой уважающий себя разработчик скажет, что мне просто не сказали горькой правды. Ну что ж. Я опустил руки, но не надолго. Мне нужны были люди, способные оценить качество моей работы, да просто геймеры. Хотелось обратной связи.

Первые игроки

Решил я тогда опубликовать свою статью на одном известном сайте развлекательного характера, название которого я здесь разглашать не буду. Знал, что на хабре мне публиковаться не стоит. Опубликовал, рассказал всё как есть и люди пошли. За один день пришло 2500 человек. Знаю, что для игры это немного, но для меня тогда, да и сейчас, это значило немало. Пошли отзывы, очень многим игра понравилась. Честно говоря, несмотря на такую убогую графику, не было ни одного плохого отзыва. Кстати, «весила» игра всего полтора мегабайта, что придавало ей «вес». А что, загружай себе быстро в офисе и играй.

Многие воодушевились моей идеей, стали писать разные люди: программисты с хорошими идеями, другие программисты, с идеями в стиле «грабить корованы», люди, разбирающиеся в серверах, и главное — дизайнеры. Через какое-то время статистика игры стала неумолимо падать, ведь новых игроков мне брать было неоткуда. Почти год я скитался в сомнениях, продолжать ли мне развиваться или забросить заниматься гейм-девом. Год пустоты. После, хорошо отдохнув, я всё же решил не останавливаться.

Дизайнер

Одним из тех, кто написал мне, был Александр — дизайнер-самоучка, такой же как я. И так же увлеченный идеей сделать игру. Его я и выбрал. Мы обсудили с ним игродел, помечтали о будущем и решили, что начать можно с того, что возьмём мою игру и перерисуем в ней всю графику. С момента публикации игры прошло немало времени, но человек был заинтересован в игре. Через пару недель мытарств, нами было принято решение не просто перерисовывать игру, а делать всё по новой. Несмотря на рабочий движок, многих функций нам не доставало. Я надеялся на то, что придётся переписать лишь какую-то часть, но нет — переписывал всё «от» и «до».

Новая игра

Как «не программист» игру писал

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

Как «не программист» игру писал

Идея для игры — Сирийский конфликт — плод нашей фантазии. Некие неизвестные захватчики напали на Сирию. В шутку мы называем её «Программно-технический комплекс стратегического планирования при предполагаемых военных действиях в условиях альтернативного сирийского конфликта». Заметьте, «альтернативного». В игре нигде не упоминаются страны, принимающие участие в конфликте. За исключением сирийской — защищающейся стороны. Да, игра носит политический оттенок, но об Украине тоже ни слова.

Как «не программист» игру писал

Что нового?

В игре имеется 6 основных видов орудий:

  • осадный дом — интересен тем, что в самом начале игры это довольно слабое орудие, в нём сидят солдаты и стреляют только из автоматов, но, по мере прохождения, оно превращается чуть ли не в самое сильное — у солдат появляются гранаты, а потом и РПГ
  • пулемет — весьма мощное орудие, тем более что стреляет непрерывной очередью. Но есть одно «но» — уж больно быстро перегревается
  • система ПВО — атакует только воздушные войска противника. В самом начале имеет комплект из одной ракеты, а по мере прохождения комплект увеличивается до трёх
  • осадный танк — орудие невероятной убойной силы, поражает сразу несколько противников в радуисе взрыва его снаряда. Вот только перезаряжается не быстро
  • автозаправочная станция — или, попросту, огнемёт. Поджигает врагов, и они горят ещё некоторое время. Очень мощное орудие, но с ограниченным радиусом действия
  • голограмма — голограмма президента одной влиятельной страны. Может не только замедлять врагов, внушая им страх, но и заставляет столбенеть их в ужасе. Интересно, догадаетесь, какую именно влиятельную страну мы имели ввиду?

Как «не программист» игру писал

Это, что касается основных, а есть ещё дополнительные строения: радар, нефтевышка, супер-удар «Тополь-М», мины и т.д. и тому подобное. Есть дополнительные улучшения базы: защита, самолётные удары, самовосстановление, приток ресурсов. Всего и не расскажешь. Главной особенностью игры можно считать ещё и то, что все орудия поглощают накопленные ресурсы (кроме голограммы президента — не положено ему ресурсы отнимать!). Ведь им тоже хочется кушать. А вот зарабатываются ресурс с помощью уничтожения врагов, установок нефтяных вышек. Получается этакая экономика.

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

Как «не программист» игру писал

Итак, новая игра готова. Я воспользовался старой схемой и опубликовал её на VK (пинайте ещё сильнее). Её быстренько одобрили. Предполагаем портацию на другие платформы, например мобильные, и в другие социальные сети. Теперь у игры есть система рейтингов, топовые игроки, топ друзей и всё, что полагается нормальной игре. На новую разработку ушло чуть более 4 месяцев, но это был крайне увлекательный процесс. Наверное, многие могли бы сделать и быстрее, не сомневаюсь. Для меня лично это был очень интересный путь, от полного непонимания вопроса к законченной полноценной игре. Я начинал с того, что хочу, чтобы этот пост послужил мотивацией. Надеюсь, что так и будет. Нет ничего невозможного, теперь я это точно знаю. Дерзайте и никогда не останавливайтесь!

Как «не программист» игру писал

Автор: meschersky

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js