понедельник, 26 августа 2013 г.

С чего начать разработку игр?

Этим вопросом я задался, когда решил попробовать разработку игр. Ничего общего с gamedev'ом я не имею и никогда не имел, а сам работаю в сфере разработки и внедрения JEE приложений. Итак, начнем.

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

Для того, чтобы найти ответ на главный вопрос "А с чего все же начать разработку игр?" предлагаю решить одну главную задачу:
  1. Выбор платформы/движка для разработки.
Прошу обратить внимание, что я не описываю тут, как поднять свою мотивацию к созданию игр или "Как полюбить gamedev?", предполагается, что вы уже достаточно мотивированы и просто хотите уже начать, если это так, то добро пожаловать под кат.
(Статья, призывающая и мотивирующая тут: Как начать разрабатывать игры даже если до этого вы были бухгалтером / Хабрахабр)


Выбор платформы/движка

Сам я разрабатываю на Java, но для разработки игр я не стал привязываться к ЯП, а решил изучить уже существующие платформы, независимо от того на чем придется писать.
У меня был ряд критериев, по которым я выбирал движки:

  1. Доступность (либо это должен быть OpenSource проект, либо с вариантом Free лицензии). Не то, чтобы у меня нет 1500$ на лицензию, но я хочу ознакомиться с продуктом и сделать достойный прототип игры, прежде чем платить.
  2. Документация и сообщество. Если есть хорошее комьюнити у продукта, значит решено много проблем и есть решения типовых задач, а это хорошо поможет на старте, да и в дальнейшем.
  3. Удобство. И среда разработки и скриптинг, все должно быть удобно, это очень важно, а особенно для новичка. Если многое интуитивно понятно, то можно быстро выучить основы, понять принципы работы, ведь они общие, и даже, если в дальнейшем придется сменить инструмент - это не страшно, так как знания останутся.

Итак, после долгого серфинга по инету я остановился на 3х вариантах:

  1. UDK (на базе движка Unreal Engine 3)
  2. Unity3d 4.2 (на базе движка Unity3d)
  3. jMonkeyEngine 3 SDK (на базе движка jmonkeyengine)
Рассмотрим вкратце каждый из них. Сразу хочу сказать про статью на Хабре, где сравниваются UDK и Unity3d, она так и называется Сравнение Unity и UDK / Хабрахабр. Коротко и по делу рассмотрены два движка. Ниже будет мой краткий обзор, в рамках критериев, которые привел выше.

UDK - мощный инструмент на базе движка Unreal Engine 3. Картинку дает бесподобную, а в качестве языка для скриптинга использует свой UnrealScript. Подходит для создания игр AAA-класса.

Доступность.
UDK полностью бесплатен. Одна особенность лицензии только в том, что, если ваша игра соберет более 50 000$, то Epic Games (разработчики UDK) будут брать себе 25% с последующей прибыли.

Документация и сообщество.
Инструмент популярный, поэтому и комьюнити большое и документация большая и подробная.

Удобство.
Среда разработки мне понравилась, но показалась не очень удобной и не интуитивной(для новичка). Этакий монстр для создания игр. Так же решающим фактором стал скриптинг, я решил, что посмотрю другие платформы, прежде чем начать изучать UnrealScript. Подробнее можно прочитать в выше приведенной статье на хабре.

Полезные ссылки.



Unity3d - мощный инструмент на базе одноименного движка. Очень популярный и может вполне конкурировать с Unreal Engine. Для скриптинга используется C#, JavaScript, Boo (диалект Python). Подходит для создания игр AAA-класса. Как преимущество, можно отметить портируемость на множество платформ.

Доступность.
У Unity3d есть 2 лицензии: Pro и Free. Соответственно по Free лицензии мы получаем полноценный продукт, но без некоторых фич, которые доступны для Pro. Сравнение лицензий от самого производителя тут: License Comparisons. Бесплатная версия вполне подойдет для прототипов и полноценных игр, хотя как пишут для создания игры ААА классы все-таки лучше приобрести Pro лицензию.

Документация и сообщество.
Тут проблем нет. Огромное и активное сообщество, куча ответов на вопросы, очень много туториалов и видео по созданию игр, разнообразие плагинов к среде разработки.

Удобство.
Не знаю почему, но запустив среду Unity3d я сразу ощутил какую-то родственную связь. Все интуитивно понятно, может быть это связано с тем, что до этого я ковырял 2 дня UDK, но среда разработки в Unity3d мне приглянулась сразу. Про скриптинг и говорить нечего - он на высоте. Поддержка C#, JavaScript, Boo (диалект Python) обеспечивает низкий порог вхождения для разработчиков, так как языки очень популярные, и практически каждый имеет (или имел) дело с C#/Java, JavaScript, Boo/Python.

Полезные ссылки.
jMonkeyEngine 3 - Open Source движок, написанный на Java. Это активно-развивающийся проект, и, судя по скринам, на нем можно делать действительно красивые вещи (ссылки смотри ниже). Собственно это и является для меня двумя главными плюсами по сравнению с 2-мя рассмотренными выше движками:
  1. OpenSource.
  2. Java, как язык разработки (нативный).

Доступность.
OpenSource.

Документация и сообщество.
Сообщество вроде как большое, проект активно развивается. Хорошая, подробная документация.

Удобство.
Обожаю Java, но среда разработки мне не понравилась (сразу начал резать русский язык в IDE, который просто так, без танцев с бубном, не изменить). Я сразу столкнулся с несколькими ошибками при создании нового проекта, но довольно быстро с ними разобрался (при помощи гугла). В целом среда для разработки привычная для Java (построена на базе Eclipse) и похожа на уже рассмотренные (Unity3d и UDK): графический редактор, менеджер ресурсов, менеджер проекта.

Полезные ссылки.
Тут я мало что посоветую, разве что официальный сайт:


Можно сделать однозначный вывод, что все кандидаты достойны, теперь перейдем к выбору. jMonkeyEngine отпал сразу, так как не совсем понятно что с портами на смартфоны и планшеты, да и по ощущениям движок уступает двум оставшимся. Остался выбор между UDK и Unity3d, здесь уже выбор значительно сложнее, так как это два гиганта, которые оба достойны внимания. После того, как я поковырялся некоторое время (пару дней) с каждым из них, я выбрал Unity3d, так как из коробки есть поддержка большинства ОС (PC, планшеты, смартфоны), IDE мне удобна, а скриптинг на знакомых мне языках программирования (C# очень похож на Java, нежели UnrealScript). Думаю, что Unity3d идеально подойдет для старта в разработке игр, поэтому я решил, что основы буду разбирать с Unity3d, а в будущем может быть и вернусь к UDK, если это будет иметь смысл.

Заключение

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