• Thinking with Portals: создаём порталы в Unreal Engine 4

    • Translation
    image

    В этой статье я расскажу, как создавать порталы в Unreal Engine 4. Я не нашёл никаких источников, подробно описывающих такую систему (наблюдение сквозь порталы и проход через них), поэтому решил написать собственную.

    Что такое портал?


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

    Примеры порталов в играх (GIF)


    Antichamber (2013 год) и Portal (2007 год)


    Prey, 2006 год

    Из трёх игр самой известной, вероятно, является Portal, однако лично меня всегда восхищала Prey и именно её я мечтал скопировать. Однажды я попробовал реализовать собственную версию в Unreal Engine 4, но не особо преуспел, потому что в движке не хватало функционала. Тем не менее, мне удалось провести вот такие эксперименты:


    Однако только в новых версиях Unreal Engine мне наконец-то удалось добиться нужного эффекта:

    Читать дальше →
  • Создание собственной цветовой палитры

    • Translation
    • Tutorial
    Адаптировано из нашей будущей книги «Рефакторинг UI»

    Видели эти модные генераторы цветовой палитры? Когда выбираешь цвет, настраиваешь несколько параметров с музыкальными словечками типа «триада» или «четвёртый мажор» — и получаете пять идеальных цветов для своего веб-сайта?



    Такой вычислительный и научный подход к выбору идеальной цветовой гаммы крайне соблазнителен, но не очень полезен.
    Читать дальше →
  • Слабые события в C#

    • Translation

    От переводчика


    Недавно в проекте, где я работаю, мы столкнулись с проблемой утечки памяти. Прочитав множество статей — от рассказов по управлению памятью в .NET до практических рекомендаций по правильному освобождению ресурсов, я в том числе наткнулся на статью, в которой рассказывается, как корректно использовать события. Ее перевод я и хочу вам представить.
    Это топик из песочницы, с которым я попал сюда на Хабр.

    Читать дальше →
  • Создание разрушаемых мешей

    • Translation
    image

    Часть 1. Знакомство с Marching cubes


    Как создать меш из любого хаоса
    В Minecraft мы можем копать в любом направлении, убирая за раз по одному блоку с чётко заданными краями. Но в других играх разработчикам удаётся разрушать рельеф плавно, без кубичности Minecraft.

    Вот пример из No Man’s Sky: видео.

    Аналогичная техника применяется для отображения изображений с МРТ, metaball-ов и для вокселизации рельефа.

    В этой части я расскажу о технике создания разрушаемого рельефа Marching Cubes, а в более общем применении — для создания плавного граничного меша твёрдого объекта. В этой статье мы начнём с рассмотрения двухмерной техники, затем трёхмерной, а в третьей части рассмотрим Dual Contouring. Dual Contouring — это более совершенная техника, создающая тот же эффект.
    Читать дальше →
    • +30
    • 12.9k
    • 3
  • N+6 полезных книг



      Привет! Это шестой пост про книги: мы их читаем и запоминаем, которые были полезны для развития компании и вообще. Поскольку это уже не первая подборка, в неё попало достаточно много странных вещей — классика управления проектами и бизнеса не сильно меняется.

      Первая в списке — «Агрессия» Конрада Лоренца. Она вообще-то про зверей и людей, но эта штука настолько системная и захватывающая, что прямо накладывается на бизнес. Ну и просто на жизнь. Особенно интересны выкладки про уровень агрессии в разных сообществах. Ну и у него описаны баги разных зверей, что меня лично всегда дико радует.

      Коллаборация — Мортен Хансен
      Это инструкция по совместной работе и взаимодействию между людьми в команде и командами. Она меня здорово успокоила рядом исследований, например, тем, что вообще-то не надо заниматься нетворкингом, если ты занимаешься делом. Не надо знать 200-400 человек, чтобы найти нужного — надо знать 10 человек, каждый из которых знает по 50-100. А это в разы проще и эффективнее. Нетворкинг для интроверта — это прекрасно.
      Читать дальше →
    • Профилирование: оптимизация

      • Translation


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

      Читать дальше →
      • +32
      • 6.7k
      • 5
    • Профилирование: измерение и анализ

      • Translation


      Привет, я Тони Альбрехт (Tony Albrecht), инженер в Riot. Мне нравится профилировать и оптимизировать. В этой статье я расскажу об основах профилирования, а также проанализирую пример С++-кода в ходе его профилирования на Windows-машине. Мы начнём с самого простого и будем постепенно углубляться в потроха центрального процессора. Когда нам встретятся возможности оптимизировать — мы внедрим изменения, а в следующей статье разберём реальные примеры из кодовой базы игры League of Legends. Поехали!

      Читать дальше →
      • +23
      • 9.8k
      • 6
    • PLF запуск — как запустить продукт, чтобы об этом кто-нибудь узнал



        Собираюсь запускать несколько продуктов и понимаю, что нужно делать правильный запуск. И это не просто реклама в Директе и SEO-оптимизация, но и какие-то предстартовые действия. В одном из тренингов Лайк Центра я наткнулся на книжку «Запуск» (Launch) Джеффа Уокера. Её анонсировали как уникальный инструмент для успешного запуска продуктов, и я решил попробовать этот инструмент на себе. В нескольких статьях я расскажу, как это выглядит на практике. Но в этой статье только теория, т.е. конспект книги.

        Джефф Уокер разработал уникальную методику запуска. Она состоит в том, что для запуска нужно произвести некоторую последовательность действий, которая поможет продать продукт и обеспечит доверие. Он назвал эту методику PLF: Product Launch Formula — формула запуска продукта. Она состоит из последовательностей, историй и триггеров.

        Кто хочет нутром прочувствовать проблематику, — послушайте песню Uma2rmaH «Зависть».
        Читать дальше →
      • Загрузка реальных ландшафтов в Unity 3D

        • Tutorial


        Введение


        Тема генерации ландшафтов путем применения разнообразных хитроумных алгоритмов достаточно широко освещалась на хабре (раз, два, три и продолжать можно до бесконечности). Перечисленные примеры касаются случайной генерации некой абстрактной местности для повышения реализма в конечных игровых продуктах. А как быть, если требуется смоделировать некую реальную местность?

        По этой теме тоже довольно много разного рода публикаций в сети. Однако, многие из них опираются на использование платных приложений или расширений для Unity. Существуют описания и «дешевых» методов, но основная масса их ориентирована на получение так называемых heightmap — черно-белых квадратных изображений местности, где градациями серого определяется относительных уровень высот в данной точке. Существует ряд способов генерации подобных карт высот с использованием например инструментария GDAL. И такой подход не лишен недостатков, связанных с достаточной громоздкостью процедуры создания карты высот и последующей привязкой к полученной местности. Поэтому, в данной статье будет изложен некий альтернативный подход и интересующиеся приглашаются под кат.
        Читать дальше →
      • Blast-off. От идеи до релиза

          Всем привет! Я хочу рассказать историю разработки игры на Delphi от идеи до релиза.
          Статья больше носит характер истории, без вникания в подробности реализации. Честно говоря, очень хочется написать про то, как мы строим картинку в игре, или локализуем её, как мы делали GUI, но это я выделю в отдельную статью, больше техническую, с кодом. Иначе эта окажется слишком большой. Кода тут не будет, но детали под катом. Прошу!



          Application.Initialize;


          Итак. Игра наша придумана была давно для конкурса разработки игр (джема) IGDC №77 — джампер Это было начало 2012 года. Игру мы делали в состоянии перманентного кранча аж две недели. Код вышел ужасным. Расширять было невозможно, порой возникали необъяснимые глюки, но в целом игра работала и некоторые товарищи умудрялись проводить в ней дни, недели. Пара человек залипали в течение месяца. Стало понятно, что реиграбельность у неё хорошая и надо бы её доделывать. Но, как я сказал выше, код был ужасен из-за скомканных сроков, так что доделок было сделано не очень много и всё благополучно забыто.
          Читать дальше →
        • Многозадачность. Как справиться с призраками посторонних дел

            Автор иллюстрации: John Kenn

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

            О многозадачности, а точнее о том как с ней справиться, в статье и пойдет речь.
            Читать дальше →
          • Как флитком управляет людьми в онлайновой игре с зашкаливающим уровнем паранойи



              — Слышал, Слон флотом теперь командует?
              — В смысле?
              — Ну, помнишь, он админил?
              — Да.
              — Так ты сейчас обсмеёшься, его навыки управления оказались идеальными для управления кланом.

              В общем, мне всегда очень хотелось перенять опыт командира флота в Eve Online. Есть такой феномен: люди объединяются в большие корпорации и альянсы, при этом ничего не получают за игру материально, но каким-то чудом все вместе делают общие задачи. Уроки управления местами покруче MBA. И первый — понимание, что Eve — это не космическая игра, а, скорее, соцсеть, к которой прикручена игра про космос. И вести себя надо именно как в соцсети. То есть управление корпорацией — это правильная подача контента.

              Очень, очень многое у флиткома перекликается c тем, что нужно знать руководителю. И мне очень жаль, что этот диалог у нас не состоялся лет пять назад.
              Читать дальше →
            • «Во все тяжкие 2», Dark Forester — игра на дистанции в маленький плюс

                Если вы не читали первой части истории, то эта часть вам будет не понятна или просто на просто покажется странной, о чем вообще пишет автор. Я пошел на поводу у читателей и все таки поменял порядок глав. Так что всем любителям UnityScript придется еще немного подождать.

                Да и кстати, как это фото связано с Темным Лесником?

                image

                Итак, поехали дальше.

                Горе разработчик очутился у родителей с женой и ребенком, в одной комнатушке в тридцать с лишним лет, не живя, с родителями с 18-ти. Основной компьютер сломан, Unity движок просрочен, куча долгов и безработица.
                Читать дальше →
              • Эффективный расчёт области видимости и линии взгляда в играх

                • Translation
                image

                В стратегических играх обычно требуется знать область видимости NPC, чтобы игрок мог продумывать стратегию и делать следующий ход. Мы рассмотрим математику и реализацию рациональной модели, не просаживающей скорость игры при большом количестве NPC на карте. Если вы хотите увидеть готовое интерактивное демо модели, перейдите сюда и играйте прямо в браузере! Вот скриншот демонстрации:

                image

                Имея параметры видимости наблюдателя (направление взгляда, расстояние видимости и угол поля зрения), нам нужно найти видимую для него область, т.е. определить область видимости (field of view, FoV). Если препятствия отсутствуют, это будет сектор круга, состоящий из двух граней (радиусов) и соединяющей их дуги (см. Рис. 1). Кроме того, имея заданную точку мира, мы должны быстро определить, видима ли она для наблюдателя, т.е. необходимо обрабатывать запросы линии взгляда (line of sight, LOS) для заданной точки. Обе эти операции можно выполнить достаточно эффективно для использования при рендеринге в реальном времени.
                Читать дальше →
              • «Галоп пикселя — часть четвертая» — Анимация света и тени

                • Tutorial


                «Галоп пикселя», часть I — базовые понятия, этапы взросления, прикладные упражнения (линк)
                «Галоп пикселя», часть II — перспектива, цвет, анатомия и прикладные упражнения (линк)
                «Галоп пикселя», часть III — Анимация (линк)
                «Галоп пикселя», часть IV — Анимация света и тени (линк)
                «Галоп пикселя», часть V — Анимация персонажей. Ходьба (линк)

                Доброго времени суток Хабру и ценителям пиксель-арта, поклонникам квадратных точек, адептам лимитированных разрешений и цветов. Рад представить на ваш суд очередную статью из цикла «Галоп Пикселя». Не буду тратить время на оправдания моего долгого отсутствия и в виду явного присутствия перейду к сути дела. Сегодня мы продолжим изучать анимацию. На этот раз это будет анимация света и тени. Большей частью на статических объектах. Всё помнят – сначала база. Сначала фундамент. Сначала простое. Ну а сложное ввалится в ваши двери само, вслед за детишками.

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

                Цель этой статьи показать насколько силён дуэт брата и сестры, Света и Тени в движении. Мы уже видели, как они преображают сцены в статике. Но динамика нам ещё не знакома. Давайте исправим это упущение.

                Лопаты в руки.


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



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

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


                  Результат: информация о цвете занимает 1/64 от исходной площади при достаточно высоком качестве результата. Тестовое изображение взято с этого сайта.

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

                    Двадцать лет назад я написал первую строчку кода: 10 CLS. Именно так, не здороваясь с миром и не представляя, что меня ждет, я ввел следом RUN и электронная машина также бесцеремонно бросила мне первый вызов, стерев все на экране телевизора с насмешкой "ОК". Я был удивлен, но не тому, что могу приказать машине что-то сделать, а тому, что она может мне отвечать. Мне было 7, и это история о непростых отношениях ребенка с компьютером, через призму лет глазами состоявшегося программиста.


                    Читать дальше →
                  • Как использовать PVS-Studio бесплатно

                      PVS-Studio FreeМы хотим помочь миру программного обеспечения лучше познакомиться с инструментами статического анализа кода и повысить качество программного обеспечения. Мы предоставляем возможность бесплатного использования анализатора PVS-Studio студентам в учебных целях, индивидуальным разработчикам и коллективам энтузиастов.

                      Введение


                      Клиентами анализатора PVS-Studio являются отделы разработчиков различных компаний. Мы бы хотели, чтобы нашими клиентами были и индивидуальные разработчики. К сожалению, у нас ничего не получилось с экспериментальным продуктом CppCat. Мы не знаем, как построить успешный бизнес в сфере статического анализа кода, продавая персональные лицензии. Поэтому сейчас продукт PVS-Studio позиционируется исключительно как B2B решение.

                      Думаю, что наш провал с CppCat был предопределён. Мир диктует свои законы, и, например, тот же Coverity ориентирован на корпоративные лицензии. Однако, это не значит, что нужно исключать другие варианты взаимодействия с миром.

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

                      Стоит пояснить нашу позицию. Впрочем, если вам не терпится, вы можете сразу перейти к разделу «Бесплатная лицензия PVS-Studio». Если же читателю интересно узнать подробности, то предлагаю продолжить чтение.
                      Читать дальше →