Как стать автором
Обновить
23
0

Пользователь

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

Делаем любой объект потокобезопасным

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

В этих 3-ех статьях я детально расскажу об атомарных операциях, барьерах памяти и о быстром обмене данными между потоками, а так же о «sequence-points» на примере «execute-around-idiom», а заодно постараемся вместе сделать что-нибудь полезное — умный указатель, который делает любой объект потоко-безопасным для любых операций с его членами переменными или функциями. А затем покажем как используя его достичь производительности высоко-оптимизированных lock-free алгоритмов на 8 — 64 ядрах.
Читать дальше →
Всего голосов 57: ↑57 и ↓0 +57
Комментарии 27

Ускоряем std::shared_mutex в 10 раз

Время на прочтение 35 мин
Количество просмотров 51K
В этой статье мы детально разберем атомарные операции и барьеры памяти C++11 и генерируемые ими ассемблерные инструкции на процессорах x86_64.

Далее мы покажем как ускорить работу contfree_safe_ptr<std::map> до уровня сложных и оптимизированных lock-free структур данных аналогичных по функциональности std::map<>, например: SkipListMap и BronsonAVLTreeMap из библиотеки libCDS (Concurrent Data Structures library): github.com/khizmax/libcds

И такую многопоточную производительность мы сможем получить для любого вашего изначально потоко-небезопасного класса T используемого как contfree_safe_ptr<T>. Нас интересуют оптимизации повышающие производительность на ~1000%, поэтому мы не будем уделять внимание слабым и сомнительным оптимизациям.
Читать дальше →
Всего голосов 54: ↑54 и ↓0 +54
Комментарии 22

Доступная система видеонаблюдения с охраной на дачу за 60 минут

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

Речь пойдет о сборке, настройке и запуске охранной системы с датчиками, камерой, хранением видеозаписей на удаленном домашнем NAS, встроенным UPS, web-интерфейсом и оповещением через Telegram.

Чтобы быть предельно кратким, оформил статью в стилистике hackster.io. Информация рассчитана на читателей с опытом работы с одноплатным компьютером Raspberry и пониманием принципов работы VPN.

Читать далее
Всего голосов 128: ↑125 и ↓3 +122
Комментарии 163

Мастер-класс по организации освещения в игре на Unreal Engine: Часть 2

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

Это вторая часть обширного руководства Юрия Воробьева по созданию привлекательного освещения в играх на Unreal Engine. Первую часть вы можете найти здесь.

Читать далее
Всего голосов 7: ↑6 и ↓1 +5
Комментарии 2

Мастер-класс по организации освещения в игре на Unreal Engine: Часть 1

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

Обширное руководство из двух частей о создании привлекательного освещения в играх на Unreal Engine, представленное старшим художником по освещению Юрием Воробьевым.

Читать далее
Всего голосов 8: ↑8 и ↓0 +8
Комментарии 0

Вопросы о левел-дизайне: о чем молчат дизайнеры локаций

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

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

Эта статья — дополнение к моему циклу. В ней я поговорю обо всем не вошедшем в более ранние публикации. Снова поговорим об идеальном левел-дизайне, обо всем процессе разработки локации, какими навыками должен обладать левел-дизайнер и что уметь, и еще обо многом другом.

Предыдущие статьи из цикла:

1. Левел-дизайн 101: язык разработки локаций
2. К ориентиру по хлебным крошкам, или базовые приемы левел-дизайна
3. Продвинутый левел-дизайн: киноприемы в играх, кор-луп и силуэты

Читать далее
Всего голосов 29: ↑29 и ↓0 +29
Комментарии 5

Случайные блуждания и цепи Маркова в геймдизайне

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

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

Всем привет, меня зовут Лев, я геймдизайнер из WhaleKit. И в этой статье мы разберем две математические концепции: цепи Маркова и случайные блуждания. Сразу замечу, что статья скорее «поп», чем «науч», поэтому часть доказательств выведенных формул будет опущена. После теории мы перейдем к реальным кейсам, где эти инструменты могут пригодиться, например:

 1. Сколько сундуков откроет игрок, если из сундуков могут выпасть еще сундуки;
2. Сколько золота уйдет на прокачку меча, если меч может ломаться;
3. Какая вероятность победить в денежном поединке.

Читать далее
Всего голосов 44: ↑44 и ↓0 +44
Комментарии 5

Советы для начинающих (и не очень) разработчиков на Unreal Engine

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

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

Надеюсь что описанные мною вещи будут вам интересны и полезны. Желаю приятного чтения :-)

Читать далее
Всего голосов 10: ↑10 и ↓0 +10
Комментарии 21

