Доброго времени суток, уважаемые пользователи!


Хочу поделиться с Вами своей маленькой историей создания своей маленькой игры.

Ну, начнем с того, что я — школьник. На носу у меня ЕГЭ, надо бы к нему готовиться, а меня все тянет и тянет в эту какую-то заблудшую степь. Но меня это ни сколько не останавливает. Еще в детстве мечтал делать игры, вот почему бы и не начать именно сейчас.

Что ж, начнем, пожалуй.

Наступил 2019 год, и я решил: «Пора заняться чем-то новым!» Сел на диван первого января, открыл YouTube, как обычно, и включил фоном какой-то видос, параллельно размышляя чем бы заняться. И вот мне в голову пришла великолепная мысль, которой я решил сразу же заняться. Я решил выучить новый язык программирования! До этого знал только Python (о нем чуть позже) и pascal, который никому был не нужен, только для решения того же ЕГЭ. Вот сел я значит за ноутбук и думаю «Какой бы язык выбрать?». Мой выбор пал на Java.

Было нелегко найти неплохой курс для основ Java, но сайт CodeAcademy, как всегда, выручил (там же я изучал Python). Довольно быстро прошел все бесплатные курсы и обрадовался, подумав: «Ну все, можно писать Minecraft», но счастья было мимолетным. Мои мысли о создании игр на Java закончились после прочтения первой же статьи о разработки на данном языке. Все было каким-то сложным и долгим. В связи с этим событием, я решил придумать что-нибудь иное.

Тут я вспоминаю о такой замечательной вещи, как Unity. Я начал читать об этом движке и сразу же столкнулся с, на то время, проблемой — C#. Я думал, все будет сложно, так как какой-то одноклассник жаловался на это, но все оказалось намного проще, чем я думал: C# очень похож на Java, на мой взгляд, поэтому я его супер быстро изучил основы за один вечер, что позволяло уже начать писать код.

Со следующего утра, с первыми лучами солнца я встал и сразу же принялся читать, читать и еще раз читать о Unity все, что было. Начал устанавливать ПО и пробовать различные вещи, что увенчалось каким-никаким успехом — я написал свою первую игру на Android. Это было очень коряво сделанная игра, со скачанными картинками из интернета, без меню и багами. Ее смысл был прост — бегаешь котенком, уворачиваясь от падающих мордочек мопсов:


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

И вот я уже начинаю писать нормальную игру. Идеей игры послужил один видеоролик на YouTube с канала Brackeys. Мне очень понравилось то, что он сделал, и я решил довести эту задумку до ума. Суть была такова: есть шарик, который вериться вокруг центра на небольшом расстоянии, и ты должен был попасть им в отверстия в шестиугольника, которые спавнились и сужались с определенной скоростью. Было тяжеловато начинать, когда ты всего пару дней учишь материал, но, благодаря нашей любимой веб-паутине, многое можно было найти.

Я начал с геймлея. Все шло своим чередом, я все делал с кровью и потом, ложился в 4 часа утра, хотя обычный режим — это 10-11 часов вечера, но меня нельзя было сломать. И вот я уже закончил меню:


Совсем простое, но для меня кнопки — это уже было что-то с чем-то.

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

Предоставляю готовые изменения и получаю в ответ все то же самое. Тогда я начал просто 24 часа в сутки что-то делать и исправлять. Все было очень сложно и я методом проб и ошибок исправил многие проблемы, уже сам писал многие части кода, потому что за столько времени перевидал многого. Также, мне пришлось научиться рисовать, чего я никогда не умел, и нарисовать кнопки. И вот что я получил, еще немного порисовав в Illustrator'e, дабы добавить вместо белого шарика какие-то скины:


Для меня это был величайший прорыв.

Дальше было уже легче. Я добавил больше кнопок, музыки (еле нашел что-то подходящее, так как записывать сам не умею), добавил еще пару скинов, настройки громкости и скорости вращения шарика, чтобы игрок сам выставил как ему удобно. Получилось вот такое чудо:



Я был горд за данное деяния, что аж решил выложить ее в Google Play. Узнал, как это делается. Принялся за работу. И тут я вижу, что надо платить $25 за регистрацию, чему я был знатно удивлен. Ладно, я заплатил (но жаба так душила, ужас просто). Все настроил, выкладываю игру. И вот я уже в нетерпении жду, когда же ее выпустят, а время ожидания от заливки APK до публикации примерно 5-6 часов, ложусь отдыхать.

Проснувшись в 8 вечера, вижу что игра уже в Google Play! Радости не было предела. Делюсь со всеми друзьями новостью, говорю: «Во! Качайте, играйте, скажите как вам». Выложив игру, я думал, что все уже сделано, но не-е-е-е-ет, далеко нет. Мои друзья начали писать о куче багов и ошибках, о которых я и не подозревал (кто же знал, что нужно производить настройку под разные экраны). Вот я снова не сплю, чиню все, подогнал под все разрешения свой шедевр и заливал обновления. Все, готово… иду отдыхать.

