• Устройство спецэффектов для игр под NES. Часть 1

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

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

      Поэтому перед тем, как запрограммировать что-нибудь, предстоит разобраться с тем, как устроены те или иные эффекты для NES, и статья будет посвящена тому, как это сделать. Существует множество статей из разряда «Игры, выжавшие из NES максимум», попробуем разобраться в том, как сделаны все основные эффекты в этих играх, а также создадим инструменты, которыми можно найти другие игры, не менее технологичные по эффектам.
      Читать дальше →
    • Глобальное освещение с использованием трассировки вокселей конусами

        В этой статье я расскажу о реализации одного из алгоритмов расчёта глобального (переотражённого / ambient) освещения, применяемого в некоторых играх и других продуктах, — Voxel Cone Tracing (VCT). Возможно, кто-то читал старенькую статью ([VCT]) 2011 года или смотрел видео. Но статья не даёт исчерпывающих ответов на вопросы, как реализовать тот или иной этап алгоритма.


        Рендер сцены без глобального освещения, и с использованием VCT:
        Читать дальше →
        • +39
        • 4,1k
        • 7
      • Процедурные миры из простых тайлов

        • Перевод
        image

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


        На изображении ниже показан набор тайлов (тайлсет), на основании которого сгенерирован мир из видео. Мир снабжён примечаниями, которые помогут представить его в настоящей среде.
        Читать дальше →
        • +27
        • 6,1k
        • 8
      • Learn OpenGL. Урок 5.3 — Карты теней

        • Перевод
        • Tutorial

        Тень — это отсутствие света. Если лучи от источника света не попадают на объект, так как поглощаются другим объектом, то первый объект находится в тени. Тени добавляют реализма к изображению и дают увидеть взаимное расположение объектов. Благодаря ним сцена приобретает "глубину". Сравните следующие изображения сцены с тенями и без:


        with_shadows_and_without


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


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


        Один из методов — карты теней (shadow maps) — относительно простой в реализации, используется в большинстве видеоигр и даёт достойные результаты. Карты теней не так уж и трудно понять, они довольно дёшевы с точки зрения производительности и их легко улучшить до более продвинутых алгоритмов (типа теней от точечного источника света или каскадных карт теней)

        Читать дальше →
        • +27
        • 3,4k
        • 7
      • Создание игры на Lua и LÖVE — 7

        • Перевод
        • Tutorial
        image

        Оглавление

        Оглавление


        • Статья 1
          • Часть 1. Игровой цикл
          • Часть 2. Библиотеки
          • Часть 3. Комнаты и области
          • Часть 4. Упражнения
        • Статья 2
          • Часть 5. Основы игры
          • Часть 6. Основы класса Player
        • Статья 3
          • Часть 7. Параметры и атаки игрока
          • Часть 8. Враги
        • Статья 4
          • Часть 9. Режиссёр и игровой цикл
          • Часть 10. Практики написания кода
          • Часть 11. Пассивные навыки
        • Статья 5
          • Часть 12. Другие пассивные навыки
        • Статья 6
          • Часть 13. Дерево навыков
        • Статья 7
          • Часть 14. Консоль
          • Часть 15. Финал

        Часть 14: Консоль


        Введение


        В этой части мы разберём комнату Console. Консоль реализовать гораздо проще, чем всё остальное, потому что в итоге она сводится к выводу на экран текста. Вот, как это выглядит:

        GIF

        Комната Console будет состоять из трёх разных типов объектов: строк, строк ввода и модулей. Строки — это просто обычные цветные строки текста, отображаемые на экране. Например, в показанном выше примере ":: running BYTEPATH..." будет являться строкой. С точки зрения структуры данных это будет просто таблица, хранящая позицию строки, её текст и цвета.
        Читать дальше →
        • +23
        • 1,8k
        • 1
      • Learn OpenGL. Урок 5.2 — Гамма-коррекция

          OGL3

          Гамма-коррекция


          Итак, мы вычислили цвета всех пикселей сцены, самое время отобразить их на мониторе. На заре цифровой обработки изображений большинство мониторов имели электронно-лучевые трубки (ЭЛТ). Этот тип мониторов имел физическую особенность: повышение входного напряжение в два раза не означало двукратного увеличения яркости. Зависимость между входным напряжением и яркостью выражалась степенной функцией, с показателем примерно 2.2, также известным как гамма монитора.


          Читать дальше →
          • +20
          • 2,1k
          • 6
        • Ой, у вас баннер убежал!

          Ну, и что?
          Реклама
        • Реверс-инжиниринг «Казаков 3», часть сетевая: создаём локальный сервер



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

            Что ж, если гора не идёт к Магомету…
            то он достаёт Wireshark
          • Руководство по созданию собственных шейдеров в Unreal Engine

            • Перевод
            • Tutorial
            image

            Благодаря системе нодов редактор материалов является отличным инструментом для создания шейдеров. Однако у него есть свои ограничения. Например, там невозможно создавать циклы и конструкции switch.

            К счастью, эти ограничения можно обойти с помощью написания собственного кода. Для этого существует нод Custom, позволяющий писать код HLSL.

            В этом туториале вы научитесь следующему:

            • Создавать нод Custom и настраивать его входы
            • Преобразовывать ноды материалов в HLSL
            • Изменять файлы шейдеров с помощью внешнего текстового редактора
            • Создавать функции HLSL

            Чтобы продемонстрировать все эти возможности, мы воспользуемся HLSL для снижения насыщенности изображения сцены, вывода различных текстур сцены и создания гауссова размытия (Gaussian blur).
            Читать дальше →
            • +16
            • 2,1k
            • 1
          • Система процедурной генерации уровня в Unreal Engine

            • Tutorial
            image

            Здравствуйте, меня зовут Дмитрий. Я занимаюсь созданием компьютерных игр на Unreal Engine в качестве хобби. Сегодня я расскажу как я создал процедурную генерацию уровней для моей игры «The Future City Project». Все исходники будут представлены в конце статьи. И ещё будет сюрприз.
            Читать дальше →
            • +12
            • 3,9k
            • 4
          • Создание игры на Lua и LÖVE — 6

            • Перевод
            • Tutorial
            image

            Оглавление

            Оглавление


            • Статья 1
              • Часть 1. Игровой цикл
              • Часть 2. Библиотеки
              • Часть 3. Комнаты и области
              • Часть 4. Упражнения
            • Статья 2
              • Часть 5. Основы игры
              • Часть 6. Основы класса Player
            • Статья 3
              • Часть 7. Параметры и атаки игрока
              • Часть 8. Враги
            • Статья 4
              • Часть 9. Режиссёр и игровой цикл
              • Часть 10. Практики написания кода
              • Часть 11. Пассивные навыки
            • Статья 5
              • Часть 12. Другие пассивные навыки
            • Статья 5
              • Часть 13. Дерево навыков

            14. Console

            15. Final

            Часть 13: Дерево навыков


            Введение


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

            Сначала мы рассмотрим способ задания каждого узла, затем узнаем, как считывать эти определения, создавать необходимые объекты и применять к игроку соответствующие пассивные навыки. Затем мы перейдём к основным объектам (узлам и связям), а потом рассмотрим сохранение и загрузку дерева. А в конце мы реализуем функционал, необходимый для того, чтобы игрок мог тратить очки навыков на узлы дерева.
            Читать дальше →
            • +12
            • 2,1k
            • 4
          Самое читаемое