Пишем компонент движения для RTS в Unreal engine 4

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

Привет, меня зовут Дмитрий, я программист. Только что закончил рефакторинг компонента движения кораблей для проекта тактической игры в реальном времени, в которой игроки могут собрать свой собственный космический флот и повести его в бой. Компонент движения переписывался уже три раза, от релиза до начала разработки альфа версии. Было собрано множество граблей, как архитектурных, так и сетевых. Постараюсь подбить весь этот опыт и рассказать вам о Navigation Volume, Movement component, AIController, Pawn.
Читать дальше →
Всего голосов 30: ↑30 и ↓0 +30
Комментарии 25

Переводы всех статей Пола Грэма на всех языках (210+)

Время на прочтение 7 мин
Количество просмотров 31K
image
(иллюстрация Asya_Dyu)

Пол Грэм — один из самых уважаемых людей среди ИТишников, основателей и инвесторов. Он первоклассный программист (написал два языка программирования), хакер, создатель дерзкого акселератора Y Combinator, философ.

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

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

Сейчас около 2 миллиардов человек могут прочитать эссе Пола Грэма. Моя задумка в том, что если перевести его эссе на топ-20 языков, то это даст возможность еще 2 миллиардам людей случайно наткнуться на перевод на родном языке (как это было у меня) и встать на путь стартапера.

Читать лучше в оригинале, но путь к оригиналу иногда бывает (только) через перевод.
Читать дальше →
Всего голосов 32: ↑25 и ↓7 +18
Комментарии 15

Gameplay Ability System: как мы используем плагин для разработки Survival RPG

Время на прочтение 14 мин
Количество просмотров 20K
В Social Quantum сейчас кипит работа над новыми проектами, которые мы разрабатываем на Unreal Engine 4. Для одной из этих игр мы активно используем плагин Gameplay Ability System (далее GAS). Многие о нем слышали, но редко применяли для своих проектов. Этому есть несколько причин: количество документации, объемность и сложность подсистемы. Наша команда решила подготовить серию материалов, где мы подробно расскажем об опыте работы и развеем некоторые мифы.

Для начала разберем самые базовые принципы GAS и основные ее сущности, а также копнем чуть дальше, чем «делаем зелье для пополнения здоровья».



Читать дальше →
Всего голосов 4: ↑4 и ↓0 +4
Комментарии 16

Как включить в игру на UE4 достижения Steam

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

Оно не обязательно, но весьма настоятельно рекомендовано. Как будто разработчика надо специально упрашивать. Лучше бы взяли, да объяснили популярно, как внедрить Steamworks SDK в UE4, и как дальше ковыряться в блюпринтах. Можно конечно, немного погуглить, много подумать, и наконец, разобраться самостоятельно. Но не каждый программист настолько трудолюбив. Для многих эта статья сэкономит уйму времени и нервов.

Читать далее
Всего голосов 7: ↑6 и ↓1 +5
Комментарии 2

Как мы реализовали систему камер для мобильной TPS игры

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

Как ранее упоминали в наших статьях на Хабре, сейчас Social Quantum разрабатывает мобильный Survival Action RPG от третьего лица в зомби сеттинге. Мы поставили цель — подарить игрокам консольный фил, доступный на мобильных девайсах. Один из приемов, который для этого используем — система камер. В этой статье рассказываем, как реализовали её в Unreal Engine 4 на С++.

Читать далее
Всего голосов 14: ↑13 и ↓1 +12
Комментарии 7

Всегда старайтесь быть н̶е̶заменимым

Время на прочтение 3 мин
Количество просмотров 41K
Есть хорошая жизненная философия, которой можно придерживаться на рабочем месте, — это «постоянно быть готовым увольняться» («always be quitting»). Это не значит думать о том, чтобы уйти с работы. Но вести себя так, как будто вы можете уйти в кратчайшие сроки. Парадоксально, но это сделает вас лучшим инженером и откроет возможности для роста.

Так что же значит «постоянно быть готовым уйти»? Это означает «сделать себя заменимым»; «унизить себя»; «автоматизировать свою работу». Возможно, вы слышали эти более популярные ярлыки (и вам нужно будет с этим поразбираться и выяснить что это), и они дают подсказку что делать.

Ключ в том, чтобы НЕ быть незаменимым. Если вы незаменимый, то вы застрянете на своей конкретной работе до тех пор, пока эта работа актуальна, с крайне малой возможностью немного передохнуть (без отпусков, без роста). И когда (не если) работа станет ненужной, ваша должность тоже станет ненужной.