Не все так просто… Через пару минут снова пишут о других ошибках. Ладно, тоже исправил, загружаю. И вот здесь, слава богу, все приостановилось. Я ложусь наконец-то спать спустя столько дней без сна. Это был самый сладкий сон в моей жизни.

Вот примерно такая история произошла у меня. Поиграть в игру вы можете нажав сюда: Spin The Ball. Если будет не сложно, напишите вашу оценку и комментарии к игре, чтобы я знал, в каком направлении развиваться. Спасибо большое!

Про историю с Python я расскажу позже.

Всем спасибо за внимание,
ваш dramaformama

Комментарии (49)


  1. msdos9
    03.02.2019 12:41

    А можно на Youtube геймплей глянуть?


    1. dramaformama Автор
      03.02.2019 15:36

      Геймплея нет, только скачать можете, либо посмотреть игру SuperHexagon — она послужила идеей


  1. token
    03.02.2019 13:00

    "Предоставляю готовые изменения и получаю в ответ все то же самое. Тогда я начал просто 24 часа в сутки что-то делать и исправлять". Потом от тебя уходит девушка (потому что её парень 24 часа напролет сидит в компе) и через несколько лет ты обнаруживает себя бородатым челом в свитере. Вот это и есть путь разработчика. Ты на правильном пути )


    1. dramaformama Автор
      03.02.2019 15:38

      Спасибо, но, к счастью, девушка является тестером, в каком-то плане)
      Поддержка и идеи от нее идут колоссальные (:


  1. dev96
    03.02.2019 13:06

    Скорее вот оригинальная игра с этой идеей геймплея(2012):
    www.superhexagon.com


    1. dev96
      03.02.2019 14:03

      Проверил)
      В видео, которое вы упомянули (которое, кстати, называется "Making a game in 10 minutes") референсом была эта игра.


    1. dramaformama Автор
      03.02.2019 15:38

      Да, вы правды. Спасибо за ссылку


  1. da-nie
    03.02.2019 13:33
    +3

    C# очень похож на Java, на мой взгляд, поэтому я его супер быстро изучил за один вечер.


    Поколение гениев. :)


    1. apploid_offical
      03.02.2019 14:33

      Тут сыглы. То чувство, когда ты потратил полгода, чтобы изучить язык ( и всего-то Java Core с JavaFX в придачу), а кто-то за один вечерок по спидрану. Эхх....image


    1. gudvinr
      03.02.2019 14:59

      У вас крайний перебор с тегами, большая часть которых к статье имеет отношение от условного до никакого.


      • unity, unity3d — только упоминание
      • gamedev, game development, gamedevelopment, разработка игр, дизайн игр, разработка игр под android — аспектов разработки игр нет (ни баланса, ни анализа решений, ни объяснений каким-то игровым механикам)
      • google play — только упоминание о том, что заплатили $25
      • c#, си шарп, разработка — ничего из этого нет. ни исходников, ни архитектуры. ничего.
      • история успеха — а где успех? показатели заработка, установок и т.п.
      • дизайн, illustrator, adobe illustrator, python, python3 — про это даже намёка нет
      • google, adobe — этих ребят тоже не замечено
      • app, application, новое — под это вообще 90% хабра попадает

      игра, опыт, история, школьник, школьники, история из жизни, новая игра, аркада — единственное, что реально относится к статье.


      C# очень похож на Java, на мой взгляд, поэтому я его супер быстро изучил за один вечер

      Вот это довольно интересно, честно говоря. Изучил за один вечер как добавить в Unity скрипт для GameObject и базовые языковые конструкции вроде циклов и ветвлений с помощью IDE — это всё-таки далеко не изучил C# за один вечер.


      Но да ладно, показали бы что-ли код, а не скриншоты. Расссказали бы какие проблемы были с точки зрения геймдизайна.


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


      UPD: ошибся веткой.


      1. dramaformama Автор
        03.02.2019 15:31

        Спасибо за Ваш отзыв.

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

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

        Еще раз хочу поблагодарить Вас за Ваш отзыв. Вы очень помогли


        1. Heinhain
          04.02.2019 09:55

          Побуду занудой, но ознакомиться с синтаксисом языка никак не коррелирует со словом «выучить». Именно поэтому не следует им злоупотреблять, тем более в таком контексте (за вечер). Это просто глупо выглядит. По самому тексту публикации — без информации о задачах, проблемах, решениях, кода и т.д. это по большей части тривиальное жизнеописание школьника, коими все мы были — также неинтересно.


          1. dramaformama Автор
            04.02.2019 11:06

            Соглашусь с вами, спасибо. Я думал, что понятия одинаковые, но глубоко ошибался.


    1. dramaformama Автор
      03.02.2019 15:39

      Си шарп похож на Java в плане синтаксиса, как мне показалось, поэтому все пошло как по маслу :)


      1. netricks
        03.02.2019 23:18

        Вывод верный.
        C# и Java действительно братья близнецы. Не только синтаксически, но и концептуально. Оба исполняются на виртуальной машине. Оба имеют сборку мусора и передают объекты по ссылкам, а базовые типы по значениям. То есть, они не только похоже выглядят. Они похоже работают, что гораздо важнее. Потому, кстати, и выглядят одинакого.


    1. SiliconValleyHobo
      03.02.2019 15:39
      +1

      Поколение тех, кто приравнивает «изучить» к «ознакомиться с основными инструкциями и основными их способами использования»


      1. dramaformama Автор
        03.02.2019 15:43

        Ну блин, а почему «изучить» значит знать все полностью?


        1. gudvinr
          03.02.2019 16:10

          Потому что "изучить" — это законченное действие, и означает "освоить в процессе изучения". В данном случае "изучить C#" очевидным образом означает "знать C# во всех его аспектах".


          Но "ознакомился с C# применительно к Unity", или "изучил основы", конечно, не так солидно звучит.


          То, что у всех C-подобных языков синтаксис похож друг на друга — не значит, что их можно изучить за вечер. Это не только for/if/class/return, но и куча подводных камней, которые связаны с внутренней реализацией тех или иных аспектов языка.
          Вполне может оказаться, что там, где ожидается mutable объект в Java может оказаться внезапно immutable в C#, могут всплыть всякие приколы с размерами указателя в VM и т.п.
          Весьма сомневаюсь, что вы даже Java толком изучили, потому что бесплатные курсы — это опять же, не для "изучить язык", а для того, чтобы смотреть в документацию не каждые 5 минут, а чуть пореже.


          1. dramaformama Автор
            03.02.2019 16:12

            Ладно, понял. Спасибо, впредь буду внимателен со словами :)


  1. apploid_offical
    03.02.2019 14:34

    Оффтоп. А куда поступать собираешься или сразу пойдешь разработчиком?


    1. dramaformama Автор
      03.02.2019 15:32

      Хочу поступать в сферу IT куда-нибудь в Москву или Питер, сам из Новосибирска. Но пока точно не знаю какой вуз. Если в Новосибирске, то, наверное, НГТУ.


  1. samodum
    03.02.2019 15:12

    >«C# очень похож на Java, на мой взгляд, поэтому я его супер быстро изучил за один вечер»
    Так и хочется задать несколько вопросов про многопоточности, рефлекшн, сборщика мусора, про ссылки, типы,… Ох, как хочется с гением пообщаться на эти темы


    1. dramaformama Автор
      03.02.2019 15:35

      Я же не говорю, что выучил С# полностью, знаю все и тому подобное. Изучил — не значит знать все до идеала. Я выучил о С# довольно много, больше чем базу, а похож на Java он в синтаксисе, как мне показалось.


  1. ddinochrome
    03.02.2019 16:26

    Мне кажется, автору стоит обратить внимание на режим дня. В разработке игр сложно то, что процесс увлекательный и творческий одновременно. Если делать игру высокого класса, то это ещё и долго. Например, я свою первую коммерческую игру делал 9 месяцев. Если срываться каждый день в авралы и не спать ночами, то за месяц-два можно прийти к невменяемому состоянию, в котором никакого творчества уже невозможно. А если нет творчества, нет элемента искусства, то зачем вообще нужна такая игра?)
    Даже взрослых опытных разработчиков часто подводит неумение выдерживать режим дня и режим недели. Я думаю, это первое, чему надо учиться. И чем раньше, тем лучше. Это гораздо проще, чем Java и C#, Unity и UDK, но при этом намного важнее в реальной жизни.
    В долгосрочной перспективе очень полезно уметь сдерживать свои творческие порывы — благодаря этому растёт творческий потенциал. И в итоге вместо 20 поделок-однодневок за то же время можно сделать 1-2 шедевра мирового уровня на века)


    1. dramaformama Автор
      03.02.2019 16:37

      Спасибо за комментарий)


      Вы совершенно правы, надо бы режим дня починить.
      Хочу начать разработку одного шедевра, но не знаю, что именно сделать. Идея — самая сложная часть создания


      1. ddinochrome
        03.02.2019 16:52

        Можно попробовать найти человека с уже готовой идеей и сделать игру для него. Конечно, если самому эта идея нравится. Может быть, в процессе и своя идея появится)


        1. dramaformama Автор
          03.02.2019 16:55

          Ни разу такого человека не видел, но ладно, спасибо)


          1. ddinochrome
            03.02.2019 16:59

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


            1. Cerberuser
              04.02.2019 06:29

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


      1. aikixd
        03.02.2019 16:59

        Нет смысла пытать сразу сделать шедевр. Как в любом искусстве сначала идут зарисовки и наметки. Относительно гейм дева, это могут быть просто попытки повторить уже существующие вещи, например подгрузка и выгрузка карты, или простенькая физика. Могут быть мини черновики всякой чуши которая приходит в голову. Это не должно все работать идеально или быть оптимизированно. Если что-то начало обретать форму, должно быть не жалко выбросить все и переписать с нуля. В какой-то момент интересная идея придет в голову, когда будешь работать над очередным черновиком.


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


        1. ddinochrome
          03.02.2019 17:01

          Уважаемый, зачем сразу крылья рубить?) Пусть человек попробует сделать шедевр. Мы же не знаем, может быть перед нами новый Кармак рождается.


          1. dramaformama Автор
            03.02.2019 17:03

            И вы тоже говорите мудрые вещи)


          1. aikixd
            03.02.2019 17:08
            +1

            Я категорически сомневаюсь, что Дум был второй игрой Кармака =)


            1. ddinochrome
              03.02.2019 17:20

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


              1. aikixd
                03.02.2019 17:58

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


        1. dramaformama Автор
          03.02.2019 17:02

          Потихоньку начинаю заниматься набросками, но уже две недели ничего не приходит в голову.
          Все же, спасибо за ваш совет.


          Очень мудрые вещи говорите :)


          1. aikixd
            03.02.2019 17:19

            Две недели это не срок =) Я пол года учился играть на пианино, до того как смог сыграть что-то из головы, несмотря на то, что музыку я слушал всю жизнь. И это не был шедевр. Дело в том, что-бы научится думать не как пользователь (геймер), а как творец. Это другой ход мыслей и этому нужно научиться. Лучше всего это сделать творя. Даже если по началу это просто подражание. Главное наслаждайтесь процессом.


            1. dramaformama Автор
              03.02.2019 17:37

              Похоже, что на Хабре одни мудрецы)


              Музыкой, кстати, тоже хотелось бы заняться. Очень привлекает искусство


          1. exerrk
            05.02.2019 10:11

            Есть очень много техник, которые способствуют работать мозг на генерации идей. При этом эти техники универсальны, не важно каким творчеством заниматься. Погуглите что-то вроде «техники генерации идей». На первый взгляд это может показаться недейственным способом, но некоторые из них вполне себе. На вскидку — рекомендуют (и это проверил на себе) регулярно, например один раз в день, придумать и записать какую-нибудь идею. Это может быть одно, два предложенияна тему сюжета, или на тему геймплея (зарисовка, если это художественная идея, тема мелодии и т.п. и т.д., фотография). Идеи могут быть глупыми, нереалистичными — это не важно. Главное, чтобы это было что-то миниатюрное и зафиксированное. Затем (например раз в неделю или месяц) пересмотреть эти идеи и выписать те, которые понравились. Этим упражнением вы заставите свой мозг работать в нужном направлении. Словно обучаете искусственную нейронную сеть, разница лишь в том, что эта сеть в мозгу и она не искусственная


            1. dramaformama Автор
              05.02.2019 11:07

              Интересно, спасибо большое! :)


  1. kornerr
    04.02.2019 18:45

    Когда будет веб-версия? (Есть айфон, есть комп с браузером, но нет андроида)


    1. dramaformama Автор
      04.02.2019 19:22

      Так, до такого я не планировал доходить, но сделать можно.


      Также, можно скачать эмулятор Android на компьютер, а дальше уже, думаю, знаете, что делать


      1. kornerr
        05.02.2019 13:27

        Думаю, вы сами не шибко любите игры, где нужно сначала сделать 100500 телодвижений, чтобы просто запустить игру ;)


        1. aikixd
          05.02.2019 13:40

          Не портите человека, с Шарпа на ЖС при обучении пересаживать =)


          1. Cerberuser
            05.02.2019 13:53

            Ну почему же обязательно ЖС. TypeScript в «strict checks mode» — вполне себе вариант, пусть его и матерят перелезшие с Java (по наблюдениям за коллегами) :)


          1. kornerr
            05.02.2019 15:43

            Я скорее намекал на Emscripten :)


  1. KairoDaKhaal
    05.02.2019 15:49

    Мне пост зашёл. Сам хочу свою игрушку на Swift накатать. Даже уже спрайты в папку assets закинул в Xcode :-)
    В общем, пили ещё посты, буду читать с удовольствием.


    1. dramaformama Автор
      05.02.2019 15:50

      Спасибо за добрые слова!

      Желаю удачи тебе со своей игрой! Здесь главное начать, а дальше уже все пойдет как надо ;)


      1. KairoDaKhaal
        05.02.2019 19:43

        Спасибо :-)