• Популярные вопросы на собеседовании по C++ и ответы на них

      Здравствуйте!

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

      О том, что спрашивают на собеседовании у C++ программистов, а также об ответах на эти вопросы и пойдет речь в данном посте.
      Читать дальше →
    • Создание редактора квестов и диалогов для Unreal engine: Часть 1 описание плагина

      • Tutorial
      image

      Здравствуйте меня зовут Дмитрий. Я занимаюсь созданием компьютерных игр на Unreal Engine в качестве хобби.

      На определенной стадии создания вашей игры, возникает необходимость написать диалоги и квесты. К сожалению Unreal engine не имеет встроенного инструмента для решения этой задачи. Поэтому я написал плагин для редактирования квестов и диалогов. Как всегда все исходники будут предоставлены в конце статьи.
      Читать дальше →
      • +20
      • 27k
      • 4
    • Гексагональные тайловые миры

      • Tutorial

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

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

      Читать далее
    • Making Grenades in Unreal Engine, Part 2: Attributes, Gameplay Effects, Replication

      • Tutorial

      Link to Part 1.

      A SimpleGAS is a set of tutorials for entry-level Unreal Engine enthusiasts who wants to leverage the power of the Gameplay Ability System in their prototypes. While there are great tutorials and GitHub repositories which cover the topic of GAS in more depth, this tutorial is requiring a minimum C++ setup and showcases working examples built entirely using Blueprints. This tutorial is for those who are new to Unreal Engine gameplay/multiplayer development or simply need an easy headstart before diving into more sophisticated GAS-related content.

      Today we finish what we started in Part 1 and make replicated grenade projectiles using Gameplay Ability System...

      Read Tutorial
    • Unreal Engine 4. Новая сетевая модель: PushModel

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

      Однако, игра часто может состоять из огромного множества Актеров и переменных, которые необходимо реплицировать одному или нескольким клиентам, и это уже может стать проблемным местом.

      UE уже предоставляет такие функции как: NetUpdateFrequency, NetCullDistanceSquared и т.д. Основная задача которых состоит в том, что бы устранить из общей картины репликации, как можно больше актеров не нуждающихся в постоянно синхронизации данных.

      PushModel, пока что экспериментальная фича, которая может позволить разработчикам активно отмечать необходимость синхронизации свойства, для этого предоставляется несколько макросов:

      Читать далее
    • Боевая система в 9 Monkeys of Shaolin. Как заново изобрести кунг-фу в видеоигре

        Всем привет. Публикую статью от именно своего коллеги Дмитрия Качкова - основателя Sobaka Studio.

        Наша небольшая команда уже больше пяти лет занимается разработкой инди-игр в жанре beat ’em up, где весь игровой процесс жестко завязан на боевую систему. Наверное, многие замечали, что в самых успешных играх жанра beat’em up игрока увлекает не столько сюжет или оформление окружения, а сам бой – интересный, разнообразный, стремительный. Именно за приятную боевку критики хвалят обе наших игры. Redeemer: Enhanced Edition, где игровой персонаж – мощный монах Василий – зачастую должен раскидывать своих врагов подальше от себя кулаками (и не только). И 9 Monkeys of Shaolin, в которой персонаж сражается посохом против множества противников и в ходе игры должен улучшать свои боевые приемы с помощью системы прокачки навыков.

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

        Погнали
      • Использование алгоритма Прима для генерации соединённых друг с другом пещер

        • Translation


        Я решил объяснить один из алгоритмов генерации карты, используемых в моей игре In the House of Silence. Главное преимущество этого способа заключается в том, что в отличие от других алгоритмов, он никаким образом не может сгенерировать карту с разделёнными частями.

        Генерация идеального лабиринта



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

        Для понятности я привёл псевдокод, описывающий алгоритм Прима. Будет довольно просто приспособить его под любой язык программирования.
        Читать дальше →
        • +50
        • 8.5k
        • 5
      • Программист учится рисовать. Дневник Емели

          Так получилось, что моим основным хобби на лихой 2020-й год стало освоение ремесла рисования.

          Еще в январе я дал себе некое обещание в виде цели к концу года — прокачать навык рисования (звучит конечно абстрактно и совсем не по SMART-у, я думаю, это и повлияло в дальнейшем на то, как я развивал этот навык весь год и что получилось в итоге).

          spoiler
          В конце года я остался доволен собой и окончательно понял, что я хотел бы прокачиваться и дальше!

          image
          Так выглядел мой уровень изобразительных навыков в ноябре предыдущего (2019-го) года

          Формат подачи данной статьи — это на 95% личный дневник, который я вел в гугл-доке, записывая, что я делал каждый месяц, свои ощущения и как-то фиксируя собственный прогресс — смотрел, сколько работ мне удалось нарисовать и какого они были качества — нравились ли они мне лично или были совсем так себе по исполнению.
          Читать дальше →
        • Процедурное разрушение в Control: какие уроки можно почерпнуть из опыта Remedy

          • Translation
          Этим летом на GDC старший VFX-артист Remedy Йоханнес Рихтер рассказал о том, как реализовано процедурное разрушение в последней игре студии — мистическом экшене Control.

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


          Читать дальше →
          • +29
          • 7.4k
          • 7
        • Джентльменский набор программиста UE4, ч. 1



            Давно хотелось составить список навыков и инструментов, которыми, по моему мнению, должны входить в «джентльменский набор» любого программиста под Unreal Engine 4. Буквально на днях, в чатике по UE4 я встретил такое:

            > blueprints, animation dev, tech art, ai, multiplayer, editor extensions. первое, что пришло в голову

            > Что приходит на ум: blueprints, animations, AI, material editor, widgets, slate, editor extensions, ue4 plugins, physics, lighting, rendering, c++
            + Сколько времени работал(а) с движком и страна, всё :)

            В таких формулировках всё сказанное — лишь набор слов. Поэтому я собрался и составил вопросник для тех, кто хочет быть UE4-программистом, и который позволяет оценить свой уровень тем, кто уже считает себя продвинутым программером под UE4.
            Читать дальше →
            • +27
            • 24.9k
            • 5
          • C++: Коварство и Любовь, или Да что вообще может пойти не так?



              “C позволяет легко выстрелить себе в ногу. На C++ это сделать сложнее, но ногу оторвёт целиком” — Бьёрн Страуструп, создатель C++.

              В этой статье мы покажем, как писать стабильный, безопасный и надежный код и насколько легко на самом деле его совершенно непреднамеренно поломать. Для этого мы постарались собрать максимально полезный и увлекательный материал.

              Читать дальше →
            • Что нужно знать про арифметику с плавающей запятой



              В далекие времена, для IT-индустрии это 70-е годы прошлого века, ученые-математики (так раньше назывались программисты) сражались как Дон-Кихоты в неравном бою с компьютерами, которые тогда были размером с маленькие ветряные мельницы. Задачи ставились серьезные: поиск вражеских подлодок в океане по снимкам с орбиты, расчет баллистики ракет дальнего действия, и прочее. Для их решения компьютер должен оперировать действительными числами, которых, как известно, континуум, тогда как память конечна. Поэтому приходится отображать этот континуум на конечное множество нулей и единиц. В поисках компромисса между скоростью, размером и точностью представления ученые предложили числа с плавающей запятой (или плавающей точкой, если по-буржуйски).

              Арифметика с плавающей запятой почему-то считается экзотической областью компьютерных наук, учитывая, что соответствующие типы данных присутствуют в каждом языке программирования. Я сам, если честно, никогда не придавал особого значения компьютерной арифметике, пока решая одну и ту же задачу на CPU и GPU получил разный результат. Оказалось, что в потайных углах этой области скрываются очень любопытные и странные явления: некоммутативность и неассоциативность арифметических операций, ноль со знаком, разность неравных чисел дает ноль, и прочее. Корни этого айсберга уходят глубоко в математику, а я под катом постараюсь обрисовать лишь то, что лежит на поверхности.
              Читать дальше →
            • Обзор умных часов Moto 360 3rd Gen



                Выход первых умных часов Moto 360 в 2014 году изменил рынок этой категории: впервые умные часы стали именно часами, а не большой ношей на руке. Круглый дисплей, стальной корпус, классический традиционный дизайн-все это стало началом развития категории «традиционных» умных часов.

                И вот спустя 5 лет компания eBuyNow представила новое поколение часов с премиальным дизайном, мощным железом, и своим видением Wear OS. Почему это может опять изменить рынок умных часов? Разберемся в обзоре ниже.
                Читать дальше →
              • Gameplay Ability System: как мы используем плагин для разработки Survival RPG

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

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



                  Читать дальше →
                • Онлайн шутер на Unreal Engine 4 за 90 часов (видео создания + исходники)

                    Привет, харб! Примерно год назад я выкладывал статью о том, как я в прямом эфире создал выживалку за 150 часов. На этот раз хочу представить вам сетевой шутер, который я создал за 25 заходов по 3 — 4 часа. Всего вышло около 90 часов и в итоге мы создали онлайн шутер, в который сыграли вместе со зрителями.

                    image

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

                    Несмотря на чистое время, данный проект занял примерно 10 месяцев. Я делал большие перерывы в стримах, но тем не менее, закончил разработку и теперь он доступен всем бесплатно и без смс.
                    Если вас интересуют подробности, записи стримов, исходники или билд игры с сервером в комплекте, предлагаю прочитать дальше под катом!
                    Читать дальше →
                  • Текстурирование, или что нужно знать, чтобы стать Художником по поверхностям. Часть 4. Модели, нормали и развертка

                    • Tutorial

                    Модели, нормали и развертка


                    По моему скромному мнению, художник по текстурам должен отвечать за развертку. Не за саму развертку (ее стоит делать 3D-художникам или вообще отдельным UV-специалистам), а ее укладку. Он должен определять, как острова должны располагаться, как должны быть повернуты и насколько сильно их можно потянуть в той или иной ситуации в зависимости от требований.

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

                    В этой части мы рассмотрим модели, развертку и нормали. Создадим текстуры для первой полноценной модели (хоть и простой) и настроим ее в Unreal Engine 4.

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

                    Часть 1. Пиксель здесь.
                    Часть 2. Маски и текстуры здесь.
                    Часть 3. PBR и Материалы здесь.
                    Часть 4. Модели, нормали и развертка — вы ее читаете.
                    Часть 5. Система материалов здесь.
                    Читать дальше →
                  • Создание компонента движения для системы лазания в Unreal Engine

                    • Tutorial
                    image

                    Здравствуйте меня зовут Дмитрий. Я занимаюсь созданием компьютерных игр на Unreal Engine в качестве хобби.

                    Как вы знаете недавно вышла Mirror's edge 2. Судя по отзывам критиков игра получилась очень слабая. И вы наверно уже захотели сделать свой Mirror's edge. Поэтому сегодня я расскажу как создать компонент движения, чтобы ваш персонаж двигался как героиня Mirror's edge.

                    Здесь будет описано создание компонента движения (дальше КД) который позволит персонажу:
                    1) Запрыгивать на стену.
                    2) Бегать по стене.
                    3) Перескакивать через небольшие препятствия
                    4) Делать ускорение при непрерывном беге
                    5)Делать подкат при нажатие Shift
                    6) Скатываться с наклонных поверхностей
                    7) А также мы создадим интерактивный объект веревку по которой тоже можно будет скатится

                    Все исходники приведены в конце статьи.
                    Читать дальше →
                    • +18
                    • 21.6k
                    • 6
                  • Перегрузка в C++. Часть II. Перегрузка операторов

                    • Tutorial


                    Продолжаем серию «C++, копаем в глубь». Цель этой серии — рассказать максимально подробно о разных особенностях языка, возможно довольно специальных. Эта статья посвящена перегрузке операторов. Особое внимание уделено использованию перегруженных операторов в стандартной библиотеке. Это вторая статья из серии, первая, посвященная перегрузке функций и шаблонов, находится здесь. Следующая статья будет посвящена перегрузке операторов управления памятью.


                    Читать дальше →
                  • Перегрузка в C++. Часть I. Перегрузка функций и шаблонов

                    • Tutorial

                    C++ сложный и интересный язык, совершенствоваться в нем можно чуть ли не всю жизнь. В какой-то момент мне захотелось изучать его следующим образом: взять какой-то аспект языка, возможно довольно узкий, и разобраться с ним максимально глубоко и подробно. Такой подход в значительной степени был стимулирован замечательными книгами Скотта Мейерса, Герба Саттера и Стефана Дьюхэрста. Когда накопилось определенное количество материалов, решил познакомить с ними Хабровчан. Так появилась эта серия, которую я назвал «C++, копаем в глубь». Серия помечена как Tutorial, но ориентирована она все-таки не на начинающих, а скорее на intermediate уровень. Первая тема — это перегрузка в C++. Тема оказалась очень обширной и получилось три статьи. Первая статья посвящена перегрузке функций и шаблонов, вторая перегрузке операторов и третья перегрузке операторов new/delete. Итак, начнем копать.


                    Читать дальше →
                  • Опубликованы изменения в правилах полетов беспилотников

                      Опубликовано, а значит, вступило в силу Постановление Правительства Российской Федерации от 03.02.2020 № 74 «О внесении изменений в Федеральные правила использования воздушного пространства Российской Федерации».

                      Рассмотрим важные для пилотов БВС моменты Постановления, попутно сравним их с его начальной редакцией. Вывод в конце.
                      Читать дальше →