Как стать автором
Обновить
41
0
Илья Волков @Inflight

Программист

Отправить сообщение

Собственная реализация библиотеки ECS

Время на прочтение23 мин
Количество просмотров8.2K
image

На этой неделе я начал работать над своим движком для игры Vagabond и приступил к реализации шаблона entity-component-system.

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

Введение


Мотивация


Я не буду рассказывать о преимуществах ECS перед объектно-ориентированным подходом, потому что с этим хорошо справились многие люди до меня. Одним из первых про ECS рассказал на GDC 2002 Скотт Билас. Среди других знаменитых введений в тему можно назвать Evolve Your Hierarchy Майка Уэста и главу Components из потрясающей книги Game Programming Patterns Роберта Нистрома.

Вкратце скажу, что задача ECS — создание ориентированного на обработку данных подхода к игровым сущностям и удобное разделение данных и логики. Сущности (Entities) составляются из компонентов, содержащих данные. А системы, содержащие логику, обрабатывают эти компоненты.

Если вдаваться в детали, то вместо наследования в ECS используется композиция. Более того, этот подход, ориентированный на обработку данных, оптимальнее использует кэш, а значит, достигает отличной производительности.
Читать дальше →
Всего голосов 13: ↑13 и ↓0+13
Комментарии0

Несколько простых, но полезных советов по работе с геттерами в Vuex

Время на прочтение3 мин
Количество просмотров11K

Vuex предоставляет удобные инструменты для работы с данными, но некоторые разработчики используют их не всегда по назначению, либо создают избыточные конструкции там, где можно было написать более понятно и ёмко, такое также случается, когда разработчик только знакомится с данными инструментами. В данной статье будут приведены некоторые рекомендации по организации геттеров (Getters), которые вы сможете применить в работе.

Читать дальше →
Всего голосов 25: ↑23 и ↓2+21
Комментарии19

Если есть в кармане пачка сигарет…

Время на прочтение8 мин
Количество просмотров132K
Но если есть в кармане пачка сигарет,
Значит всё не так уж плохо на сегодняшний день.
Это – знаменитая фраза из знаменитой песни Виктора Цоя. Песня, вроде, вообще не о курении, но не так давно я понял – так мог написать только курильщик. Не знаю и, наверное, никогда уже не узнаю, что имел в виду Виктор Цой, но до меня смысл этой фразы дошел примерно год назад.

В этой фразе заключена одна из главных особенностей курения и его влияния на психику и ценности человека. Можно эту особенность игнорировать, или отвергать, а я предлагаю присмотреться к ней поподробнее и использовать в своих целях. Я пристально наблюдал за влиянием курения на свой мозг на протяжении года, спешу поделиться результатами.
Читать дальше →
Всего голосов 235: ↑203 и ↓32+171
Комментарии542

Reflective Shadow Maps: Часть 1

Время на прочтение4 мин
Количество просмотров5.7K
image

Привет, Хабр! Представляю вашему вниманию перевод статьи «Reflective Shadow Maps» автора Eric Polman.

Reflective Shadow Maps (RSM) (отражающие карты теней) ― это алгоритм, расширяющий “простые” shadow map. Алгоритм учитывает свет, рассеянный после первого попадания на поверхность (diffuse). Это означает, что кроме прямого освещения, вы получаете непрямое освещение. В данной статье я разберу алгоритм из официальной статьи, чтобы объяснить его по-человечески. Я также кратко расскажу о shadow mapping.
Читать дальше →
Всего голосов 23: ↑23 и ↓0+23
Комментарии9

Анализ подходов к связыванию модулей в Node.js

Время на прочтение7 мин
Количество просмотров3.2K
Многие разработчики Node.js для связывания модулей используют исключительно создание жёсткой зависимости с помощью require(), однако существуют и другие подходы, со своими плюсами и минусами. О них я в этой статье и расскажу. Будут рассмотрены четыре подхода:

  • Жёсткие зависимости (require())
  • Внедрение зависимостей (Dependency Injection)
  • Локаторы служб (Service Locator)
  • Контейнеры внедряемых зависимостей (DI Container)
Читать дальше →
Всего голосов 12: ↑10 и ↓2+8
Комментарии0

Делаем рейтинг городов России по качеству дорог

Время на прочтение9 мин
Количество просмотров20K


В очередной раз проезжая на машине по родному городу и объезжая очередную яму я подумал: а везде ли в нашей стране такие «хорошие» дороги и решил — надо объективно оценить ситуацию с качеством дорог в нашей стране.
Читать дальше →
Всего голосов 87: ↑87 и ↓0+87
Комментарии56

Перевод книги Skunk Works. Личные мемуары моей работы в Локхид

Время на прочтение2 мин
Количество просмотров38K
image

Хочу представить вам перевод увлекательнейшей книги «Skunk Works. Личные мемуары моей работы в Локхид». Skunk Works — это секретное подразделение корпорации Локхид, созданное в 1943 году для скорейшей разработки первого американского реактивного истребителя P-80. Также они создали такие знаменитые самолёты, как F-104, первый истребитель со скоростью 2 Маха, U-2, 4 года летавший над СССР, невероятный SR-71 Blackbird, летавший на скорости 3 Маха и высоте 24 километров, первый малозаметный F-117A, F-22 и многие другие.
Читать дальше →
Всего голосов 35: ↑34 и ↓1+33
Комментарии57

Методы наведения летательных аппаратов в разработке игр

Время на прочтение3 мин
Количество просмотров58K
image

Год назад я закончил Московский Авиационный Институт и получил квалификацию «Инженер». Но поскольку к тому времени я уже год отработал программистом и знал, что в этой области буду работать и в дальнейшем, получение «корочки» не стало для меня чем-то переломным, в отличие от моих многих одногруппников. Знания, полученные на 4-5 курсах, казались мне довольно интересными и расширяющими кругозор, но не слишком полезными для работы программистом. Однако есть несколько тем, которые мне помогли и в работе. Про одну из них я и хочу рассказать, и имя ей — методы наведения летательного аппарата.
Читать дальше →
Всего голосов 52: ↑47 и ↓5+42
Комментарии7

Информация

В рейтинге
Не участвует
Откуда
Йошкар-Ола, Марий Эл, Россия
Зарегистрирован
Активность