Разработка игрового движка

Чем лучше готовый движок

В данный момент существует множество игровых движков под разные типы игр. Можно взять любой и при наличии опыта программирования или огромного желания, начинать реализовывать проект своей мечты. Разные движки требуют различного уровня знаний и опыта. Если ориентироваться на платформу iOS можно выбрать SpriteKit или Cocos2D, если выбрать Android - выбор будет LibGDX или AndEngine. Но часто берут кроссплатформенные движки - код пишется один раз и с небольшими доработками или без них компилируется под разные платформы.
В данный момент существует множество игровых движков под разные типы игр. Можно взять любой и при наличии опыта программирования или огромного желания, начинать реализовывать проект своей мечты. Разные движки требуют различного уровня знаний и опыта. Если ориентироваться на платформу iOS можно выбрать SpriteKit или Cocos2D, если выбрать Android - выбор будет LibGDX или AndEngine. Но часто берут кроссплатформенные движки - код пишется один раз и с небольшими доработками или без них компилируется под разные платформы.

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

Выбор движка по бэкграунду знаний:

  • Cocos2Dx, Unreal Engine - C++
  • LOVE, Corona SDK, Defold - Lua
  • Unity3D - C#
  • SpriteKit - Swift \ ObjectiveC
  • AndEngine, LibGDX - Java

В качестве стартового движка, без наличия опыта в других - обычно советуют Unity, поскольку он востребованный и популярный. С визуальным редактором и много других плюшек. Unreal будет по-сложнее, посколько основной язык C++.

А не написать ли мне свой движок?

Вводная часть закончена, теперь можно и представиться. Меня зовут Надтока Антон, я мобильный разработчик для iOS и Android. В свободное от работы время я пишу мобильный движок для игр. Будучи студентом как и многие другие (думаю были и такие) хотел создать свой Counter Strike. Еще был OpenGL 1.1 и в то время я реализовывал небольшой движок для Windows, который позволял отображать SkyBox, оружие, уровень и эффект стрельбы. Чтобы скрыть недостатки графики использовался туман. Позже работая по разным направлениям сконцентрировался на мобильной разработке в начале 2012. Удалось пощупать и поработать с AndEngine, Cocos2Dx и Unity.

Для реализации простых 2D игрушек решил присмотреться к движкам и определиться с подходящим. Среди всего многообразия вариантов присматривался в первую очередь на Unity. Но обдумав все за и против, решил писать свой.

Причины написать сейчас свой движок:

  • Узнать как все работает под капотом
  • Полный контроль над кодом и поведением движка
  • Компактный размер финального результата
  • Добавление новых функций в конкретные сроки
  • Получить кайф от разработки

Посколько я начал работать с С++ с 2005 года выбор языка отпал сам собой. За основу был взят стандарт C++11.

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

Спасибо за внимание.

1919
34 комментария

Мои любимые статьи про то как начну что-то делать ;) можно открывать тотализатор, на сколько статей без воды хватит автора ;)

15

Обычно, не более 3-х.

1

Разработка игрового движкаНе нужна.

11

Поясню.
Узнать как все работает под капотомЭто не написание движка. Это написание PoC или ещё какого тестового решения. Написание велосипедов — это всегда приветствуется. Для того, чтобы понять, как устроены чужие и какой из них тебе следует брать, а так же оптимальнее с ним работать. Но и только. Тем более когда дело касается собственного движка.
Полный контроль над кодом и поведением движкаНу, оное так для многих решений. Особенно если они опенсорсные. А дальше всё упирается в архитектуру. Как ты собрался это обходить?
Компактный размер финального результатаИ кому это нужно? Любые итоговые ресурсы проработанного персонажа по весу перевалят размер бинарника с либами на порядок (если, конечно, ты не решил генерить все ресурсы на месте). Наоборот, ужатые ресурсы сейчас не в моде в угоду быстрой загрузке на устройстве. А лишний гиг — скачают, не обломятся. То же и с местом хранения.
Добавление новых функций в конкретные срокиСвой игровой движок и разрабатывается для реализации каких-то функций, которые невозможно или нецелесообразно реализовывать на других. В обратную сторону, ради каких-то вероятных бенефитов — это не просто не рационально, но и бессмысленно. Потому что перед каждой новой фичей «за рамками» тебя ждёт долгий процесс рефакторинга (и конкретные сроки уже сразу растягиваются). Кстати, а тесты ты пишешь?
Получить кайф от разработкиНу, это замечательно, конечно. То есть решение ради процесса, а не самого решения. Собственно, о чём и я.

9

Unreal, Unity, CryEngine, Defold, Cocos, GM - сотни их для разных целей.

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

Получить кайф от разработкисомнительная но единственная причина.

3