Записки велосипедиста #1 - Философия игровых движков

Здравствуй, %username%!
Этот ресурс - продолжение цикла познавательных "Записок велосипедиста", в котором я рассказываю про свои "приключения" и даю ссылки на интересные материалы для домашнего изучения.

Дисклеймер

Если Ваши grammar Nazi's чувства не позволяют вам наблюдать жаргонизмы и некоторые случайные орфографические или пунктуационные ошибки - немедленно пройдите в ближайшее отделение межгалактического НКВД, исповедуйтесь у космического Иисуса и причиститесь животворящего дзена.

Вступление

Доброго времени суток! Последний номер вышел аж 8 месяцев назад.
За это время многое поменялось и у меня остаётся гораздо меньше времени на подобные занятия, что конечно ранит мои чувства.
На данный момент всё более менее стабилизировалось, поэтому я постараюсь выкладывать новые записки раз в неделю-две.
Итак, сегодняшний номер я посвящу философии, лежащей в основе игровых движков. Можно сказать, что это вступления для тех у кого массивы начинаются с единицы, потому что на большее, этим субботним вечером меня не хватит. Также мы поговорим о том почему имеет смысл написание своего движка. Итак, начнём с основ.

Устройство игрового движка по Википедии

Вот что говорит нам Википедия:
Игровой движок — центральный программный компонент компьютерных и видеоигр или других интерактивных приложений с графикой, обрабатываемой в реальном времени. Он обеспечивает основные технологии, упрощает разработку и часто даёт игре возможность запускаться на нескольких платформах, таких как игровые консоли и настольные операционные системы, например, GNU/Linux, Mac OS X и Microsoft Windows.
Основную функциональность обычно обеспечивает игровой движок, включающий движок рендеринга («визуализатор»), физический движок, звук, систему скриптов, анимацию, искусственный интеллект, сетевой код, управление памятью и многопоточность. Часто на процессе разработки можно сэкономить за счёт повторного использования одного игрового движка для создания множества различных игр.
Но мы не верим Википедии, потому что она прикрыла статьи про способы изготовления наркотиков на территории РФ.
Попробуем понять что же скрывается за занавесом.

А что за занавесом?

В действительности, любой приличный игровой движок состоит из:
  1. Цели
  2. Воли разработчика
  3. Ресурсов разработчика
  4. Костылей и багов
Отсутствие хотя бы одной компоненты характеризует неприличные движки. (либо они заброшены создателями, либо они настолько уродливы, что аж блюёт, либо они просто ещё не написаны).
При этом каждая компонента с большим номером, основана на предыдущей. Т.е. если не знать что делать, то даже костылей с багами не появится, а если не иметь желания что-либо делать, не появятся и ресурсы.
Т.е. другими словами, игровой движок - это результат тяжёлого и упорного труда.
Чтобы понять какой движок выбрать или всё же есть ли необходимость писать свой, нужно сперва однозначно и чётко определить для чего нужен движок. Движок нужен для облегчения процесса разработки игр.
В первую очередь, это - инструмент!
Такой же как молоток, ноутбук или скрипка. Заметили разницу?
Так вот, между игровыми движками, тоже есть разница. Наша задача: понять что будет лучше для конкретного проекта.
Молотки
Это такие движки, с которыми ты спокойно сделаешь почти всё, что тебе нужно. Весит он прилично, но эффективен, если применить по делу.
Ноутбуки
Это такие движки, которые позволят тебе погрузиться в астрал абстракций и реализовать то что ты задумал, но без принтера и розетки не обойтись. А ещё ты можешь обсудить свои идеи с людьми за такими же ноутбуками.
Скрипки
Это такие движки, на которых приятно играть, но гвозди ими забивать не получится.
Если нужно сделать как можно больше проектов и как можно быстрее - используй ноутбук.
Если же необходимо сделать не так много проектов, но проекты специфичные - используй молоток.
Если на проекты плевать, а хочется искусства и вдохновения - используй скрипку.
Кстати было бы здорово узнать как бы Вы распределили известные вам движки (кто молоток, кто скрипка, а кто - ноутбук) - буду рад комментариям.

Почему свой движок с нуля?

Данный вопрос похож на: "Зачем собирать мир, если есть Windows?".
Взгляните на некоторые примеры:
  • Unreal Engine, созданный Тимом Суинни (пока он не остался там как символ в должности тех. директора)
  • Движок для игры Outer (Another) World, который написал Эрик Шайи (ему бедному пришлось много писать на ассемблере. Даже утилиты для визуализации полигонов. Даже небо! Даже аллах!!!)
  • Minecraft, созданный при помощи Java и LWJGL Нотчем.
  • Движки серии Id Tech, работу над которыми вёл Джон Кармак.
  • Build Engine и Voxlap Engine, которые написал Кен Сильвермэн.
  • Игры серии Ultima, над которыми работал Ричард Гэрриот. Мне расово-верная утилита для проверки правописания люто предлагает исправить фамилию на Эукариот
