• Как я патчил Вселенную

      image

      На Хабре достаточно много статей про разработку игр, однако среди них очень мало статей, которые касаются “закулисных” тем. Одной из таких тем является организация доставки, собственно, игры большому количеству пользователей на протяжении длительного времени (год, два, три). Несмотря на то, что для некоторых задача может показаться тривиальной, я решил поделиться своим опытом хождения по граблям в этом деле для одного конкретного проекта. Кому интересно — прошу.
      Читать дальше →
    • Шум Перлина, процедурная генерация контента и интересное пространство

      • Перевод
      Наверно худшее, что случилось в области процедурной генерации контента (если считать, что это действительно область процедурной генерации контента, в чём я уверен не полностью) — это шум Перлина. Шум Перлина невероятно хорошо подходит (по крайней мере, если не приглядываться слишком внимательно) для генерации интересных ландшафтов. В сабреддите /r/proceduralgeneration недели не проходит без того, чтобы кто-нибудь не опубликовал «систему процедурной генерации», которая оказывается визуализированным разными цветами шумом Перлина. (За время написания этой статьи появилось два таких поста!)


      Я не хочу унизить шум Перлина. Это невероятно полезный для процедурной генерации инструмент, ставший точкой входа в эту область для множества людей, в том числе и меня. Но в то же время он очень сбивает с толку, потому что подразумевает, что процедурная генерация намного проще, чем это есть на самом деле. Большинство еженедельных постов о «системах процедурной генерации» в /r/proceduralgeneration исчезают без следа, когда их авторы обнаруживают, что следующий шаг в процедурной генерации гораздо сложнее. Истина в том, что шум Перлина стал своего рода счастливой случайностью. Он отлично подходит для генерации интересных ландшафтов, но на то нет систематических или повторяемых причин.
      Читать дальше →
      • +18
      • 1,7k
      • 5
    • Создание AR-игры с помощью Vuforia

      • Перевод
      • Tutorial

      [Под катом есть объёмные GIF]

      Дополненная реальность (Augmented reality, AR) внезапно стала очень популярным термином. Благодаря Vuforia разработчики с лёгкостью могут дополнять физический мир цифровым контентом.

      Хотя выпуск ARKit и ARCore позволил повысить известность дополненной реальности, уже существовали другие платформы и SDK. Одним из них был Vuforia; а недавно Unity заключила с Vuforia партнёрское соглашение и интегрировала эту AR-платформу в игровой движок Unity.

      В этом туториале я создам AR-игру с помощью Vuforia SDK, интегрированного с движком Unity. В процессе работы я расскажу о следующих ключевых компонентах:

      • Настройка передачи данных с камеры дополненной реальности
      • Отслеживание изображений — что это и как работает
      • Прикрепление цифрового контента к физическому объекту
      • Создание настраиваемых взаимодействий, запускаемых в зависимости от того, что видит камера
      Читать дальше →
    • Пространство генерации и пространство возможностей

      • Перевод
      В этом туториале я расскажу о двух терминах, которые используются мной для описания процедурных генераторов: пространство генерации (generative space) и пространство возможностей (possibility space). Мы дадим определения этим двум терминам, а затем рассмотрим интерактивные примеры, чтобы понять разницу между ними. Эти термины действительно полезны для описания процедурного генератора и для того, чтобы понимать разницу между двумя генераторами. Давайте приступим!


      Представьте огромную книгу, в которой представлен скриншот каждого отдельного мира Minecraft. Каждый скриншот помечен случайным seed, уникальным числом, которое можно ввести в Minecraft и сгенерировать этот мир. На первой странице представлен мир, порождённый из seed = 0, на следующей — мир из seed = 1, и так далее. В целом генератор миров Minecraft содержит 264 случайных порождающих значений, и это огромное число: игра может сгенерировать 18 446 744 073 709 551 616 миров. Каждый раз, когда вы нажимаете на «New World», на основе одного из этих seed создаётся мир. Число 264 — это размер пространства генерации Minecraft, множество всего, что игра может сгенерировать.


      Теперь представьте, что мир Minecraft состоит только из обычной травы, бесконечно распространяющейся во всех направлениях. Под ней нет ни пещер, ни камня, нет деревьев и холмов, нет животных. Просто один слой тайлов травы. Кроме того, что это очень скучно, такой мир никогда не будет сгенерирован в Minecraft (если не использовать моддинг). Мы можем представить его, можем описать его, даже открыть Minecraft и создать его сами вручную — но Minecraft не может сгенерировать его.
      Читать дальше →
    • Особенности работы с Mesh в Unity

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

        Борьба с подобными трудностями навела нас на мысли об автоматизации и написании статей на эту тему. Большая часть материала коснется работы с Unity 3D, поскольку это основное средство разработки в Plarium Krasnodar. Здесь и далее в качестве графического контента будут рассматриваться 3D-модели и текстуры.

        В этой статье мы поговорим об особенностях доступа к данным представления 3D-объектов в Unity. Материал будет полезен в первую очередь новичкам, а также тем разработчикам, которые нечасто взаимодействуют с внутренним представлением таких моделей.

        Читать дальше →
        • +21
        • 2,3k
        • 8
      • Дайджест интересных материалов для мобильного разработчика #286 (11 — 17 февраля)

          В нашем новом дайджесте рассказы про MAPS.ME и ABBYY Mobile, диалоги в Android и обучение через Minecraft, локализацию и беспилотный трамвай.

          Читать дальше →
        • Как семеро моддеров Mount and Blade создали игровую студию

          • Перевод

          Игра Mount and Blade: Warband — удобная игровая площадка для любителей моддинга, позволяющая перенести игроков в Средиземье, Вестерос или далёкую-далёкую галактику «Звёздных войн». Однако антуражем самого важного мода для неё стала не выдуманная реальность, а Британия седьмого века. Brytenwalda — это фанатский проект испанского моддера Альберто «Ibidil» Фуэнтевилья де Диего, превратившего Тёмные века Британии в мод, потом в DLC, а затем создавшего инди-студию. Когда Альберто только начинал экспериментировать в свободное время с файлами игры, он ещё не догадывался, как далеко заведут его решимость и любовь к игре.

          Ibidil — творческий человек, он всегда рассказывает истории; в сообществе моддеров он завоевал признание благодаря работе над Iberia: Total War, созданной в 2005 году тотальной конверсией Rome: Total War. Ibidil взялся за работу, когда сообщество испанских геймеров решило, что их нация отражена в игре со слишком большими историческими неточностями; Iberia: Total War разрабатывалась в том числе и затем, чтобы устранить эти ошибки. Ibidil занимался документацией к моду, а также редактировал боевую систему и организовывал работу создателей моделей и текстур, что дало ему большой опыт на будущее.

          Как и сама Британия, Ibidil перешёл от Рима к Тёмным векам. К этому его привело чтение материалов о падении Римской империи и о постримской Британии. «Это был мир с чётко заданной динамикой, состоящий из маленьких воинственных королевств, правители которых знали, что в боях на карту поставлено всё», — рассказывает он. Это идеально подходило для игры. От того периода сохранилось не так много записей, поэтому он и называется Тёмными веками, но это ещё больше вдохновило Ibidil. Он полюбил богатую и сложную историю Британии седьмого века и хотел оживить этот период — Альберто считал постыдным, что «такие имена, как Пенда или Кэдвалла, известны только историкам». Он даже перевёл сборник ранних валлийских поэм Canu Heledd на свой родной испанский язык.
          Читать дальше →
          • +27
          • 9,9k
          • 4
        • Russian AI Cup 2018, история 9 места

            Итак


            Меня, как и в прошлом году, зовут Андрей Рыбалка, только в этот раз мне 33. И, раз уж я оказался в десятке лучших, я решил снова поделиться своим подходом к написанию игрового бота для Russian AI Cup 2018.


            В этот раз заданием был футбол. Сама задача несколько напоминала RAIC 2014 года, когда был хоккей, но вот решение было совсем другим.


            Мир в этот раз был трёхмерным и эта трёхмерность использовалась по полной программе. Сама игра больше всего напоминала Rocket League.


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


            Читать дальше →
          • Reflective Shadow Maps: Часть 2 ― Реализация

            • Перевод
            Привет, Хабр! В данной статье представлена простая реализация Reflective Shadow Maps (алгоритм описан в предыдущей статье). Далее я объясню, как я это сделал и какие подводные камни были. Также будут рассмотрены некоторые возможные оптимизации.

            image
            Рисунок 1: Слева направо: без RSM, с RSM, разница
            Читать дальше →
          • SMAA: улучшенное субпиксельное морфологическое сглаживание

            • Перевод

            Данная статья основана на журнале Хорхе Хименеса, Хосе Эчеварриа, Тиаго Соуса и Диего Гутьерреса.

            Их демо реализации SMAA можно посмотреть здесь (файл .exe). На моём GTX 960 2GB оно работает вполне нормально.

            Старые способы сглаживания (антиалиасинга)


            Долгие годы стандартами для реализации сглаживания были методы MSAA (Multisampling Antialiasing) и SSAA (Supersampling Antialiasing). На самом деле, они и по-прежнему обеспечивают наивысшее качество среди всех современных методов сглаживания. Как мы знаем, алиасинг возникает из-за нехватки сэмплов, как на пространственном (ломаные линии), так и на временном уровне (мерцание), обычно рядом с гранями и областями изображения с высоким/низким контрастом. Для борьбы с ним у нас имеются два способа, которые когда-то были единственными решениями: Supersampling и Multisampling. При суперсэмплинге мы увеличиваем изображение, а затем снижаем его дискретизацию до нужного разрешения. Этот принцип отлично работает, потому что распространяется на все аспекты проблемы. При мультисемплинге используется похожее решение. В этом методе каждый сэмпл дублируется на основание определённого коэффициента. При современных больших разрешениях для этого требуются достаточно мощные графические карты. Поэтому нам нужны новые методы сглаживания, как на пространственном, так и на временном уровнях. Все эти методы используют в своей работе один алгоритм — распознавание краёв. Но они выполняют и другие операции.
            Читать дальше →

          Самое читаемое