Разработка игр с чего начать
Как программировать игры: языки, движки и все, что нужно знать начинающему разработчику
Сперва это кажется дико сложным, но чем глубже погружаешься, тем лучше получается. Рассказываем, как начать делать игры,
Главное — в самом начале узнать, что нас ждёт, чтобы потом не свернуть на полпути, пройти все этапы и выпустить релиз. Подробно всем тонкостям, навыкам и хитростям мы обучаем на курсе «Профессия разработчик игр на Unity». Здесь же рассмотрим первые шаги, которые ждут разработчика.
С чего начать разработку игры
Рассчитываем, что вы уже придумали, какой будет игра, разработали концепт и уже ищете способы разработки. Настало время реализовать свои задумки. Есть несколько вариантов, как это сделать.
Все три способа подразумевают какое-никакое программирование, так что знать хотя бы основы вам точно придётся.
Пишет о программировании, в свободное время создает игры. Мечтает открыть свою студию и выпускать ламповые RPG.
Языки программирования
Подойдут любые, от Python и C до Pascal и Java. От выбора зависит то, сколько времени уйдёт на игру и для какой платформы будет релиз. Также язык влияет на производительность.
На C++, например, пишут для любой платформы, а вот PHP или JavaScript лучше подходят для браузерных игр. Если же вы используете один из движков, то лучше вдобавок изучать C# — на нём прописывают скрипты. Главное — не недооценивать языки. Движок Unity дружит и с JavaScript, а MineCraft был написан на Java.
Движки для создания игр
Среди современных выделим:
Crysis, Far Cry, Sniper II: Ghost Warrior.
Gears of War 4, Dead Pool, Mortal Kombat X, Tekken 7
Outlast, Assassin’s Creed: Identity, Temple Run, Deus Ex: The Fall.
Большой популярностью пользуется Unity, он рассчитан как на 2D-, так и на 3D-игры. Он подходит под разные платформы и языки. На нём создается большинство мобильных и инди-игр. Он бесплатный, но если вы зарабатываете на своих играх больше 100 тысяч долларов в год, то придётся делиться ими с разработчиками Unity.
Как строится игровой код
Допустим, вы выбрали язык и движок, составили план. Что дальше? Продумайте всё от и до. В зависимости от выбранного вами пути (чистый язык или использование движка) будет отличаться и то, что вас ждёт на разных этапах разработки.
Если делаете всё своими силами, то на ваши плечи ляжет работа над физикой, механикой, графикой, искусственным интеллектом и балансом. Если выбрали движок — можно вздохнуть спокойно.
Физика
Физика — это то, как мир игры реагирует на действия игрока или объектов внутри мира. Вот какие могут быть физические действия:
Если пишете сами, то для обычного прыжка придется:
Не говоря уже о том, что нужно работать над анимацией всего этого.
В движках уже прописана физика, и нужно лишь подогнать её под свои нужды. Для примера:
И для этого не придётся писать код вообще — всё уже предусмотрено.
Механика
Игровая механика — это то, какими способами игрок взаимодействует с миром. Совокупность игровых механик составляет игровой процесс. Например, вы уже реализовали возможность ходьбы и прыжков. Эта игра, скорее, платформер.
А если добавите механику получения опыта, повышения уровней, прокачки навыков, — игра станет походить на RPG. Механика — такая же важная составляющая игры, как и сюжет или графика.
Ещё один пример: вы написали сценарий к игре, в которой нужно сбежать из тюрьмы. Даже если игра будет самой линейной в мире, игровая механика может всё изменить:
Будучи программистом, придётся уделять много времени механике.
Графика
Раньше графика создавалась с помощью программного кода, потом придумали текстуры и спрайты, а для 3D-игр используются модели. Подготовив все текстуры и модели, нужно добавить их в игру.
В движке достаточно просто загрузить нужные файлы и прикрепить их к нужным моделям. Иначе — прописывать всё вручную, в том числе и анимацию.
Для анимации 2D-объектов создаётся текстура по типу той, что на изображении выше. Она разбивается на равные части, которые сменяют друг друга. То есть игрок сначала видит первый кадр, который потом сменяется на второй, а затем на третий — это создает иллюзию движения.
Если брать 3D-модель, то используется скелетная анимация — модель как бы нанизывается на специальный каркас (скелет) с подвижными частями. Движение этих частей прописывается в коде.
На скриншоте видно, как персонаж сгибает руку в местах с точками (вершинами). Таких точек может быть очень много, если требуется сложная анимация — жесты, мимика и так далее.
Создаётся анимация так: прописываются точки координат или захватываются движения реального актера.
Первый способ сложный, но дешёвый, потому что от программиста требуется только прописать движения — сдвинуть точку A1 на координаты (50,240).
Второй проще, потому что достаточно одеть актеров в специальные костюмы с маячками, отснять это и перенести в игру. Но тут, конечно, придётся оплатить костюмы, павильон, работу операторов, постановщиков и актёров.
Баланс
Чтобы играть было интересно, нужен баланс. Это значит, что у каждого противника должны быть сильные и слабые стороны. Так геймплей не превратится в убийство одуванчиков или десятичасовые перестрелки с боссом.
Искусственный интеллект
Если геймплей предусматривает взаимодействие с NPC, то им нужно прописать модели поведения: реакцию на действия игрока, агрессивность, возможность вести диалоги или торговать.
Работа с ИИ — одна из самых сложных, потому что стоит учитывать множество ситуаций, для которых задумана реакция. Например, когда вы пытаетесь пройти в дверь, ваш компаньон обязательно должен преградить вам путь, чтобы жизнь малиной не казалась.
На какие платформы ориентироваться
Разобравшись с тем, как всё будет устроено в игре, можно приступать к разработке. Но чтобы проект был коммерчески успешен, выбирайте популярные платформы. Всего можно выделить четыре:
У каждой из этих платформ своя аудитория с вполне конкретными предпочтениями. На мобильных устройствах предпочитают головоломки (2048, 94%, Cut the Rope), аркады (Subway Surf, Temple Run, Angry Birds) и казуалы (Talking Cat Tom, Kitty Kate Baby Care, Hair Stylist Fashion Salon).
На компьютерах играют в MMORPG (Lineage II, World of Warcraft, Skyrim) или шутеры (Battlefield, Call of Duty, Counter-Strike).
Приставки подходят для гонок (Need for Speed, Blur, Burnout Paradise), приключенческих игр (Assassin’s Creed, Portal, The Walking Dead) и так далее.
В браузерах собирают пазлы и строят фермы.
Конечно, можно сделать и головоломку для PS4, и гонку для браузера — никто никого не ограничивает.
Заключение
Будьте готовы к тому, что ваша первая игра не станет шедевром. Но не расстраивайтесь, потому что такие проекты отлично подходят для обучения.
Подтяните свои навыки в программировании, чтобы научиться создавать игры, изучите современный язык, который часто используется разработчиками, и выпустите свой первый проект. А наш курс поможет вам в этом.
Геймдев для чайников или как в одиночку сделать игру
Начало пути. Идея и графика
Все началось в декабре 2016-го года, когда я встретился с тремя бывшими одногруппниками.
Мы заговорили за настоящее, кто кем работает, чем занимается, и конечно же заговорили про будущее.
Так вышло, что я графический дизайнер, двое других программисты (C# и Swift), а четвертый «перспективный».
Четвертый рассказывал про то, какие огромные возможности в этом мире и бла бла бла… И в этот момент меня осенило. Я за столом с двумя программистами, почему бы не объединиться и не сделать что-то свое? Вот так и появились первые мысли о геймдеве.
Первую неделю после встречи мы обсуждали идеи, определились с одной и я приступил к графике. Графику делал в векторном редакторе Adobe Illustrator, чтобы в любой момент можно было изменить разрешение, так как мы еще не совсем понимали какое именно разрешение нам нужно.
Набросал графику и на следующий же день один из программистов говорит, что не хочет продолжать, так как нашел занятие поинтереснее. За ним сливается и второй.
И тут я понял, что у меня появилась мечта и она начинает отдаляться.
Новый год — новые силы. Программирование
Наступил новый год и я понял, что опускать руки не стоит и нужно самому довести начатое до конца. И сразу наткнулся на Corona SDK — кроссплатформенное решение для 2D игр. Есть возможность делать на PC, Android, при наличии Xcode и на Mac, iOS.
Я не программист, по этому начал проходить туториалы прям на их сайте, очень удобно и информативно. Так я познакомился с языком программирования Lua, именно на нем придется писать, если решил использовать Corona SDK. Язык несложный, скриптовый. Lua широко используется в геймдеве для написания уровней и всяких расширений, в том числе и в игре World of Warcraft он активно используется. Статья «Lua за 15 минут» поможет быстро разобраться с языком.
Прошел все туториалы и принял решение сначала делать под Android. Ибо у меня PC, а не Mac, да и устройств на Android в наличии было аж 4, в то время как яблочных девайсов у меня нет.
Месяца мне хватило, чтобы с консультациями от моего хорошего друга программиста (не одногруппника) набросать функционал игры. Советы он давал ценные, по этому мы стали партнерами.
Дайте больше шума. Музыка и звуки
Игра все больше становилась похожа на готовый продукт. И вот я нахожу подходящие звуки, но их длительность меня не устраивала, на помощь пришел Audacity. Подрезав звуки и переделав их в wav, я получил нужные мне звуковые эффекты. Сразу после этого нашлась и музыка, это был ambient с бесплатной лицензией, который пошел на резку в Audacity и был зациклен. Таким образом музыка в игре занимает меньше мегабайта и состоит из одного трека и нескольких звуков.
Важно: Бесплатные звуки и музыка должны иметь соответствующую лицензию на использование, это может быть как полностью бесплатная лицензия без указания автора, так и лицензия Creative Commons, которая позволяет бесплатно использовать, загружать и даже изменять произведения, но автора стоит указать в credits/титрах.
Звон монет и шепот денег. Монетизация
Стал вопрос о монетизации. Игра бесплатная, простая, без внутренних покупок, по этому оставался только вариант с рекламой. На Android, да и на iOS с этим проблем нет, к тому же Corona SDK поддерживает самые популярные рекламные плагины. Мой выбор пал на Appodeal. Он работает со всеми крупными сетями мобильной рекламы, для того чтобы показывать только самую дорогую рекламу внутри приложения.
В игре использовал межстраничное объявление и видео за вознаграждение. То есть игрок сам решает, смотреть ему видео или нет, если да, то он получает вознаграждение, в моем случае он получает возможность продолжить с того же места, на котором проиграл. А вот межстраничное объявление игрок увидит после каждого проигрыша, как по мне, это не мешает игровому процессу.
Игровые сервисы. Тестирование и первая публикация
Игру планировал выпустить сразу на двух торговых площадках — Google Play и Amazon. На первой аккаунт разработчика стоит 25$, а на второй бесплатно. По этому начал именно с Amazon. К тому же у меня 2 планшета от Amazon и мне близка их экосистема.
Для списка лидеров и достижений у Amazon есть Game Circle, у Google — Google Play Games Services. Проблем ни с одним, ни с другим не возникло, так как документации у Corona SDK по ним предостаточно.
На этапе тестирования дал друзьям поклацать игру, замечания себе выписал, внес поправки, а для отслеживания ошибок использовал adb logcat. Исправил баги и 6-го марта игра увидела свет на Amazon.
5 звезд на Amazon. Создание промо ролика. Публикация на Google Play
После двух положительных оценок на Amazon сразу же купил аккаунт разработчика в Google Play, цена вопроса 25$. Это пока единственные затраты на игру.
Принялся за создание промо ролика для игры. Выбор пал на Adobe After Effects, так как мне близки продукты от Adobe. Честно скажу, не было опыта в создании видео, но у меня как-то быстро получилось разобраться и на видео потратил всего день. Просто очень хотелось поскорее опубликовать игру в Google Play.
И вот момент истины, промо ролик готов, аккаунт куплен, осталось заполнить описание игры, нажать на кнопку и просто ждать.
Спустя несколько часов я получил уведомление, что игра опубликована. Это было 19-е марта 2017-го года.
Выводы
Для разработки под iOS все тоже самое, но нужен Mac с Xcode, яблочные устройства для тестирования, а за аккаунт разработчика нужно платить 99 долларов каждый год, а это уже не 25$ за Google Play. По этому если все таки речь идет о геймдеве с минимальными вложениями, то либо Amazon, где вообще платить не надо, либо Google Play, с его четвертью Франклина.
Так в одиночку, используя кроссплатформенный движок на простом и понятном для начинающих языке Lua и с минимальными затратами за 3 месяца можно с нуля сделать игру и выпустить ее. Верьте в себя и общайтесь с людьми, которые связаны с геймдевом, community очень помогает.
Удачи в начинаниях и доводите проект до конца, ибо только так можно чему-то научиться и получить опыт.
Как стать разработчиком игр имея за пазухой только здравый смысл?
Вступление
Давно мечтаешь создать игру? Чтобы любой человек планеты смог без проблем ее найти на пространствах интернета и сыграть? Но у тебя нету ни средств для того чтоб оплатить должную учебу или мотивации чтоб поднять свой «ленивый зад» и начать кодить? Или ты просто сантехник, которому надоело каждый день сидеть за унитазом соседей и хочешь попробовать что-то новое в жизни? Ты, естественно, без проблем можешь начать разрабатывать игры. Только тебе нужно определиться с одним вопросом. А реально нужно тебе это? Если да, то какой толк ты хочешь вынести из всего этого?
Чтоб заработать кучу денег и прославиться?
Чтоб утереть нос другу, который не первый день хвалится что он крутой разработчик во всем мире?
Или просто так, для души, потому что ты еще тот геймер и у тебя есть довольно неплохая идея для разработки игры, которая будет не хуже, чем те, которые находятся в топе любого магазина.
Если так, то завари чашку кофе и погнали разберем несколько пунктов которые могут помочь тебе стать на путь разработчика игр ну или просто забавно провести время и отвлечься от дневной суеты.
Начальная разработка. Ожидание-реальность
Будь готов к тому, что на начальных этапах у тебя мало что будет получаться. И попытки создать Хагрида из Гарри Поттера
Рис.1. Ожидаемый результат
могут превратится в анекдот. Хорошо если у тебя получится что-то такое:
Рис.2. Хороший результат
Но если в итоге выйдет что-то такое:
Рис.3. Ржачный результат
То я уверен, что после того как сравнишь с оригиналом, то ржач будет стоять целый день.
Ну а вообще самое главное на начальном этапе это хоть какой-то результат. Как говорится «отрицательный результат, тоже результат». Ведь потом эти свои наработки будешь улучшать и со временем выйдет что-то годное. Не бойся экспериментировать и создавать что-то свое. Пусть на первый взгляд это будет устрашающе выглядеть. Ведь знаменитые компании не с первого раза стали знаменитыми. Все начиналось с мелочи. И, возможно, у кого-то первые наработки были созданы на коленке в гараже у соседа. Кто знает, может и твой начальный ужастик со временем наберет популярность и вырвется в топ лучших.
Что лучше? 2д или 3д на начальном этапе?
Многие начинающие разработчики могут сказать, что 2д проще. Тем что это 2д. Ну согласиться я не могу. Лучше то, что нравится. Нравится 3д? делай в 3д. Нравится 2д? Делай в 2д. Ведь разница тут только в координатной плоскости. А суть та же самая. Ведь что в 2д что в 3д тебе придется двигать персонажа. Что там, что там обрабатывать триггеры. Что там, что там писать ИИ (искусственный интеллект) для врага. То, что имеет меньшую размерность не значит, что проще. Как говорит знаменитая пословица: «Главное не размер, а умение пользоваться». Так что главное не размерность координатной плоскости, а то как ты умеешь с ней обращаться. Везде есть свои плюсы и минусы. Если рассматривать на уровне графики, то в 2д тебе нужно нарисовать спрайт и потом секвенцию кадров для анимации, ну а в 3д, нужно смастерить 3д модель и анимировать с помощью костевой анимации (если живое существо) или достаточно просто создать шар и используя ключи анимации просто двигать его, вращать, масштабировать и т.д. Но если нет художественного вкуса, то может получится что-то консервное (вспомним Хагрида). Так что, если говорить уж про размерность, то каждый выбирает по вкусу. Тот, кто хорошо владеет 3д пространством, тот с легкостью может перейти на 2д, а тот, кто хорошо владеет 2д, то тому нужно представить еще одну ось и адаптироваться.
Стоит ли платить за обучение?
Этот вопрос для каждого индивидуален и зависит от каждого. Можно и без преподавателей обучиться, но это будет долгий процесс поиска нужной информации в гугле. Можно вступить в разные группы единомышленников, но не надейся, что с тобой там нянчиться будут. Могут помочь советом, а могут и послать нафиг за наглость. Помочь могут с каким-то определенным алгоритмом и направить на ресурс, который может ты и читал, но не внимательно. Но не надейся что там будут объяснять «как создать переменную» и «зачем ставить ‘;’ в конце строки» в С-подобных языках программирования. Такие вещи могут рассказать преподаватели в учебных заведениях, или те, которым ты будешь платить деньги на курсах. Я не призываю категорически отказываться от платных курсов. Так как там собрано большинства материала, который ты бы сам годами собирал на пространствах гугла (ну если ты конечно не красноглазый задрот, который днями и ночами сидит за компом и даже не выходит на улицу, потому что дневной свет слепит глаза). Есть курсы, которые предлагают первое бесплатное занятие. На нем ты конечно и не узнаешь весь ожидаемый материал, но зато оценишь преподавателя, его манеру общения и сможешь решить стоит ли тебе платить за курс обучения с ним или, как обычно говорят на рынках «я посмотрю еще и тогда вернусь».
Unity vs Unreal Engine (UE)
Как ты уже догадался речь пойдет о игровых движках. Какой лучше выбрать? Ответ дам простой – какой понравится. Ведь в этом то я тебя ограничивать не буду. Есть много игровых движков, как профессиональных, так и простых. Но Unity и UE считаются самыми популярными. Но ты можешь посмотреть и множество других, таких как CryEngine, Godot, Creation Engine или какой-то конструктор по типу Construct, или вообще можешь написать свой и ни от кого не зависеть.
Плюсов от своего движка много, но главный и единственный минус это разработка. Нужно знать много чего о графике, нагрузке на систему и прочее чтоб не просто сделать «какое-то дерьмо», а действительно подходящий движок, который можно использовать еще много лет и усовершенствовать. Или можно выбрать из уже готовых и не утруждать себя, и не брать лишние проблемы на свою голову. Можешь попробовать один или оба (чтоб сравнить какой ближе по душе) этих игровых движков. Могу сказать вкратце:
Unity – может справиться даже из слабыми ПК, ну конечно не из самыми древними мумиями, но 4 гб оперативы и 1 гб видеокарты потянет. Не для масштабного ААА проекта, а для какой-то простенькой игрушки вполне сойдет.
Конечно программировать будешь на C#, так как JavaScript был выпилен из движка. Ну а если ты жестокий фанат JS, то можешь скачать раннюю версию и наслаждаться разработкой. Также можешь использовать внешние плагины чтоб программировать например на Python.
А вообще на этом движке можешь создавать хоть ААА проекты, хоть обычные 2D платформеры для различных устройств (хоть для Android, PC, IOS, tvOS (только представь, твой чудик, который создашь, будет бегать по всех теликах планеты)) так как он считается кроссплатформенным. Только набей свой комп хорошей начинкой и в «бой за орденами».
Unreal Engine – как минимум 8 гб оперативы точно нужно. Так как это мощный игровой движок и Unity уступать ничем не собирается. Тут без проблем создавай что хочешь, хоть ААА, хоть 2D, хоть 2D с элементами ААА. Только одень свой ПК пристойно, чтоб он не залагал только при нажатии на сам ярлык. А так этот движок тоже кроссплатформенный, как и Unity. Правда язык программирования тут С++ и BluePrint (визуальный скриптинг для тех кто не шарит в программировании). Все что душе угодно. Разработчики так устроили это логово чтоб заманить всех кто шарит и тех кто не шарит в программировании. Все что вашей душе угодно лишь бы вы хоть что-то делали.
А так эти два мирных существа (о движках идет речь) еще имеют свои магазины ресурсов где ты можешь скачать различные модели, скрипты, текстуры вплоть даже до кусков сцен или игр, которые можешь переделать под себя и наслаждаться разработкой.
Сможет ли сантехник с нулевыми знаниями стать геймдев разработчиком?
Бессрочный ответ – да. Разработчиком может стать кто угодно. Хоть даже повар, который не умеет готовить. Может просто готовка это не его, а где-то в глубине души он прирожденный игродел.
А если работа не приносит удовольствия, то это каторга. Особенно если эта каторга за копейки. Многие, кто работают на нелюбимой работе просто говорят, что они ничего не умеют и это единственный их доход, а на лучшую работу нужно лучшие навыки. ТАК БЛИН ЧТО ЖЕ МЕШАЕТ ТЕБЕ ИХ ПРИОБРЕСТИ? Ты можешь временно работать на этой работе для того чтоб получать з/п и с голоду не откинуться, а в свободное время можешь приобретать навыки в любимом занятии.
Только не делай хобби работой, так как работа может угробить это хобби и в свободное время сложно будет чем-то заняться если хобби было одно, и то которое напоминает о работе. Как говорят «работа должна быть любимым занятием, а не каторгой», так как в такой ситуации поступить? Просто. Нужно иметь больше чем 1 хобби. Одно можно превратить в работу, а следующие как отдых. И работа увлекательная и в свободное время есть чем заняться и отвлечься.
Выводы
В итоге стало понятнее, чтобы стать разработчиком не обязательно нанимать дорогих преподавателей чтоб оттачивать свои навыки. Можно это сделать самому. Да – это долго. Да – это сложно. Но зато результат на лицо будет и денег сэкономишь и навыки приобретешь.
Но также, эти навыки можно приобрести и немного быстрее наняв преподавателя. Если знания нулевые, то сойдет любой преподаватель. Так как в таком случае он шарит больше чем ты. А если бюджет позволяет, то лучше нанять качественного. А, также, нужно иметь желание, тонны пачек нервов, самоорганизованность и конечно стремление и любовь к играм. Так как без этих параметров навряд ли ты сможешь продвинуться если будешь опускать руки после каждой неудачи. Илон Маск тоже не с первой попытки стал успешным. Так что работай над собой, выбери свою дорогу, цель и следуй ей. И помни что эта дорога будет подобна различным раннерам, то есть на этом пути обязательно будут вещи или люди, которые будут стараться сбить тебя с пути и не дойти к цели. А если потерпишь неудачу и сдашься, то свернешь с пути раньше, чем узнаешь какой приз ждет тебя в конце этого пути. И каждый навык расценивай как чекпоинт в играх, приобретая который, ты сохраняешь свой прогресс на пути и после неудачи можешь воскреснуть с этой точки сохранения. Все в твоих руках! Главное верь в это, и ты добьешься своего успеха!