Парадоксально, но, будучи легко заменимым, вы освобождаете себя. Вы облегчаете себе переход к роли более высокого уровня и вам легче менять проекты, над которыми вы работаете. Не согласны? В замешательстве? Вот 10 конкретных вещей, которые вы можете сделать:
Читать дальше →
Всего голосов 101: ↑91 и ↓10 +81
Комментарии 119

Сохранение и загрузка игры в Unreal Engine

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


Здравствуйте, меня зовут Дмитрий. Я занимаюсь созданием компьютерных игр на Unreal Engine в качестве хобби. Сегодня я расскажу как сохранить игру на диск а потом загрузить её с диска.
Читать дальше →
Всего голосов 25: ↑20 и ↓5 +15
Комментарии 4

Полезные консольные Linux утилиты

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

В этой подборке представлены полезные малоизвестные консольные Linux утилиты. В списке не представлены Pentest утилиты, так как у них есть своя подборка.


Осторожно много скриншотов. Добавил до ката утилиту binenv.


binenv — cамая интересная утилита для установки новых популярных программ в linux, но которых нет в пакетном менеджере.

Читать дальше →
Всего голосов 118: ↑114 и ↓4 +110
Комментарии 110

Ультимативный список инструментов для разработчиков и опытных пользователей для Windows

Время на прочтение 6 мин
Количество просмотров 70K
Можете ли вы поверить, что с момента моего последнего списка инструментов прошло 6 лет? Инструменты изменились, многие из них доступны онлайн, но, честно говоря, для составления нового списка инструментов требуется ОЧЕНЬ МНОГО РАБОТЫ. Но я смог, вот список на 2020-2021 годы. Это инструменты в моей папке Utils. Я создал папку d:\dropbox\utils и добавил ее в свой PATH. Таким образом, он будет на всех моих компьютерах, и я могу мгновенно добраться до любого из них.

Это обновленный до версии 2020-21 мой список 2003, 2005, 2006, 2007, 2009, 2011 и 2014 годов, который в настоящее время включает все остальные мои списки. Я занимаюсь этим более 17 лет. Вау. Думаю, стоит тратить на это больше времени.

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

Все это очень любимые и часто используемые утилиты. Я бы не рекомендовал их, если бы не использовал их постоянно. Никто не платил деньги за то, чтобы быть в этом списке.

Эту статью написал наш коллега Скотт. Вот версия на английском. Ну а сам список под катом.

Читать дальше →
Всего голосов 63: ↑56 и ↓7 +49
Комментарии 164

Цвет в современных фильмах

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

Всем привет, меня зовут Денис. Я работаю художником по свету (Lighting Artist) в игровой индустрии. Часто читаю Хабр просто потому что интересно и вот сегодня увидел статью Дефицит цветов в современных фильмах которая меня немного ошарашила. Ведь в кино существуют целые отделы композитинга, которые занимаются цветокоррекцией изображения, чтобы конечный результат выглядел красиво, а также вызывал определённые эмоции. Поэтому меня сильно удивило, что кто-то видит в этом отрицательную сторону.

И вот я уже собрался написать длинный комментарий, но понял, что информации настолько много, что можно об этом написать целую статью, собственно, почему бы и нет.

Давайте разбираться, почему же в кино цветовая палитра сводится к нескольким конкретным цветам, а не представляет полный спектр. Хочу заметить, что всё нижеупомянутое применимо и к современным играм.
Читать дальше →
Всего голосов 331: ↑326 и ↓5 +321
Комментарии 286

Гетерогенный поиск в ассоциативных контейнерах на C++

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

Ассоциативные контейнеры в C++ работают с конкретным типом ключа. Для поиска в них по ключу подобного типа (std::string, std::string_view, const char*) мы можем нести существенные потери в производительности. В этой статье я расскажу как этого избежать с помощью относительно недавно добавленной возможности гетерогенного поиска.

Читать дальше →
Всего голосов 33: ↑33 и ↓0 +33
Комментарии 24

Оптимизация C++: совмещаем скорость и высокий уровень. Доклад Яндекса

Время на прочтение 9 мин
Количество просмотров 23K
Что влияет на скорость работы программ на C++ и как её добиться при высоком уровне кода? Ведущий разработчик библиотеки CatBoost Евгений Петров ответил на эти вопросы на примерах и иллюстрациях из опыта работы над CatBoost для x86_64.

Видео доклада

— Всем привет. Я занимаюсь оптимизацией для CPU библиотеки машинного обучения CatBoost. Основная часть нашей библиотеки написана на C++. Сегодня расскажу, какими простыми способами мы добиваемся скорости.


Читать дальше →
Всего голосов 54: ↑53 и ↓1 +52
Комментарии 16

Информация

В рейтинге
Не участвует
Зарегистрирован
Активность