Доброго времени суток, уважаемые пользователи!
Хочу поделиться с Вами своей маленькой историей создания своей маленькой игры.
Ну, начнем с того, что я — школьник. На носу у меня ЕГЭ, надо бы к нему готовиться, а меня все тянет и тянет в эту какую-то заблудшую степь. Но меня это ни сколько не останавливает. Еще в детстве мечтал делать игры, вот почему бы и не начать именно сейчас.
Что ж, начнем, пожалуй.
Наступил 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)
token
03.02.2019 13:00"Предоставляю готовые изменения и получаю в ответ все то же самое. Тогда я начал просто 24 часа в сутки что-то делать и исправлять". Потом от тебя уходит девушка (потому что её парень 24 часа напролет сидит в компе) и через несколько лет ты обнаруживает себя бородатым челом в свитере. Вот это и есть путь разработчика. Ты на правильном пути )
dramaformama Автор
03.02.2019 15:38Спасибо, но, к счастью, девушка является тестером, в каком-то плане)
Поддержка и идеи от нее идут колоссальные (:
dev96
03.02.2019 13:06Скорее вот оригинальная игра с этой идеей геймплея(2012):
www.superhexagon.comdev96
03.02.2019 14:03Проверил)
В видео, которое вы упомянули (которое, кстати, называется "Making a game in 10 minutes") референсом была эта игра.
da-nie
03.02.2019 13:33+3C# очень похож на Java, на мой взгляд, поэтому я его супер быстро изучил за один вечер.
Поколение гениев. :)apploid_offical
03.02.2019 14:33Тут сыглы. То чувство, когда ты потратил полгода, чтобы изучить язык ( и всего-то Java Core с JavaFX в придачу), а кто-то за один вечерок по спидрану. Эхх....
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: ошибся веткой.
dramaformama Автор
03.02.2019 15:31Спасибо за Ваш отзыв.
С тегами я работаю впервые, поэтому очень важное замечание Вы сделали.
Про С#: я соглашусь, что далеко не все выучил, но знаю больше базы, что, в принципе, можно выучить так быстро. Выучить — это не значит знать до идеала каждый момент.
В следующий раз, буду предоставлять код и говорить о подводных камнях, просто это мой первый какой-то блог/хабр, поэтому очень не опытен в этих делах.
Я хотел написать хабр о своем, так называемом, пути, поэтому я не особо стремился описать продукт, это не являлось частью темы.
Еще раз хочу поблагодарить Вас за Ваш отзыв. Вы очень помоглиHeinhain
04.02.2019 09:55Побуду занудой, но ознакомиться с синтаксисом языка никак не коррелирует со словом «выучить». Именно поэтому не следует им злоупотреблять, тем более в таком контексте (за вечер). Это просто глупо выглядит. По самому тексту публикации — без информации о задачах, проблемах, решениях, кода и т.д. это по большей части тривиальное жизнеописание школьника, коими все мы были — также неинтересно.
dramaformama Автор
04.02.2019 11:06Соглашусь с вами, спасибо. Я думал, что понятия одинаковые, но глубоко ошибался.
dramaformama Автор
03.02.2019 15:39Си шарп похож на Java в плане синтаксиса, как мне показалось, поэтому все пошло как по маслу :)
netricks
03.02.2019 23:18Вывод верный.
C# и Java действительно братья близнецы. Не только синтаксически, но и концептуально. Оба исполняются на виртуальной машине. Оба имеют сборку мусора и передают объекты по ссылкам, а базовые типы по значениям. То есть, они не только похоже выглядят. Они похоже работают, что гораздо важнее. Потому, кстати, и выглядят одинакого.
SiliconValleyHobo
03.02.2019 15:39+1Поколение тех, кто приравнивает «изучить» к «ознакомиться с основными инструкциями и основными их способами использования»
dramaformama Автор
03.02.2019 15:43Ну блин, а почему «изучить» значит знать все полностью?
gudvinr
03.02.2019 16:10Потому что "изучить" — это законченное действие, и означает "освоить в процессе изучения". В данном случае "изучить C#" очевидным образом означает "знать C# во всех его аспектах".
Но "ознакомился с C# применительно к Unity", или "изучил основы", конечно, не так солидно звучит.
То, что у всех C-подобных языков синтаксис похож друг на друга — не значит, что их можно изучить за вечер. Это не только
for/if/class/return
, но и куча подводных камней, которые связаны с внутренней реализацией тех или иных аспектов языка.
Вполне может оказаться, что там, где ожидается mutable объект в Java может оказаться внезапно immutable в C#, могут всплыть всякие приколы с размерами указателя в VM и т.п.
Весьма сомневаюсь, что вы даже Java толком изучили, потому что бесплатные курсы — это опять же, не для "изучить язык", а для того, чтобы смотреть в документацию не каждые 5 минут, а чуть пореже.
apploid_offical
03.02.2019 14:34Оффтоп. А куда поступать собираешься или сразу пойдешь разработчиком?
dramaformama Автор
03.02.2019 15:32Хочу поступать в сферу IT куда-нибудь в Москву или Питер, сам из Новосибирска. Но пока точно не знаю какой вуз. Если в Новосибирске, то, наверное, НГТУ.
samodum
03.02.2019 15:12>«C# очень похож на Java, на мой взгляд, поэтому я его супер быстро изучил за один вечер»
Так и хочется задать несколько вопросов про многопоточности, рефлекшн, сборщика мусора, про ссылки, типы,… Ох, как хочется с гением пообщаться на эти темыdramaformama Автор
03.02.2019 15:35Я же не говорю, что выучил С# полностью, знаю все и тому подобное. Изучил — не значит знать все до идеала. Я выучил о С# довольно много, больше чем базу, а похож на Java он в синтаксисе, как мне показалось.
ddinochrome
03.02.2019 16:26Мне кажется, автору стоит обратить внимание на режим дня. В разработке игр сложно то, что процесс увлекательный и творческий одновременно. Если делать игру высокого класса, то это ещё и долго. Например, я свою первую коммерческую игру делал 9 месяцев. Если срываться каждый день в авралы и не спать ночами, то за месяц-два можно прийти к невменяемому состоянию, в котором никакого творчества уже невозможно. А если нет творчества, нет элемента искусства, то зачем вообще нужна такая игра?)
Даже взрослых опытных разработчиков часто подводит неумение выдерживать режим дня и режим недели. Я думаю, это первое, чему надо учиться. И чем раньше, тем лучше. Это гораздо проще, чем Java и C#, Unity и UDK, но при этом намного важнее в реальной жизни.
В долгосрочной перспективе очень полезно уметь сдерживать свои творческие порывы — благодаря этому растёт творческий потенциал. И в итоге вместо 20 поделок-однодневок за то же время можно сделать 1-2 шедевра мирового уровня на века)dramaformama Автор
03.02.2019 16:37Спасибо за комментарий)
Вы совершенно правы, надо бы режим дня починить.
Хочу начать разработку одного шедевра, но не знаю, что именно сделать. Идея — самая сложная часть созданияddinochrome
03.02.2019 16:52Можно попробовать найти человека с уже готовой идеей и сделать игру для него. Конечно, если самому эта идея нравится. Может быть, в процессе и своя идея появится)
dramaformama Автор
03.02.2019 16:55Ни разу такого человека не видел, но ладно, спасибо)
ddinochrome
03.02.2019 16:59Есть такие люди — начинающие геймдизайнеры. Они обычно много всего придумывают, но реализовать не могут, потому что программировать — это не их специализация. Обычно хорошие игры делаются в содружества геймдизайнеры и программиста-разработчика.
Cerberuser
04.02.2019 06:29Как человек из RPG-Maker-сообщества — подтверждаю, "дизайнеров" хватает, а вот хороших программистов (да, там они тоже нужны) совсем мало (и я сам себя, в частности, отношу не к ним, а скорее к "дилетантам широкого профиля"). Впрочем, гораздо чаще камнем преткновения становятся ресурсы — в основном графика, которую реже всего удаётся найти в свободном доступе под нужный стиль.
aikixd
03.02.2019 16:59Нет смысла пытать сразу сделать шедевр. Как в любом искусстве сначала идут зарисовки и наметки. Относительно гейм дева, это могут быть просто попытки повторить уже существующие вещи, например подгрузка и выгрузка карты, или простенькая физика. Могут быть мини черновики всякой чуши которая приходит в голову. Это не должно все работать идеально или быть оптимизированно. Если что-то начало обретать форму, должно быть не жалко выбросить все и переписать с нуля. В какой-то момент интересная идея придет в голову, когда будешь работать над очередным черновиком.
Само собой, это не должно идти в ущерб культуре кода. Не стоит учится плохому, переучиться будет очень сложно. К тому-же качаственный код проще переиспользовать. Если нужно что-то переписать с нуля, то будет полезно иметь возможность сохранить часть успешных модулей для следующей итерации.
ddinochrome
03.02.2019 17:01Уважаемый, зачем сразу крылья рубить?) Пусть человек попробует сделать шедевр. Мы же не знаем, может быть перед нами новый Кармак рождается.
aikixd
03.02.2019 17:08+1Я категорически сомневаюсь, что Дум был второй игрой Кармака =)
ddinochrome
03.02.2019 17:20Я думаю, тут важно не сделать шедевр со второй попытки, а каждый раз пытаться сделать шедевр. Кармаку понадобилось 23 попытки, чтобы дойти до Дума. Но если бы он каждый раз хотел сделать что-то заурядное и посредственное, то Дум мы бы не увидели никогда.
aikixd
03.02.2019 17:58Если бы Кармак пытался сделать 23 шедевра, он не сделал бы ни одного. Важно понимать что именно вы делаете и сколько усилий нужно в это вложить. Я не утверждаю что нужно сделать 23 бродилки, с разными текстурами. Каждый шаг должен быть попыткой сделать что-нибудь новое и интересное. Но важно понимать, что не именя опыта шедевр не выйдет.
dramaformama Автор
03.02.2019 17:02Потихоньку начинаю заниматься набросками, но уже две недели ничего не приходит в голову.
Все же, спасибо за ваш совет.
Очень мудрые вещи говорите :)
aikixd
03.02.2019 17:19Две недели это не срок =) Я пол года учился играть на пианино, до того как смог сыграть что-то из головы, несмотря на то, что музыку я слушал всю жизнь. И это не был шедевр. Дело в том, что-бы научится думать не как пользователь (геймер), а как творец. Это другой ход мыслей и этому нужно научиться. Лучше всего это сделать творя. Даже если по началу это просто подражание. Главное наслаждайтесь процессом.
dramaformama Автор
03.02.2019 17:37Похоже, что на Хабре одни мудрецы)
Музыкой, кстати, тоже хотелось бы заняться. Очень привлекает искусство
exerrk
05.02.2019 10:11Есть очень много техник, которые способствуют работать мозг на генерации идей. При этом эти техники универсальны, не важно каким творчеством заниматься. Погуглите что-то вроде «техники генерации идей». На первый взгляд это может показаться недейственным способом, но некоторые из них вполне себе. На вскидку — рекомендуют (и это проверил на себе) регулярно, например один раз в день, придумать и записать какую-нибудь идею. Это может быть одно, два предложенияна тему сюжета, или на тему геймплея (зарисовка, если это художественная идея, тема мелодии и т.п. и т.д., фотография). Идеи могут быть глупыми, нереалистичными — это не важно. Главное, чтобы это было что-то миниатюрное и зафиксированное. Затем (например раз в неделю или месяц) пересмотреть эти идеи и выписать те, которые понравились. Этим упражнением вы заставите свой мозг работать в нужном направлении. Словно обучаете искусственную нейронную сеть, разница лишь в том, что эта сеть в мозгу и она не искусственная
kornerr
04.02.2019 18:45Когда будет веб-версия? (Есть айфон, есть комп с браузером, но нет андроида)
dramaformama Автор
04.02.2019 19:22Так, до такого я не планировал доходить, но сделать можно.
Также, можно скачать эмулятор Android на компьютер, а дальше уже, думаю, знаете, что делать
kornerr
05.02.2019 13:27Думаю, вы сами не шибко любите игры, где нужно сначала сделать 100500 телодвижений, чтобы просто запустить игру ;)
aikixd
05.02.2019 13:40Не портите человека, с Шарпа на ЖС при обучении пересаживать =)
Cerberuser
05.02.2019 13:53Ну почему же обязательно ЖС. TypeScript в «strict checks mode» — вполне себе вариант, пусть его и матерят перелезшие с Java (по наблюдениям за коллегами) :)
KairoDaKhaal
05.02.2019 15:49Мне пост зашёл. Сам хочу свою игрушку на Swift накатать. Даже уже спрайты в папку assets закинул в Xcode :-)
В общем, пили ещё посты, буду читать с удовольствием.dramaformama Автор
05.02.2019 15:50Спасибо за добрые слова!
Желаю удачи тебе со своей игрой! Здесь главное начать, а дальше уже все пойдет как надо ;)
msdos9
А можно на Youtube геймплей глянуть?
dramaformama Автор
Геймплея нет, только скачать можете, либо посмотреть игру SuperHexagon — она послужила идеей