про что можно сделать игру
На чём создавать игры: что есть что в мире геймдева
Так много разных инструментов для создания игр, что голова идёт кругом. Разбираемся, что это вообще такое и что выбрать для себя.
Unity, Unreal Engine, Godot, Game Maker Studio, Source, RPG Maker, CryEngine, Creation Engine, C++, C#, JavaScript, Swift, Java, Objective-C, Lua, Python, PyGame, PHP, Scratch, DirectX, PhysX, OpenGL, Havok, Cocos2D…
Большой список, не правда ли? Это только часть технологий, которые используются для создания игр. Если вы очень хотите войти в геймдев, но пока ещё ничего не знаете, сам этот список может вас отпугнуть. Или же по чьему-нибудь совету вы что-то выберете, а потом, освоившись немного, поймёте, что это не совсем то, что вам нужно.
Эта статья — смесь энциклопедии и дорожной карты, которая поможет вам выбрать инструментарий для себя.
Пишет о программировании, в свободное время создает игры. Мечтает открыть свою студию и выпускать ламповые RPG.
Что есть что
Движки для разработки игр
Игры создаются с помощью движков — набора инструментов, который позволяет работать с графикой, физикой, скриптами и прочим.
Вот скриншот интерфейса движка Unity:
В левом верхнем углу — игровая сцена, на которую можно добавлять объекты, двигать их, убирать и так далее. Ниже расположено игровое окно — в нём можно увидеть, как будет выглядеть готовая игра. Можно даже нажать на кнопку Play и поиграть.
Дальше можно увидеть иерархию объектов на сцене, файловый менеджер и вкладку Inspector — в ней есть разные настройки для выбранного объекта. Кроме того, можно зайти в настройки проекта и указать желаемые показатели для гравитации, освещения, теней, качества графики и всего прочего.
Application Programming Interface — интерфейс программирования
Вы либо используете готовый движок, либо пишете свой — у обоих вариантов есть плюсы и минусы.
Список современных движков:
Впрочем, вы можете обойтись и без движка, если игра очень маленькая, вроде браузерки или небольшого платформера.
Языки программирования
Дальше идут языки программирования — с их помощью вы будете писать для компьютера условия и команды: если А, сделай Б, а если В, сделай Д. Несмотря на то что движки берут на себя огромную часть работы, программировать придётся много.
Перемещение по меню, переход между локациями, управление персонажем, движение камеры, смена музыки, диалоги, система квестов — всё это и многое другое нужно будет запрограммировать. Не говоря уже об игровом искусственном интеллекте.
Если вы уже выбрали какой-то конкретный движок, то и язык нужно выбирать подходящий. Например, в Unity поддерживаются C# и JavaScript
(его модификация, которая называется UnityScript), а в UE4 — С++.
Список языков:
Фреймворки
Вы можете использовать язык, чтобы написать игру без движка. Например, на JavaScript создаются браузерные игры, на C++ или C# — игры для компьютеров, на Java — для устройств на Android, и так далее.
Для этих языков есть либо библиотеки для работы с графикой, либо целые фреймворки для создания игр. Фреймворк — это каркас, почти готовое приложение. Разработчик просто дописывает для этого каркаса какие-то дополнительные функции, подгоняя его тем самым под свои нужды.
Разработчики игры Celeste решили отказаться от движков в пользу фреймворка XNA от Microsoft для языка C#. В итоге у них получился платформер с очень крутым управлением.
Использование библиотек или фреймворков, наряду с написанием собственного движка, даёт максимальную свободу. Но у вас пропадает возможность пользоваться графическим интерфейсом, а все настройки и параметры приходится писать с помощью кода.
Список фреймворков:
Библиотеки
Библиотеки, в отличие от фреймворков, не дают почти готовое приложение, но предоставляют определённые инструменты. Самый простой пример — библиотека Math (математика), которая есть практически в каждом языке программирования.
Использование Math позволяет вам без проблем возводить числа в степени, находить корни, искать модули, высчитывать синусы, косинусы и так далее. Вы не реализуете всё это самостоятельно, а просто вызываете нужную функцию и передаёте ей параметры.
В геймдеве используют более сложные библиотеки, которые позволяют работать с графикой или физикой. Например, графические библиотеки позволяют растрировать игровые объекты.
То есть разработчик не пишет для видеокарты инструкцию, какие пиксели ей выводить. Вместо этого он добавляет в игру спрайты (изображения)
или 3D-модели, а графическая библиотека сама высчитывает, как это должно выглядеть на мониторе.
Физические библиотеки берут на себя работу (сюрприз!) с физикой: ускорение свободного падения, закон сохранения энергии, импульсы, векторы — самые безобидные примеры.
Аналогичные библиотеки есть и для работы со звуком и другими аспектами игровой разработки.
Список графических библиотек:
Список физических библиотек:
Впрочем, если вы используете какой-нибудь движок, то особо задумываться об этом не нужно.
Что из этого выбрать
Если вы новичок, то стоит начать с движка — это поможет лучше понять, как вообще строится процесс создания игр. Выберите один движок и создайте несколько проектов. При этом постарайтесь понять, что происходит под капотом. Если у вас есть опыт в программировании, всё равно начните с движка — причина та же.
Критерии выбора движка следующие:
Если хотите, почитайте отзывы, но они могут вас запутать. Так, многие не любят Unity, но разработчиков на нём становится всё больше.
Source
Например, на Source сделаны практически все игры от Valve вроде Half-Life и Portal.
Как создать интересную игру
Сделать игру интересной не всегда удается даже крупным студиям. Однако мы можем поделиться с вами парой секретов.
Придумать и разработать интересную игру сложно, потому что нужно учесть очень много факторов, начиная с сюжета и графики и заканчивая геймплеем. Кроме того, есть несколько компонентов, которые должны быть в каждой игре, — без них она не сможет увлечь пользователей.
Но сначала нам нужно понять, почему одни игры интересные, а другие — нет.
Создание игр — тонкое искусство, в котором нельзя гарантировать, что все пройдет как по маслу. Иногда проект не спасает даже наличие всех нужных компонентов.
Пишет о разработке сайтов, в свободное время создает игры. Мечтает открыть свою студию и выпускать ламповые RPG.
Что делает игру интересной
Одни ценят в играх сюжет или графику, в то время как другие предпочитают хорошую боевую систему и открытый мир. Однако даже если в игре есть всё это, она может быстро наскучить или вообще не зацепить.
Потому что важны не только игровые механики, но и следующие компоненты:
Давайте посмотрим, что это такое и чем оно помогает игре.
Цель — это то, чего добивается игрок или какая перед ним поставлена задача. Иногда главный герой должен спасти мир или защитить родину на войне, но бывают и такие игры, где нужно найти выход из психиатрической лечебницы или отомстить за убийство семьи.
Какой бы ни была цель, игрок должен понимать, почему ее нужно достичь. То есть он должен видеть, что это важно для его персонажа и что у него есть мотивация. Например, если он мстит за жену и детей, то нужно показать, что они действительно были близки — проводили время вместе и радовались. Тут хорошо работают контрасты: когда сначала показывают счастливого героя в кругу семьи, а потом его же, но уже в депрессии из-за утраты.
Даже если речь идет о спасении мира, то это тоже должно касаться персонажа — а следовательно, и игрока — лично. Высокие побуждения героя никого не впечатлят, потому что это избито. Нужно что-то большее, чем всеобщее благо, — собственные интересы.
Например, иногда персонаж понимает, что если умрут все, то вместе с ними и он. Или же им движет жажда славы или наживы, а может, герой просто следует за своей любовью и параллельно успевает всех спасти. Как бы то ни было, необходимо показать чувства, которые знакомы игроку, чтобы он мог ассоциировать себя с главным героем.
Игру нужно рассчитывать на определенную аудиторию — кому-то интересно играть за вора, который хочет стать лучшим в своем деле, но кому-то больше по душе боевые действия для захвата мира.
Если цели не будет совсем, то игра быстро надоест, если вообще сможет привлечь к себе внимание. Однако иногда цель может быть не вполне очевидной либо игрок сам должен ее найти. Например, в Minecraft пользователи сами решают, чем им заняться и чего добиваться.
Путь — это то, что проходит персонаж, чтобы достичь цели. На пути должны появляться всяческие препятствия, которые мешают просто прийти и забрать то, что тебе нужно. Эти преграды не должны быть слишком сложными, потому что иначе игрок почувствует себя беспомощным и не захочет продолжать. С другой стороны, слишком просто тоже быть не должно, потому что тогда станет скучно.
Также на протяжении пути персонаж должен меняться: если изначально он хотел мести, то к концу может простить врага, потому что поймет, что месть не сделает его счастливее. Или, например, он был верным рыцарем, но постепенно начал сомневаться в своих покровителях, потому что увидел их темные стороны.
Однако если вся игра будет строиться только вокруг прокачки, то это однообразие действий быстро надоест. Представьте, что вы слушаете музыку, в которой нет ничего, кроме трех повторяющихся нот. Интереса хватит на пару минут, но потом уже станет тошно.
Чтобы этого не случилось, в игру нужно добавить ритм или динамику: это чередование действий, которые должен выполнить персонаж. Например, сначала немного сражений, потом исследование локации, решение головоломки, снова поединок, разговор с ключевым для сюжета персонажем и так далее.
Если человек будет занят одним делом слишком долго, ему быстро надоест, и он не захочет больше играть.
Легче всего добавить динамику в линейные игры, потому что в них разработчик сам решает, какая задача будет поставлена перед игроком и когда. Если же в игре открытый мир, то занятие себе выбирает игрок. Он может слишком долго собирать ресурсы или отстраивать убежище, и уберечь его от этого невозможно. Единственное, что можно сделать, — добавить столько возможностей, чтобы найти занятие по душе можно было всегда.
Награда
Чтобы человек получал удовольствие, его нужно поощрять. Причем делать это нужно не только в конце, когда цель уже достигнута, но и на протяжении всей игры.
Например, в RPG многие игроки стараются полностью изучить локацию перед тем, как двигаться дальше. Если они зашли в пещеру и убили всех врагов, то после этого обыщут там каждый угол и только потом выйдут на поверхность.
Это хорошая возможность, чтобы спрятать где-нибудь сундук с новой броней или золотом.
Также награда не обязательно должна быть материальной. Можно раскрыть дополнительную часть сюжета или просто показать что-то забавное.
Если же игрок не найдет ничего, то он будет разочарован, и это может оттолкнуть его от игры:
«Я потратил кучу времени, чтобы всё тут осмотреть, но ничего не нашел. Ну и зачем мне дальше этим заниматься?»
Также награждать нужно, когда игрок совершенствует свои навыки. Например, можно сделать игру немного сложной в начале, но, потом, если игрок продвинется до определенного места, наградить его чем-нибудь.
Это вызовет у него дополнительный интерес, поэтому он будет и дальше прокачивать свои навыки (речь о навыках игрока, а не персонажа), чтобы получить еще большую награду.
Баланс
Многие игры грешат тем, что игрок сначала умирает от одного удара, а потом, когда находит хорошие предметы и прокачивается, сам становится непобедимой машиной смерти. Это плохо, потому что сначала играть слишком сложно, а потом — слишком легко. Разработчики Diablo III решили эту проблему: там враги становятся сильнее, когда развивается сам игрок.
Убив не один десяток врагов и пройдя все необходимые локации, игрок обнаруживает довольно слабый меч.
Геймдизайнер с нуля: как начать делать игры без опыта
Голубев Никита, коммерческий автор и переводчик, специально для блога Нетологии перевёл статью разработчика игр Анжелы Хе о том, как без навыков программирования создать свою первую игру.
Всего 2 года назад я была 17-летней школьницей и ничего не знала о программировании. Это не помешало мне начать учиться и через несколько месяцев выпустить свою первую игру в Steam. Сегодня у меня более 10 игр для ПК, интернета и мобильных устройств и свыше 1,9 млн игроков.
Не важно, что вы умеете сейчас — при должном желании вы тоже сможете делать игры. Два года назад такое казалось невозможным: это было самое сложное, что я сделала в жизни, и оно того стоило. Теперь я понимаю, что в разработке игр, как и в любом другом деле, вы растёте только тогда, когда пробуете, ошибаетесь и совершенствуетесь.
Всему, что я знаю, я научилась сама, а теперь научу вас.
Чтобы сделать игру, нужно пройти 6 этапов:
Концепция
Совет
У вас есть классная идея. Но как оформить её на бумаге?
У каждого свой путь. Одни составляют дизайн-документы по 60 страниц, другие напишут лист неразборчивых заметок. Не знаю, как удобнее для вас, но обязательно зафиксируйте следующее:
Когда приходит вдохновение, бросайте всё и пишите. В следующий раз, когда мысль уйдёт, не понадобится высасывать идеи из пальца.
Инструменты
Графика
Совет
Если вы не умеете программировать, сначала прочтите раздел «Программирование». Вряд ли вы хотите потратить время на графику и выкинуть её потому, что под неё не написать код.
Даже если вы не умеете рисовать, игру можно сделать красивой, используя три визуальных принципа: цвет, форма и объём.
Thomas Was Alone — простая и прекрасная игра
Интерфейс
Подумайте, как сделать игру уникальной с помощью цветовой схемы, шрифтов и иконок без потери удобства для игрока. Понятна и читается ли важная информация?
Неудачный и удачный шрифт
2D-анимация
Анимацию можно реализовать двумя способами:
Что ещё может пригодиться
Советы, которые применимы не только к игровой графике, но и к другим программам:
Без тайлов и с тайлом
Пятно расширяется, но углы остаются прежними
Инструменты
Программирование
Совет
Выберите игровой движок, среду разработки и начинайте погружаться в код.
Представленных ниже знаний достаточно для начала. Все примеры написаны на C++, одном из языков программирования в Unity3D. (Примечание переводчика: на самом деле в Unity используется C#, который похож на C++).
int — тип данных, i — имя переменной, = 0 — значение переменной.
Используя оператор else, можно расширить условие и отобразить что делать, если условие не соответствует истине:
For-циклы похожи на while-циклы. Для while мы пишем так:
Равнозначный for-цикл будет таким:
Тогда при выводе функции выполняются два выражения внутри неё.
Если в коде что-то идёт не так, на помощь приходят исключения. Они как бы говорят: «Так, погоди, здесь ты сделал что-то нелогичное. Перепроверь ещё раз».
О чём ещё надо знать:
Код — это вызов самому себе. И ничего не понимать поначалу — нормально.
Как и любому навыку, программированию нужно обучаться. И, возможно, это окажется довольно интересно.
Другие немаловажные основы программирования:
Инструменты
В Unity Asset Store, bitbucket и GitHub очень много бесплатных ассетов. В своих проектах я использую минимум по два. Они упрощают жизнь, но далеко не идеальны. Заметили ошибку — исправляйте и говорите разработчику о ней.
Немаловажный, даже главный источник решения проблем с кодом — Гугл!
Совет
Аудио способно создавать настроение и погружать в игру, но для него нужна память.
Для начала решите: вы хотите звук? Если да, будет ли в игре музыка, звуковые эффекты, озвучка или повествование.
В любом случае потребуется запись и сведение таким образом, чтобы звук подходил под настроение игры. Например, Bastion использует органические и инструментальные звуки, хорошо вписывающиеся в мир игры. Crypt of the Necrodancer включил в себя смесь электронных ритмов и восьмибитного рока, чтобы передать темп и яркость игры.
Погружение решает. Если звуки не совпадают с настроением игры, игроку будет сложно погрузиться в ваш мир.
Инструменты
Приложения для работы с аудио:
Подготовка к публикации
Совет
Существует небольшая вероятность — на 99,99 процентов, что в игре есть ошибки. А это значит, что самое время заняться баг-тестом.
Как тестировать игру на баги?
Типичные ошибки
В чём дело: функция выполняется с несуществующей (null) переменной.
Быстрое решение: проверьте, является ли переменная null.
Примечание: Проверьте, какие кавычки вы используете.
» //правильные кавычки;
» //ненужные кавычки, они принесут вам немало ошибок.
Советы по оптимизации
Инструменты (только для Unity)
Публикация
Совет
Самое время показать всему миру своё творение.
Продвижение — самая волнительная стадия. Если вы сомневаетесь, вам поможет сообщество гейм-дизайнеров. Помните, что вы не одиноки, и раз прошли так много, нужно завершить дело до конца.
Вы не узнаете, станет ли игра хитом, пока не опубликуете её.
Если хотите, чтобы все узнали об игре, напишите анонсы для игровых медиа, участвуйте в фестивалях и конференциях.
Отправьте описание игры в прессу за неделю до выхода — дайте людям время написать о ней. Может случиться, что о ней не станут писать, но помните: журналисты любят красивые истории о разработчиках, уникальную или противоречивую идею и медиа-кит.
Не пишите в игровые издания, которые не освещают ваш жанр или целевую игровую платформу.
Письмо видеоблогеру Markiplier, чей канал насчитывает более 21 миллиона подписчиков
Это прекрасный инструмент для продвижения: Agar.io обрела популярность на 4chan, Butterfly Soup подскочила в загрузках после внимания в Твиттере.
Как лучше: публиковаться через издателя или самому. Хотите пойти по пути Hotline Miami, выпущенной Devolver Digital, или перенять опыт Farmville и Doki Doki Literature Club?
Чтобы сотрудничать с издателем, нужно сначала его найти. После этого будет небольшой ворох бумажной работы, зато вы получите достаточно средств для развития игры.
Если собираетесь издаваться самостоятельно, готовьтесь тратить немало времени на изучение маркетинга. Вы можете провалить кампанию по продвижению, но в процессе наберётесь ценных знаний и сэкономите деньги.
Количество установок игры растёт
Получилось! Теперь расслабьтесь, возьмите что-нибудь вкусное и отдохните. Вы работали не покладая рук и заслужили это.
Не бойтесь, если игра не получила ожидаемого внимания — это нормально. У моей первой игры всего 255 загрузок в Steam.
Главное, что вы сделали игру и многому научились. Сейчас этого достаточно, и всегда есть возможность попробовать ещё раз с новыми знаниями.
Инструменты
Сервис presskit() помогает разработчикам оформить описание игры для прессы.
Платформы для публикации:
Заключение
Нет простого пути создания игры. Есть только ваши решительность и усилия.
За каждым Half-Life, Minecraft и Uncharted лежат океаны крови, пота и слез.
Кен Левин, создатель Bioshock
Вы будете допускать ошибки, чувствовать себя в тупике и плакать. Это нормально — значит, вы растёте над собой.
Как создать игру без навыков программирования
Мечтаете создать свою игру, но мысли о том, что придётся учить языки программирования пугают вас? Вы гуманитарий? А может, у вас просто не хватает времени на изучение C# или Java? В любом случае, речь в этом посте пойдёт об игровых конструкторах. Для тех, кто не в курсе, это программы, в которых можно делать игры без написания кода. Конструкторы подходят для создания прототипов и участия в коротких Game Jams, которые сейчас популярны.
Первое знакомство
Однажды мне довелось побывать на мастер-классе по прототипированию у одного известного левел-дизайнера, работавшего в одной из крупнейших IT-компаний в России. На мастер-классе каждому участнику предложили создать свою игру за 1 час, а в конце часа показать игру остальным. То есть я первый раз запускаю программу и через час должен создать игру? Обладая некоторым опытом работы в программах, где необходимо писать код, я не поверил, что такое возможно. К моему удивлению, все (я в том числе) успели сделать свою первую маленькую игру. Пусть и простую, но в нее можно было играть. Так во мне зародилась любовь к конструктору под названием Clickteam Fusion 2.5 (раньше назывался Multimedia Fusion). Ещё популярными конструкторами являются Game Maker Studio и Construct 2. В основном, я работаю в Clickteam Fusion 2.5 (далее CF 2.5). На её примере раскрою принцип работы таких программ и их возможности.
Как это работает
Сразу отмечу, что конструкторы предназначены для работы в 2D. Уверен, в ближайшее время появятся и полноценные 3D-аналоги. Если вы настроены попробовать себя в 3D, то без знания программирования, вы сможете создать только карты для популярных игр, которые имеют редакторы-карт. Это уже другая тема, а сейчас я расскажу, как же работать в конструкторе.
При создании новой игры необходимо определить, для какой платформы хотите творить. Конструкторы дают возможность создавать игры для PC, IOS, Android, Html 5, Flash и т.д. Например, чтобы создать игру не только для PC, но и для IOS в программе CF 2.5, придётся докупить или скачать export module ios. Модуль конвертирует игру в код платформы – Xcode. Затем, через несколько нажатий, вы уже сможете тестировать игру на устройствах Apple (также нужен аккаунт разработчика Apple).
Ваша игра будет состоять из кадров (сцен). В каждом кадре можно создавать объекты, которые помогут вам решить любую задачу. Например, если это главное меню и вы хотите создать кнопку «Start», вам необходимо создать объект «active».
Окно «Редактор кадра».
Нажимаем правую кнопку мыши и выбираем «Insert object».
Выбираем объект «active».
Затем, нужно вставить в объект изображение кнопки или нарисовать во встроенном редакторе. В этом окне также можно создать покадровую анимацию. Один объект может иметь несколько анимаций (герой стоит, герой бежит, герой летит).
Окно «Графический редактор».
Осталось придумать событие, которое будет происходить с этим объектом.
Для этого, переходим с вкладки «редактор кадра» на вкладку «редактор событий».
Выбираем из списка необходимые события (условия), при которых, произойдут установленные вами действия над выбранным объектом, группой объектов, кадром.
Если игрок нажимает левой кнопкой мыши на объект «Start», то —
— происходит переход на следующий кадр.
Вот так просто, без программирования, можно создавать различные события, из которых будет состоять ваша игра.
Ещё несколько примеров:
— Если объект «шар» коснулся объекта «шип», то на экране появляется надпись «вы проиграли», а объект «шар» меняет анимацию на «шар лопнул».
— Если прошло более 5 секунд с начала запуска кадра, то в правом верхнем углу появляется объект «аптечка».
— Если объект «птичка» коснулся объекта «червяк», то «червяк» исчезает, в объект «счётчик очков» прибавляется единица и один раз проигрывается звук «жалобный крик червя».
Не изучая программирование, вы сможете создавать самые разные механики, используя фантазию и большое количество вспомогательных объектов. Перечислю некоторые из них:
Active object – самый популярный объект, его используют для создания объектов взаимодействия (главный герой, враги, платформы, ящики и т.д.). Он может содержать много разных анимаций (герой стоит, герой бежит, герой стреляет), иметь встроенные стандартные механики движения и управления.
Counter object – создает всевозможные счётчики жизней, денег, очков и т. д. Может быть представлен как в виде цифр, так и в виде шкалы.
INI object – сохраняет данные после выхода игрока из игры. Можно использовать для сохранения месторасположения любых объектов в кадре.
Physic engine object – появление этого объекта в кадре создаёт гравитацию, параметры которой можно регулировать.
Joystick control object– для touch-устройств создаёт эмулятор джойстика.
IOS store object – даёт возможность сделать внутриигровые покупки для AppStore.
Admob object – позволяет поместить баннерную рекламу в игру.
Touch object – учитывает все касания к экрану touch-устройства. Например, можно создать такое событие:
если игрок одновременно коснулся экрана тремя пальцами, то игра останавливается на паузу.
Если что-то не получается
У CF 2.5 есть отличная техподдержка, которая в течение 24 часов всегда отвечала мне. Ещё у них неплохой форум, на котором выложено много готовых кусков игр и рассказывается, как работать с новыми объектами. Не знаю, как дела с технической поддержкой у других конструкторов, но думаю, не хуже. Game Maker более популярен, чем CF 2.5 и, как мне кажется, тоже должен иметь хорошую поддержку. Один мой знакомый работает на Construct 2, он никогда не слышал, чтобы возникали трудности. А на youtube.com выложено много роликов, где разжёвывают создания популярных механик для большинства конструкторов.