Тогда это было в новинку, но сейчас: зачем "собирать мир" с нуля, если уже есть Windows?
Может быть это удел геймдев-хипстеров?
И всё же, отбросив шутки:
  1. Это наиболее эффективный способ обучения.
  2. Полный контроль над ситуацией.
  3. Время, потраченное на его создание, окупится позже в виде экономии времени на отладке, улучшении и поддержке игры (вполне возможно что многих игр, созданных впоследствии Вами)
  4. Отсутствие костылей (ведь это один большой костыль). Нет необходимости пробивать интерфейсы чужого движка, особенно если к нему не прилагаются исходные коды.
  5. Присутствие велосипедов! Не нужно покупать.
  6. Процесс создания чего-то нового и серьёзного вдохновляет и даёт силы.
  7. Время разработки не ограничено и/или разработчик упорот по игре, которую он делает, окончательно и бесповоротно.
Сегодня, самописные движки не нужны в большинстве случаев, но их продолжают делать. Почему? Возможно это такая радикальная религия, возможно это бунт геймдев-хипстеров, а может в этом и вправду есть какой-то скрытый смысл...
Возможно всё дело в разнице: с какой целью мы используем имеющиеся инструменты и с какой целью мы создаём свои...
Одно можно сказать точно: нет необходимости в написании своего движка для игры, в которой нет необходимости пробивать интерфейсы движка, нет необходимости иметь полное управление прослойкой между системным ПО и пользователем, нет необходимости во введении технологических инноваций, но хочется сделать игру быстро, минимизировав работу с низкоуровневыми вещами.
Не могу также не привести статью по теме. В целом похожая точка зрения.
Следующий номер обязательно будет более практикоориентирован. Мы поговорим о конкретных компонентах игровых движков.
Спасибо за внимание!
`
ОЖИДАНИЕ РЕКЛАМЫ...

Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
0
24
9 лет назад
0
Kozinaka, берем любой движок с открытым кодом и получаем такой-же результат за гораздо меньшее время - что-то в нем придется переписать с нуля под свои нужды и видение мира, но остальные фичи останутся как есть или с минимальными изменениями.
0
30
9 лет назад
0
Приложи к статье к примеру успешные проекты со своим движком/инди-проекты и т.д
10
14
9 лет назад
Отредактирован Kozinaka
10
Tiodor, ты думаешь таких нет?
prog, а кто говорил, что свой движок время экономит? Он ничего не экономит, он даёт хардкорный низкоуровневый опыт и гибкость при решении задач, т.к. не нужно адаптироваться к чужим решениям и обходить чужие интерфейсы.
0
29
9 лет назад
Отредактирован Doc
0
Личный опыт - да, просто чтобы знать как изнутри работают/могут работать другие движки. Все остальное того не стоит. Разве что если у вас супер специфические задачи (вроде майнкрафта/феза там).
6
30
9 лет назад
6
Tiodor, ты думаешь таких нет?
перечитай что я написал
я посоветовал добавить в статью этот список
0
10
8 лет назад
Отредактирован ZLOI_DED
0
prog:
Kozinaka, берем любой движок с открытым кодом и получаем такой-же результат за гораздо меньшее время - что-то в нем придется переписать с нуля под свои нужды и видение мира, но остальные фичи останутся как есть или с минимальными изменениями.
Такой подход возможен, если тебя устраивает всё, что ты не собираешься переписывать и процент того, что ты не собираешься переписывать достаточно мал.
Tiodor:
Приложи к статье к примеру успешные проекты со своим движком/инди-проекты и т.д
Этот движок, который я сейчас делаю... Ну скажем на нём есть демки, но они совершенно не заслуживают вашего внимания, друзья.
По какой-то причине я забыл добавить аналогичные примеры из индустрии и привёл их (списком) в статье.
Doc:
Время, потраченное на его создание, окупится позже в виде экономии времени на отладке, улучшении и поддержке игры.
Лол
Личный опыт - да, просто чтобы знать как изнутри работают/могут работать другие движки. Все остальное того не стоит. Разве что если у вас супер специфические задачи (вроде майнкрафта/феза там).
Я так и написал в статье :)
0 - Наиболее эффективный способ обучения.
1, 3, 4 - Проблемы с супер специфическими задачами гораздо легче решать.
2, 6 - Разве это не так? Если игра будет не одна или игра планируется как долгосрочный проект?
5 - Так это вообще здорово.
Просто каждый оценивает для себя. ИМХО, если уверен, что хватит времени и энтузиазма - значит надо делать свой движок.
Для гейм-дев программера - это маст трай.
Я приболел чутка, но постараюсь в самое ближайшее время выложить новый номер :)
Благодарю за фидбек!
0
24
8 лет назад
0
ZLOI_DED, как самочувствие? и не намечается ли продолжение?
0
10
8 лет назад
0
prog:
ZLOI_DED, как самочувствие? и не намечается ли продолжение?
Хреновей быть возможно ещё может.
Продолжение уже в процессе)
3
20
8 лет назад
Отредактирован Praytic
3
Хреновей быть возможно ещё может.
раскрыть
Загруженные файлы
2
14
8 лет назад
2
Хреновей быть возможно ещё может.
...но пусть оно вас больше не тревожит;
Я не хочу печалить час ничем.
Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.