Pull to refresh
23
0

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

Send message

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

Reading time30 min
Views72K
image

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

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

Reading time35 min
Views51K
В этой статье мы детально разберем атомарные операции и барьеры памяти 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%, поэтому мы не будем уделять внимание слабым и сомнительным оптимизациям.
Читать дальше →
Total votes 54: ↑54 and ↓0+54
Comments22

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

Reading time24 min
Views88K

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

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

Читать далее
Total votes 128: ↑125 and ↓3+122
Comments163

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

Reading time9 min
Views5.4K

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

Читать далее
Total votes 7: ↑6 and ↓1+5
Comments2

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

Reading time7 min
Views6.4K

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

Читать далее
Total votes 8: ↑8 and ↓0+8
Comments0

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

Reading time16 min
Views9.9K

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

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

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

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

Читать далее
Total votes 29: ↑29 and ↓0+29
Comments5

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

Reading time12 min
Views13K

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

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

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

Читать далее
Total votes 44: ↑44 and ↓0+44
Comments5

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

Reading time17 min
Views34K

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

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

Читать далее
Total votes 10: ↑10 and ↓0+10
Comments21

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

Reading time9 min
Views58K
image

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

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

Reading time7 min
Views31K
image
(иллюстрация Asya_Dyu)

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

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

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

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

Читать лучше в оригинале, но путь к оригиналу иногда бывает (только) через перевод.
Читать дальше →
Total votes 32: ↑25 and ↓7+18
Comments15

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

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

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



Читать дальше →
Total votes 4: ↑4 and ↓0+4
Comments16

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

Reading time5 min
Views3.7K

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

Читать далее
Total votes 7: ↑6 and ↓1+5
Comments2

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

Reading time11 min
Views5.6K

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

Читать далее
Total votes 14: ↑13 and ↓1+12
Comments7

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

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

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

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

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

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

Reading time2 min
Views23K


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

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

Reading time13 min
Views107K

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


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


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

Читать дальше →
Total votes 118: ↑114 and ↓4+110
Comments110

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

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

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

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

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

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

Читать дальше →
Total votes 63: ↑56 and ↓7+49
Comments164

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

Reading time11 min
Views102K

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

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

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

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

Reading time3 min
Views9.7K

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

Читать дальше →
Total votes 33: ↑33 and ↓0+33
Comments24

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

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

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

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


Читать дальше →
Total votes 54: ↑53 and ↓1+52
Comments16
1
23 ...

Information

Rating
Does not participate
Registered
Activity