• Для оптимизации 3D-моделей недостаточно считать полигоны

    • Перевод
    image

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

    Введение


    Сколько полигонов мне можно использовать? Это очень частый вопрос, который задают художники при создании моделей для рендеринга в реальном времени. На этот вопрос сложно ответить, потому что дело не только в цифрах.

    Я начинал карьеру как 3D-художник ещё в эпоху первой PlayStation, а позже стал программистом графики. Хотел бы я прочитать эту статью перед тем, как впервые начал создавать 3D-модели для игр. Рассмотренные в ней фундаментальные основы пригодятся многим художникам. Хотя бОльшая часть информации из этой статьи не повлияет значительно на продуктивность вашей ежедневной работы, она даст вам базовое понимание того, как графическая карта (graphics processing unit, GPU) отрисовывает создаваемые вами меши.

    От количества полигонов в меше обычно зависит скорость его рендеринга. Однако несмотря на то, что количество полигонов часто коррелирует с частотой кадров в секунду (FPS), вы можете обнаружить, что даже после снижения количества полигонов меш по-прежнему рендерится медленно. Но поняв, как рендерятся меши в целом, вы сможете применить набор техник для повышения скорости рендеринга.
    Читать дальше →
  • Как взломали защиту от копирования консоли Sega Dreamcast

    • Перевод

    После выпуска книги DOOM Black Book я отправился в отпуск в Японию, где мне удалось поиграть в Ikaruga на настоящем аркадном автомате в игровом зале Taito HEY токийского квартала Акихабара. Этот опыт снова возродил во мне интерес к последней видеоигровой консоли SEGA — Dreamcast.

    В сети можно найти множество документов, сильно облегчающих процесс изучения вопроса. Есть два превосходных ресурса, способных быстро ввести в курс дела любого: замечательный веб-сайт Маркуса Комштедта, на котором описывается всё, вплоть до регистров GPU, и ресурс пользователя Jockel «Давайте создадим игру для Sega Dreamcast с нуля».

    При изучении машины я обнаружил восхитительную историю о том, как хакеры быстро взломали защиту копий игр и разрушили последние аппаратные надежды SEGA.
    Читать дальше →
  • Форсаж: ускорение работы Forza Horizon 4 благодаря шейдерам окон

    • Перевод
    image

    Гарет Харвуд — технический арт-директор Playground Games

    Действие Forza Horizon 4 происходит в прекрасной Британии, заполненной мгновенно узнаваемыми местами и достопримечательностями, в том числе и моделью города Эдинбурга в версии Playground Games.

    В большинстве игр с открытым миром особое внимание нужно уделять скорости потоковой передачи данных, иForza Horizon 4 с её детализированным и пёстрым городом не стала исключением. Для отрисовки зданий Эдинбурга необходимы были новые возможности сборки ресурсов, рендеринга, а также функционал движка, позволяющий загружать модели при движении со скоростью 300 миль в час.
    Читать дальше →
  • Монстры из Id: как создавался Doom

    • Перевод
    image

    Эта ретроспектива из самого первого (январь 1994 года) номера журнала Game Developer тогда ещё современных игр Id Software Doom и Wolfenstein 3D рисует уникальный портрет легендарного разработчика, игры которого заложили основы жанра FPS.

    В эпоху, когда для реализации всех заявленных возможностей часто требовалось 20 МБ памяти, им удавалось уместитьcя меньше, чем в 4 МБ. В то время, когда серьёзной проблемой была совместимость звуковых карт, они добавили в демо поддержку Disney Sound Source. Пока многие крупные игровые компании неторопливо подходили к мысли о кросс-платформенной разработке, им она казалась вполне естественной. Они писали игры, для разработки необходимо было бы 30 или больше сотрудников, хотя их компания состояла всего из семи человек. Они — это программисты Id Software, и то, что они делают, может навсегда изменить индустрию игр на PC.
    Читать дальше →
  • Бот, играющий в Castlevania

    • Перевод

    Что это


    CastlevaniaBot — это плагин для эмулятора NES Nintaco, который играет в Castlevania. Если запустить его на экране заставки, то плагин пройдёт всю игру от начала до конца. Или же можно запустить его в любом месте игры, чтобы он прошёл её часть.


    В этой статье я расскажу, как создал бота, способного пройти Castlevania, и как вы можете создать нечто подобное для любой игры на NES.
    Читать дальше →
    • +31
    • 6,9k
    • 6
  • Как игроки разрывают ткань реальности Spelunky с помощью дробовиков

    • Перевод
    image

    «Бум, бум, бум», стреляет дробовик, целясь… похоже, что в никуда? На земле лежит плазмаган, а справа летит призрак, но перед игроком нет врагов, а призрака хоть и можно убить, игрок в него не целится. И это мировой рекорд в Spelunky (сверяется со своими записями) по набору наибольшего количества денег? А часть, от которой люди в восторге, включает в себя стрельбу из дробовика в пустое пространство? Хм.
    Читать дальше →
  • Прогнозирование физики на стороне клиента в Unity

    • Перевод
    image

    TL;DR


    Я создал демо, показывающее, как реализовать прогнозирование на стороне клиента физического движения игрока в Unity — GitHub.

    Введение


    В начале 2012 года я написал пост о как-бы-реализации прогнозирования на стороне клиента физического движения игрока в Unity. Благодаря Physics.Simulate() тот неуклюжий обходной способ, который я описал, больше не нужен. Старый пост до сих пор является одним из самых популярных в моём блоге, но для современного Unity эта информация уже неверна. Поэтому я выпускаю версию 2018 года.

    Что-что на стороне клиента?


    В соревновательных многопользовательских играх необходимо по возможности избегать читерства. Обычно это значит, что применяется сетевая модель с авторитарным сервером: клиенты отправляют серверу вводимую информацию, а сервер превращает эту информацию в перемещение игрока, а потом отправляет снэпшот получившегося состояния игрока обратно клиенту. При этом возникает задержка между нажатием клавиши и отображением результатом, что неприемлемо для любых активных игр. Прогнозирование на стороне клиента — это очень популярная техника, скрывающая задержку, прогнозируя то, каким будет получившееся движение и сразу показывая его игроку. Когда клиент получает результаты от сервера, он сравнивает их с тем, что спрогнозировал клиент, и если они отличаются, то прогноз был ошибочным и нуждается в коррекции состояния.
    Читать дальше →
  • Как мы удвоили скорость работы с Float в Mono

    • Перевод

    Мой друг Aras недавно написал один и тот же трассировщик лучей на разных языках, в том числе на C++, C# и компиляторе Unity Burst. Разумеется, естественно ожидать, что C# будет медленнее, чем C++, но мне показалось интересным, что Mono настолько медленнее .NET Core.

    Опубликованные им показатели были плохими:

    • C# (.NET Core): Mac 17.5 Mray/s,
    • C# (Unity, Mono): Mac 4.6 Mray/s,
    • C# (Unity, IL2CPP): Mac 17.1 Mray/s

    Я решил посмотреть, что происходит, и задокументировать места, которые можно улучшить.

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

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

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

    Результаты на моём домашнем iMac для Mono и .NET Core были следующими:

    Рабочая среда Результаты, MRay/sec
    .NET Core 2.1.4, отладочная сборка dotnet run 3.6
    .NET Core 2.1.4, релизная сборка dotnet run -c Release 21.7
    Ванильный Mono, mono Maths.exe 6.6
    Ванильный Mono с LLVM и float32 15.5
    Читать дальше →
  • Разработка ИИ на примере игры Dicey Dungeons

    • Перевод

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

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

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

    Ну, давайте начнём с объяснения задачи!
    Читать дальше →
    • +24
    • 6,1k
    • 1
  • Любопытные извращения из мира ИТ

    • Перевод
    Сайт The Daily WTF уже 14 лет собирает курьёзные, дикие и/или печальные истории из мира ИТ. Я перевёл несколько рассказов, показавшихся мне интересными. Все имена и названия компаний изменены.

    На работу за 3 000 миль


    Правдивая история из личного опыта нашего автора Snoofle. [Оригинал]

    Много десятков лет назад оборонный подрядчик DefCon Inc работал на армию США и пытался получить новый контракт на создание какого-то приложения, применяемого в бою. Компания хотела продемонстрировать в своём предложении, что у неё хватит персонала для выполнения этого проекта. Поэтому она наняла более тысячи разнообразных программистов, руководителей проектов, менеджеров и так далее. Военные, изучавшие различные коммерческие предложения, увидели кучу новых сотрудников, абсолютно незнакомых с необходимыми процессами, процедурами и требованиями, поэтому передали контракт другой фирме. Подрядчик, со своей стороны, уволил всю эту тысячу человек.

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

    Читать дальше →
  • О 3D-графике простыми словами

    • Перевод

    Часть 1. Введение


    Привет меня зовут baldurk. Я уже несколько лет работаю программистом графики, поэтому хоть я и не в коем случае не являюсь экспертом, кажется, я уже многое понимаю во всём том, что касается работы с графикой.

    Идея этой серии постов уже давно витала где-то на периферии моего сознания, и снова всплыла после прочтения интересной статьи с разбором последней Deus Ex.

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


    Есть много составляющих, необходимых для создания даже простой 3D-игры, не говоря уж о таком проекте, как Watch Dogs.

    У меня есть только общее представление о том, что нужно рассмотреть в этой статье, но это будет зависеть от того, какие темы вызовут интерес. Тем не менее, основная идея заключается в том, чтобы создать общее описание того, что происходит внутри современной игры, не отпугнув при этом никого из читателей — я буду предполагать, что у вас нет знаний математики и программирования. Если вы знаете разницу между ЦП и графической картой, и отличаете оперативную память от жёсткого диска, то этого будет вполне достаточно, а остальное я объясню.
    Читать дальше →
  • Тлетворное влияние: как Штази защищала Восточную Германию от видеоигр

    • Перевод
    6 января 1988 года был одним из тех дней, когда в старом здании в стиле «барокко» на Клостерштрассе в Восточном Берлине кипела бурная деятельность. Тогда здание называлось «Домом юных талантов» (HdjT), но сегодня ему вернули первоначальное название — Дворец Подевильса, данное ему в честь его первого владельца, министра иностранных дел при Фридрихе Великом. В тот зимний день в комнате на первом этаже, обычно используемом для репетиций местного детского хора, столпилось 70-80 человек. Каждую среду здесь собирался компьютерный клуб — группа, преимущественно состоящая из молодых людей, львиной доле которых было примерно по двадцать лет, а самым молодым — всего шестнадцать.

    Похожие клубы в 1980-х можно было найти по всей Германской Демократической Республике (ГДР), только в одном Берлине их насчитывалось около двадцати. Но некоторые из посетителей той встречи прибыли в HdjT издалека, и на то у них были причины. Несмотря на то, что это был «Центральный клуб» комсомольской организации FDJ, ни один из компьютеров здесь не был произведён в ГДР. Все они появились с Запада.

    image
    Читать дальше →
  • Страшный суд: анализ финансовых показателей игры в раннем доступе

    • Перевод
    image

    В мае этого года, спустя два года в состоянии Early Access и три с половиной года разработки, мы выпустили полную версию Judgment: Apocalypse Survival Simulation. Я решил уделить время анализу наших финансовых данных, чтобы он помог другим инди-разработчикам, не представляющим, какая дорога им предстоит.

    Примечание: все данные о продажах, представленные в посте, являются суммой значений по всем магазинам. На данный момент Judgment продаётся в Steam, в Humble Store, на нашем сайте (с помощью Humble Widget), Green Man Gaming и Fanatical. Никаких бандлов, только прямые продажи.

    Цена, которую мы платим, чтобы быть инди


    Создание игр — недешёвый процесс. В нём задействовано множество разных областей. Очень редко можно найти человека, одинаково успешного во всех них, поэтому в разработке игр обычно участвует команда или разработчик платит за услуги подрядчикам. В показанные ниже значения включены общие затраты на разработку Judgment в течение 40 месяцев, которые мы пока потратили, в том числе 15 месяцев ушло на предрелиз, а другие 25 — на Early Access. Очевидно, что после полного релиза появятся дополнительные расходы, потому что мы продолжим совершенствовать и рекламировать игру.
    Читать дальше →
  • Игра, перевернувшая историю шутеров: Goldeneye 007 для Nintendo 64

    • Перевод
    image

    Игра GoldenEye 007  с консоли Nintendo 64, или как её ещё называют, GoldenEye 64, считается нестареющей классикой системы. В этом году игра отпраздновала свой 21-й день рождения (благодаря чему Бонд наконец-то сможет попробовать один из своих легендарных коктейлей), поэтому мы решили связаться с теми, кто играл в эту игру, писал по ней обзоры и разрабатывал её, чтобы понять, как всё это было тогда, в 1997 году.

    Просто ещё одна лицензия по фильму


    GoldenEye 007 изначально планировалась как двухмерный сайдскроллер наподобие Donkey Kong, как ещё одна игра, которую британский разработчик Rare создавал в эпоху SNES. Однако ведущий разработчик Мартин Холлис предложил, чтобы она стала трёхмерным шутером от первого лица для Nintendo 64, система и технологии который тогда ещё полностью не оформились. Он настоял на своём и собрал разношёрстную команду новичков в разработке игр.
    Читать дальше →
    • +27
    • 14,3k
    • 5
  • Чего нам ждать от Blizzard? Прошлое, настоящее и будущее серии Diablo

    • Перевод

    Концепт-арт Diablo III

    2 ноября 2018 года компания Blizzard завершила свой основной доклад на ежегодном фестивале BlizzCon объявлением о разработке игры серии Diablo для телефонов. Новость была встречена слабыми аплодисментами. Это было непонятное маркетинговое решение, сразу же вызвавшее противоречивые мнения — фанаты легендарной франшизы экшн-RPG громко обвинили компанию в пренебрежении PC-игроками.

    Вероятно, маркетинговый отдел Blizzard ожидал, что фанаты Diablo будут вдохновлены Diablo Immortal, но это заявление стало ещё одним странным ходом в серии диких решений, принятых по отношению к Diablo на протяжении последних нескольких лет. После провального выпуска Diablo III на PC в 2012 году и долгой дороги к искуплению, завершившейся выпуском в 2014 году расширения Reaper of Souls, фанаты ожидали долговременной поддержки, а возможно и второго расширения третьей части Diablo. Ведь она всё-таки продалась тиражом более 30 миллионов копий.

    Но после 2014 года обновления Diablo III были малыми и спорадическими, а теперь, четыре года спустя, заявление Blizzard о создании Diablo Immortal в то время, когда фанаты изголодались по любым новостям о Diablo IV, привело к серьёзным вопросам о будущем франшизы.
    Читать дальше →
  • Как рендерится кадр Middle Earth: Shadow of Mordor

    • Перевод

    Middle Earth: Shadow of Mordor была выпущена в 2014 году. Сама игра стала большим сюрпризом, и то, что она была спин-оффом сюжетной линии вселенной «Властелина кольца» оказалось довольно неожиданным. Игра обрела большой успех, и на момент написания статьи компания Monolith уже выпустила сиквел — Shadow of War. Графика игры очень красива, особенно учитывая то, что она была выпущена для разных поколений консолей, в том числе Xbox 360 и PS3. Версия для PC довольно хорошо отполирована, содержит дополнительные графические опции и пакеты текстур высокого разрешения, полностью раскрывающие потенциал игры.

    В игре используется относительно новый отложенный рендерер DX11. Я воспользовался Renderdoc, чтобы глубоко изучить приёмы рендеринга игры. При работе использовались максимально возможные параметры графики (ultra) и были включены все возможные «примочки», такие как независимая от порядка прозрачность, тесселяция, окклюзия в экранном пространстве и различные motion blur.
    Читать дальше →
    • +40
    • 7,9k
    • 3
  • Интервью с создателем ADOM Томасом Бискапом

    • Перевод
    image

    Хотя в последнее время маркетинг и бесконечное клонирование обесценили значение термина «roguelike» (большинство из таких продуктов должно называться «roguelite»), я утверждаю, что существуют шесть игр, которые можно считать Главными Roguelike, каноном, сочетающим в себе чёткость концепции с популярностью и размером базы игроков: разумеется, сама Rogue, NetHack, Angband, Dungeon Crawl Stone Soup, Brogue и ADOM, a.k.a. “Ancient Domains of Mystery.”

    Из всех них только две последние можно с полным правом считать работой одного человека. И среди них только исходный код ADOM недоступен любопытным игрокам. (Rogue никогда не выпускалась как open-source, но исходники её стандартного варианта Rogue Clone IV были открыты.) Благодаря конкурсу 7DRL (“7-Day Roguelike”), уже тысячи людей создали собственные roguelike, но создание проекта масштаба ADOM, игры столь же сложной, как и сам могущественный NetHack — потрясающая задача.

    К счастью, создатель ADOM доктор Томас Бискап согласился поговорить с нами об игре, на которую он потратил столько времени и энергии, и недавно рассказал нам и об ADOM, и о его находящемся в разработке сиквеле — Ultimate ADOM.
    Читать дальше →
    • +17
    • 4,1k
    • 2
  • Добавляем глубину 2D-спрайтам с помощью отрисованных вручную карт нормалей

    • Перевод

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

    Британский разработчик игр Cardboard Sword работает над двухмерным стелс-платформером The Siege and the Sandfox, создаваемом в Unreal Engine 4 с Paper2D. Команда публикует серию дневников разработки, знакомящую других разработчиков с тем, как использовать эти инструменты в собственных играх.

    Одна из основных технических особенностей The Siege and the Sandfox — использование отрисованных вручную тайлсетов и спрайтов с картами нормалей, позволяющих применять в этой игре с достаточно традиционным двумерным пиксель-артом способы трёхмерного освещения.

    Один из арт-директоров Cardboard Sword Кейт Дюк-Кокс недавно рассказал Gamasutra, как компания пришла к использованию этой техники, о том, почему она подходит игре и как можно применить подобные техники в собственных 2D-играх.
    Читать дальше →
    • +28
    • 7,9k
    • 5
  • Создание карт из функций шума

    • Перевод
    Одна из самых популярных статей на моём сайте посвящена генерации полигональных карт (перевод на Хабре). Создание таких карт требует много усилий. Но начинал я не с этого, а с гораздо более простой задачи, которую опишу здесь. Эта простая техника позволяет создавать подобные карты меньше чем в 50 строках кода:


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

    Шум


    Стандартный способ генерации 2D-карт заключается в использовании в качестве строительного блока функции шума с ограниченной полосой частот, например шума Перлина или симплексного шума. Вот, как выглядит функция шума:

    image

    Мы присваиваем каждой точке карты число от 0.0 до 1.0. В этом изображении 0.0 — это чёрный цвет, а 1.0 — белый.
    Читать дальше →
  • Алгоритм Форчуна, подробности реализации

    • Перевод
    Последние несколько недель я работал над реализацией алгоритма Форчуна на C++. Этот алгоритм берёт множество 2D-точек и строит из них диаграмму Вороного. Если вы не знаете, что такое диаграмма Вороного, то взгляните на рисунок:


    Для каждой входной точки, которая называется «местом» (site), нам нужно найти множество точек, которые ближе к этому месту, чем ко всем остальным. Такие множества точек образуют ячейки, которые показаны на изображении выше.

    В алгоритме Форчуна примечательно то, что он строит такие диаграммы за время $O(n\log n)$ (что оптимально для использующего сравнения алгоритма), где $n$ — это количество мест.

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

    Как обычно, код выложен на github, а все использованные мной справочные материалы перечислены в конце статьи.
    Читать дальше →