• Идеальные карты нормалей для Unity (и других программ)

    • Translation
    … и как разобраться, что не так с вашим конвейером создания контента.


    Допустим, у вас есть потрясающая высокополигональная модель, над которой поработал художник, и вы хотите поместить её в игру. Художник показывал скриншоты модели в своей программе и они выглядят потрясающе. Даже после запекания карт нормалей для низкополигональной версии она всё равно выглядит отлично.


    Узрите величие этой традиционной модели для тестирования карт нормалей!

    Затем художник помещает её в игру, и она выглядит… немного не так.


    Разве эти грани не должны быть плоскими?

    Поверхности, которые должны быть плоскими, всё равно немного скруглены, некоторые даже вдавлены, и хуже того, по ним идут странные полосы. Знакомая ситуация? Некоторые из вас вероятно с ней сталкивались, думали: «ну ладно, наверно, лучше уже не получится», и двигались дальше. Возможно, накладывали немного грязи, чтобы замаскировать самые тяжёлые случаи.

    Но на самом деле что-то не так в вашем конвейере создания контента. Это не всегда очевидно, но проблему можно решить!*

    *Если считать, что в некоторых случаях вы можете вносить изменения в конвейер контента.
    Читать дальше →
    • +22
    • 5.8k
    • 3
  • Как Хабр взаимодействует с госорганами и другими заявителями. Transparency report за все года

      Привет, Хабр! Наконец-то представлюсь — меня зовут Алексей Шевелёв, и в Хабре я руковожу отделом по работе с пользователями (куда входит фидбек через форму обратной связи по всем проектам), попутно являясь комьюнити-менеджером. Иногда мне приходится взаимодействовать с разными государственными службами. Сегодня я расскажу, как это происходит.


      Читать дальше →
    • Consul + iptables = :3

        В 2010 году у компании Wargaming было 50 серверов и простая сетевая модель: бэкенд, фронтенд и файрвол. Количество серверов росло, модель усложнялась: стейджинги, изолированные VLAN с ACL, потом VPN с VRF, VLAN c ACL на L2, VRF с ACL на L3. Закружилась голова? Дальше будет веселее.

        Когда серверов стало 16 000 работать без слез с таким количеством разнородных сегментов стало невозможно. Поэтому придумали другое решение. Взяли стек Netfilter, добавили к нему Consul как источник данных, получился быстрый распределенный файрвол. Им заменили ACL на роутерах и использовали как внешний и внутренний файрвол. Для динамического управления инструментом разработали систему BEFW, которую применили везде: от управления доступом пользователей в продуктовую сеть до изоляции сегментов сети друг от друга.



        Как это все работает и почему вам стоит присмотреться к этой системе, расскажет Иван Агарков (annmuor) — руководитель группы инфраструктурной безопасности подразделения Maintenance в Минском центре разработки компании. Иван — фанат SELinux, любит Perl, пишет код. Как руководитель группы ИБ, регулярно работает с логами, бэкапами и R&D, чтобы защищать Wargaming от хакеров и обеспечивать работу всех игровых серверов в компании.
        Читать дальше →
      • Современный курс по Node.js в 2020

        • Tutorial


        Дорогие товарищи инженеры, сообщество Метархия представляет вашему вниманию современный курс по Node.js, который включает глубокий разбор всех возможностей и аспектов платформы. Основной упор делается на то, как создавать надежные высоконагруженные сервера приложений и API без привязки к конкретному фреймворку и даже протоколу, т.е. абстрагировать бизнес-логику в отдельный слой. К лекциям прикреплено множество примеров кода, демонстрирующих гибкую структуру приложений и архитектурные приемы, в том числе работу с СУБД через слой доступа к данным, создание интерактивных приложений на вебсокетах, обеспечение безопасности, Graceful shutdown, межпроцессовое взаимодействие, предотвращение утечек памяти, масштабирование и кластеризацию при помощи процессов и потоков. На текущий момент в курсе 38 лекций (около 35 и ½ часов видео), 37 репозиториев с примерами кода, 4 PDF со слайдами. Перед основной частью курса по Node.js нужно сначала освоить хоть частично курс по асинхронному программированию.

        Читать дальше →
      • Визуальное руководство по диагностике неисправностей в Kubernetes

        • Translation
        Прим. перев.: Эта статья входит в состав опубликованных в свободном доступе материалов проекта learnk8s, обучающего работе с Kubernetes компании и индивидуальных администраторов. В ней Daniele Polencic, руководитель проекта, делится наглядной инструкцией о том, какие шаги стоит предпринимать в случае возникновения проблем общего характера у приложений, запущенных в кластере K8s.



        TL;DR: вот схема, которая поможет вам отладить deployment в Kubernetes:
        Читать дальше →
        • +66
        • 11.9k
        • 8
      • Опыт поступления в магистратуру в Германии (детальный разбор)

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

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

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

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


          Читать дальше →
        • В этой статье слишком много воды

            «Мы начинаем разработку новой игры, и нам нужна классная вода. Такую сможешь?»


            , — cпросили меня. «Да не вопрос! Конечно, смогу», — ответил я, но голос предательски задрожал. «А, еще и на Unity?», — и мне стало понятно, что впереди очень много работы.
            Читать дальше →
          • Во что поиграть от топографического кретинизма: игры на зрительно-пространственную функцию



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

              У некоторых детей освоение ориентировки на плоскости, а потом и в пространстве вызывает больше затруднений, чем у других. Например, она труднее дается левшам и девочкам, причем по одной и той же причине – из-за особенностей межполушарного взаимодействия. Когда женщина говорит, что надо повернуть налево, имея в виду, что надо повернуть направо, то это как раз про то, что у нее есть небольшой дефицит зрительно-пространственной функции. Многим женщинам из-за этого трудно читать карты, и чтобы понять, в какую сторону идти, им вначале нужно сориентировать карту так, чтобы она совпадала с местностью.
              Читать дальше →
            • Я мотоцикл покупал, чтобы ездить, а не чтобы падать



                Эта статья не совсем в формате Хабра, но, наблюдая какими темпами растет количество двухколесных на улицах столицы, в том числе и среди ИТ-шников, я всё же рискну — может это спасёт несколько жизней, что не так уж и плохо.

                Когда лет 10 назад я купил себе первый мотоцикл, любая встреча двухколесных на дороге была целым событием. Последние же несколько лет ситуация изменилась кардинально — пробка из мототехники в междурядье уже каждодневная обыденность. Размышлять на тему, почему это происходит я не буду, а постараюсь просто поделиться опытом «выживания в большом городе» с теми, кто только купил или пока просто задумывается. Вполне возможно, что некоторые вещи будут полезны и любителям электротранспорта.
                Читать дальше →
              • Деревянные игрушки, часть первая — 1982-1985

                  Когда писал обзоры на ноутбук Compaq LTE, не думал, что настолько затяну с игрушечной частью. Но, как выяснилось, тут «работы» гораздо больше, чем думал. К примеру, куча игр, в которые играл уже в девяностые, оказалась из восьмидесятых. Плюс одно тянет за собой другое — вторая часть первую и т.п.

                  Почему игрушки деревянные? Ну, на фоне сегодняшних они точно выглядят, как деревянные. А некоторые даже прибиты к потолку. Но то не минус, это наоборот плюс — развивало воображение. А сегодня уже всё сразу на картинке, ничего воображать не надо. И вообще, многие игры сейчас ещё и "- Вы, чего, и конфеты за меня есть играть за меня будете? — Ага!"

                  В итоге задуманный краткий список любимых игр и описание запуска их на ноуте превратились в не особо краткую ретроспективу того, во что играл (или видел, как играют) и что оставило заметный след в памяти — даже если не особо нравилось. А ноут ушел куда-то на задний план. Хотя, конечно, иногда будет выглядывать.



                  Содержание:
                  Деревянные игрушки — эпилог, что осталось прибитым к потолку
                  Деревянные игрушки, часть последняя — 1997
                  Деревянные игрушки, часть десятая — 1996
                  Деревянные игрушки — неписи
                  Деревянные игрушки, часть девятая — 1995
                  Деревянные игрушки, часть восьмая — 1994
                  Деревянные игрушки, часть седьмая — 1993
                  Деревянные игрушки, часть шестая — 1992
                  Деревянные игрушки, часть пятая — 1991
                  Деревянные игрушки, часть четвертая — 1990
                  Деревянные игрушки, часть третья — 1989
                  Деревянные игрушки, часть вторая — 1986-1988
                  Деревянные игрушки, часть первая — 1982-1985
                  Читать дальше →
                • Splatter tiles: как без особой возни создавать тайлы для игр

                  • Translation
                  image

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

                  Можно ли всё это как-то ускорить?!


                  В этой статье я расскажу о том, как мы разрабатываем тайлы 2D-окружений для таких игр, как Levelhead и Crashlands, и покажу методику, позволяющую нам сэкономить немного времени и повысить универсальность графических ресурсов окружений. Этот метод также упрощает создание органически выглядящих типов рельефа, хорошо сочетающихся друг с другом. Я не предлагаю при создании тайлсетов окружений пользоваться только этим способом, но он станет хорошим пополнением набора инструментов для любого художника.

                  Этот способ называется SPLATTER TILE!
                  Читать дальше →
                  • +37
                  • 6.7k
                  • 1
                • Как убедиться, что мой сайт не заблокирован РКН

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


                    Читать дальше →
                  • Ограничения 8-битных игр и их точное воссоздание в Unity

                    • Translation
                    image

                    Ретро-игры с простыми механиками и пиксельной графикой способны пробуждать тёплые воспоминания у опытных игроков, и в то же время вполне доступны для более юной аудитории. Сегодня многие игры называются «ретро», но для создания ностальгического стиля требуются усилия и планирование. Именно поэтому мы пригласили ребят из Mega Cat Studios помочь нам в обсуждении этой темы. В этом посте мы рассмотрим всё необходимое для создания аутентичной графики в стиле игр для NES, в том числе важные параметры Unity, графические структуры и цветовые палитры.

                    Создание аутентичного арта в стиле NES


                    Для начала мы рассмотрим основы создания графики для игр, соответствующих ограничениям классической Nintendo Entertainment System. Это поколение консолей накладывает серьёзные ограничения на художников, стремящихся воспроизвести его аутентичную графику. Это ограничения на используемые палитры и на размер и количество объектов на экране. Кроме того, важно учитывать, что разрешение этой консоли составляет 256×240 пикселей.

                    Палитры


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


                    Эти цвета невозможно менять, потому что они являются частью самой консоли. Во всех играх NES используются сочетания этих цветов, из которых составляются изображения.
                    Читать дальше →
                  • Горизонтальное масштабирование. Что, зачем, когда и как?

                      Александр Макаров

                      Александр Макаров ( SamDark )


                      Здравствуйте! Я Александр Макаров, и вы можете меня знать по фреймворку «Yii» — я один из его разработчиков. У меня также есть full-time работа — и это уже не стартап — Stay.com, который занимается путешествиями.

                      Сегодня я буду рассказывать про горизонтальное масштабирование, но в очень-очень общих словах.

                      Что такое масштабирование, вообще? Это возможность увеличить производительность проекта за минимальное время путем добавления ресурсов.

                      Обычно масштабирование подразумевает не переписывание кода, а либо добавление серверов, либо наращивание ресурсов существующего. По этому типу выделяют вертикальное и горизонтальное масштабирование.
                      Читать дальше →
                    • Телеграм-каналы о разработке игр

                      Привет! Я инди-разработчик и автор канала о разработке игр. Решил поделиться с вами интересными геймдев ресурсами в Телеграме, которые сам регулярно читаю. За последние 3 года появилось много классных сообществ и авторских блогов о разработке, которые раньше были только в ВК. Надеюсь, будет полезно!


                      Читать дальше →
                    • Жизнь на частицах 3D

                        ПривеТ! Решил поделиться с читателями своими небольшими экспериментами с системами частиц в трехмерном пространстве. За основу взял публикацию на Хабре об экспериментах с частицами в 2D пространстве.


                        Читать дальше →
                      • Шейдеры 3D-игр для начинающих: эффекты

                        • Translation
                        [Первая часть]

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

                        Контуры



                        Создание контуров вокруг геометрии сцены придаёт игре уникальный внешний вид, напоминающий комиксы или мультфильмы.

                        Diffuse материала


                        Шейдеру контура необходима входящая текстура для распознавания и раскраски краёв. Кандидатами стать такой входящей текстурой могут быть диффузный цвет из материалов, цвета из диффузных текстур, нормали вершин или даже цвета из карт нормалей.

                        uniform struct
                          { vec4 diffuse
                          ;
                          } p3d_Material;
                        
                        out vec4 fragColor;
                        
                        void main() {
                          vec3 diffuseColor = p3d_Material.diffuse.rgb;
                          fragColor = vec4(diffuseColor, 1);
                        }

                        Здесь показан небольшой фрагментный шейдер, который рендерит диффузный цвет материала геометрии в текстуру буфера кадров. Эта текстура диффузного цвета из буфера кадров будет входящей текстурой для шейдера контуров.
                        Читать дальше →
                        • +39
                        • 9.2k
                        • 4
                      • HTTP-заголовки для ответственного разработчика

                        • Translation

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

                        Разработчики соединяют людей.
                        Разработчики помогают людям.
                        Разработчики дают людям возможности.

                        Разработчики могут создать сеть для всех, но эту способность необходимо использовать ответственно. В конце концов, важно создавать вещи, которые помогают людям и расширяют их возможности. В этой статье я хочу рассказать о том, как HTTP-заголовки могут помочь вам создавать лучшие продукты для лучшей работы всех пользователей в интернете.
                        Читать дальше →
                      • Переход Tinder на Kubernetes

                        • Translation
                        Прим. перев.: Сотрудники всемирно известного сервиса Tinder недавно поделились некоторыми техническими деталями миграции своей инфраструктуры на Kubernetes. Процесс занял почти два года и вылился в запуск на K8s весьма масштабной платформы, состоящей из 200 сервисов, размещённых на 48 тысячах контейнеров. С какими интересными сложностями столкнулись инженеры Tinder и к каким результатам пришли — читайте в этом переводе.

                        Читать дальше →