Обновить
1953
270.2

Переводчик-фрилансер

Отправить сообщение

Грязные трюки и оперативка

Время на прочтение9 мин
Количество просмотров41K

Проблемы с ограничениями памяти давно в прошлом?

Оказывается, нет. Плохо работают с памятью не только некоторые коммерческие движки — у многих платформ достаточно агрессивные требования к ОЗУ. Кроме того, к ним добавляются ещё и ограничения по размерам дисков и картриджей.

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

Туториал по Unreal Engine. Часть 3: материалы

Время на прочтение12 мин
Количество просмотров181K
image

Как и в реальном мире, в играх есть множество объектов, каждый со своим внешним видом. В Unreal Engine этот внешний вид зависит от материалов. Какой цвет имеет объект? Прозрачен ли он? Блестит ли? Все эти свойства задаются материалами.

Материалы используются почти для любого визуального элемента в Unreal Engine. Материалы можно наносить на любые объекты, включая меши, частицы и элементы UI.

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

  • Управлять текстурами, изменяя их яркость и цвет
  • Использовать экземпляры материалов для быстрого создания вариаций
  • Использовать динамические экземпляры материалов для изменения цвета аватара при собирании игроком предметов
Читать дальше →

Криптография русского крестьянина

Время на прочтение5 мин
Количество просмотров34K

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

Должен сразу признаться, что статья не будет посвящена тому, как русским крестьянам удавалось обмениваться информацией втайне от своих помещиков.

Умножение методом русских крестьян


Если вы не знали о нём раньше, то это довольно любопытный подход к умножению, который не требует запоминания таблиц умножения — для него достаточно способности удваивать и делить пополам целые числа. Не очень понятно, как он относится к русским крестьянам: похоже, так же, как «датская сдоба» к Дании. Этот метод был известен ещё древним египтянам, которые явно жили намного раньше русских крестьян.

Общее описание метода просто, но не слишком информативно. Тем не менее, давайте начнём с него.
Читать дальше →

Туториал по Unreal Engine. Часть 2: Blueprints

Время на прочтение12 мин
Количество просмотров353K
image

Blueprints — это система визуального скриптинга Unreal Engine 4. Она является быстрым способом создания прототипов игр. Вместо построчного написания кода всё можно делать визуально: перетаскивать ноды (узлы), задавать их свойства в интерфейсе и соединять их «провода».

Кроме быстрого прототипирования, Blueprints также упрощают создание скриптов для непрограммистов.

В этой части туториала мы будем использовать Blueprints для следующих операций:

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

Двоичный поиск в графах

Время на прочтение10 мин
Количество просмотров18K

Двоичный поиск — один из самых базовых известных мне алгоритмов. Имея отсортированный список сравнимых элементов и целевой элемент, двоичный поиск смотрит в середину списка и сравнивает значение с целевым элементом. Если цель больше, мы повторяем с меньшей половиной списка, и наоборот.

При каждом сравнении алгоритм двоичного поиска разбиваем пространство поиска пополам. Благодаря этому всегда будет не более $\log(n)$ сравнений со временем выполнения $O(\log n)$. Красиво, эффективно, полезно.

Но всегда можно посмотреть под другим углом.

Что, если попробовать выполнить двоичный поиск по графу? Большинство алгоритмов поиска по графам, такие как поиск в ширину или поиск в глубину, требуют линейного времени и были придуманы довольно умными людьми. Поэтому если двоичный поиск по графу будет иметь какой-то смысл, то он должен использовать больше информации, чем та, к которой имеют доступ обычные алгоритмы поиска.
Читать дальше →

Туториал по Unreal Engine. Часть 1: знакомство с движком

Время на прочтение12 мин
Количество просмотров721K
image

Unreal Engine 4 — это набор инструментов для разработки игр, имеющий широкие возможности: от создания двухмерных игр на мобильные до AAA-проектов для консолей. Этот движок использовался при разработке таких игр, как ARK: Survival Evolved, Tekken 7 и Kingdom Hearts III.

Разработка в Unreal Engine 4 очень проста для начинающих. С помощью системы визуального создания скриптов Blueprints Visual Scripting можно создавать готовые игры, не написав ни строчки кода! В сочетании с удобным интерфейсом это позволяет быстро изготавливать рабочие прототипы.

В этой части туториала по Unreal Engine 4 мы ознакомимся с основными возможностями программы. Вот основные темы, которые будут в нём рассмотрены:

  • Установка движка
  • Импорт ассетов
  • Создание материалов
  • Использование Blueprints для создания объектов с простейшими функциями
Читать дальше →

Короткое плечо совпадения

Время на прочтение13 мин
Количество просмотров17K
Джеймс Тэнтон разбрасывается задачками по теории чисел с той же щедростью, с которой Джон Д. Рокфеллер раздавал десятицентовики. Я уже писал об одной из задач Тэнтона. Спустя несколько недель моё внимание привлёк этот твит о факториалах и квадратах и уже не давал мне покоя:

Tweet reads: 4!+1 = 25, a square number. 5!+1 = 121, a square number. Another example? Two more examples?

«4!+1 = 25, квадрат числа. 5!+1 = 121, тоже квадрат числа. Можете привести ещё один пример? Ещё два примера?»

С помощью ручки и бумаги легко показать, что $6!$ не подходит. Факториал $6!$ — это $1 \times 2 \times 3 \times 4 \times 5 \times 6 = 720$; прибавив $1$, получим число $721$, которое не является квадратом. (Оно раскладывается на множители как $7 \times 103$.) С другой стороны, $7!$ равно $5040$, а прибавив $1$, мы получим $5041$, что равно $71^2$. Это даёт нам очень милое уравнение:
Читать дальше →

Как изучают историю математики по чертежам в «Началах» Евклида

Время на прочтение8 мин
Количество просмотров12K
В четвёртой книге «Начал» Евклида, текста по геометрии возрастом 2 300 лет, есть указанаия по построению 15-стороннего многоугольника внутри круга. Первый шаг хорошо известен изучающим геометрию: построение равностороннего треугольника и правильного пятиугольника так, чтобы их вершины лежали на окружности и обе фигуры имели одну общую вершину. Кроме текстовых указаний, в «Началах» содержались иллюстрирующие метод чертежи.


В старейшей полной копии «Начал», манускрипте девятого века, хранящемся в Ватиканской библиотеке, отрезки прямых чертились и стирались. Изображение из Library of Congress Online Catalog, Prints and Photographs Division.

Невозможно узнать, как выглядели исходные схемы самого Евклида, но в выживших манускриптах открываются удивительные вариации в отображении таких геометрических фигур, как пятнадцатиугольник. Современному наблюдателю такие вариации кажутся ошибками: в некоторых средневековых версиях текста отрезки прямых имеют неверную длину. В манускрипте девятого века, старейшей копии «Начал», хранящейся в Ватиканской библиотеке, отрезки чертились и стирались. В ещё одном тексте девятого века, хранящемся в Оксфордском университете, стороны пятнадцатиугольника внутри окружности изогнутые и беспорядочные, а не прямые. В парижской копии двенадцатого века тоже используются кривые, но они немного менее извилисты, чем в старой оксфордской версии. В Вене хранится текст одиннадцатого или двенадцатого века, в котором исходные линии были правильной длины и прямыми, но позже кто-то добавил к ним изогнутые отрезки (1).
Читать дальше →

Шон Барретт: как я попал в видеоигровую индустрию

Время на прочтение8 мин
Количество просмотров5.3K
image


Программист Terra Nova: Strike Force Centauri, System Shock 2 и серии Thief Шон Барретт рассказывает о том, что привело его к программированию трёхмерной графики и работе над играми.

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

Когда я был подростком, в 80-х у меня был компьютер Atari 800, на котором я занимался обычными вещами (немного игр, в основном BASIC). (Технически, по крайней мере, изначально, им владела моя семья, но я был единственным пользователем.) Хотя это было практически невозможно на 800, но я заинтересовался 3D-графикой. Я изучал Pascal и работу 3D одновременно с расшифровкой программы для рисования каркасной графики из журнала Byte; я предпринимал хакерские попытки воспроизвести тот же эффект на 800. (В конце концов мне удалось выполнить на 800 трассировку лучами простой сферы с освещением по Ламберту, а затем клетчатых и отражающих сфер на Atari ST моего друга.)

Алгоритмы антиалиасинга в реальном времени

Время на прочтение19 мин
Количество просмотров51K
image

Алиасинг (aliasing) — это, возможно, наиболее фундаментальный и самый широко обсуждаемый артефакт 3D-рендеринга всех времён. Однако в игровом сообществе его часто недопонимают. В этой статье я подробно расскажу о теме сглаживания (антиалиасинга, anti-aliasing, AA) в реальном времени, особенно о том, что касается игр, и в то же время буду излагать всё достаточно простым языком.

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

Эту программу можно скачать здесь.

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

Шаблон проектирования Entity-Component-System — реализация и пример игры

Время на прочтение22 мин
Количество просмотров86K
image


В этой статье я хочу обсудить шаблон проектирования «сущность-компонент-система» (Entity-Component-System, ECS). По этой теме можно найти много информации в Интернете, поэтому я не буду глубоко вдаваться в объяснения, а больше расскажу о моей собственной реализации.

Часть 1: Реализация шаблона Entity-Component-System на C++


Начнём сначала. Полный исходный код моей реализации ECS можно найти в репозитории на github.

Entity-Component-System, в основном используемый в играх — это шаблон проектирования, обеспечивающий огромную гибкость в проектировании общей архитектуры программного обеспечения[1]. Такие большие компании, как Unity, Epic или Crytek используют этот шаблон в своих фреймворках, чтобы предоставить разработчикам очень богатый возможностями инструмент, с помощью которого они могут разрабатывать собственное ПО. Прочитать более широкое обсуждение по этой тематике можно в этих постах [2,3,4,5].

10 лучших игр о хакинге, кодинге и вычислениях

Время на прочтение11 мин
Количество просмотров100K

Как все знают из новостных лент, мы живём в постоянно эволюционирующей киберпанковской антиутопии. Люди подключают туалеты к Интернету! Если этот гибсоновский мир кажется вам слишком РЕАЛЬНЫМ, то вы можете поиграть в десять лучших видеоигр о взломе, программировании и вычислениях, чтобы сбежать в мета-антиутопию. Которая, я уверен, является намного лучшим местом.


10. TIS-100


[официальный сайт]

Да-а-а, приготовьтесь к тому, что ваш мозг начнёт болеть. TIS-100 — это игра студии Zachtronics, разработчика игр-головоломок, выпустившей Infinifactory и SpaceChem. В маркетинге она позиционируется как «игра о программировании на языке ассемблера, о которой вы не просили», и хотя я обычно игнорирую маркетинговые слоганы, здесь не могу не согласиться.

Игрок получает в своё распоряжение таинственный компьютер из 70-х, найденный в вещах покойного дядюшки. Когда-то он игрался с ним, пытаясь разобраться. Теперь это ваша задача. Если вкратце, то вам нужно получить числа, чтобы провести машину из точки A в точку B, выполнив на каждом уровне «цели» (например, сначала вывести положительное число, а затем отрицательное). Для этого у вас есть список команд, изложенных в смутном руководстве пользователя. Игра советует вам распечатать это руководство в бумажном виде. В нём есть сделанные дядей примечания и пометки маркером, дающие подсказки о сущности этой машины.
Читать дальше →

Эффект дизеринга в трёхмерной игре

Время на прочтение8 мин
Количество просмотров24K
image

Создатель Papers, Please Лукас Поуп работает над новым трёхмерным проектом Return of the Obra Dinn, в котором пытается с помощью эффекта дизеринга воссоздать в игре ощущение старинной книги.

Для начала краткое объяснение: Obra Dinn выполняет внутренний рендеринг всего в 8-битной палитре в градациях серого, а затем на этапе постобработки преобразует конечные выходные данные в 1-битные значения. Преобразование из 8-битного в 1-битный цвет выполняется сравнением каждого пикселя исходного изображения с соответствующей точкой в тайловом паттерне дизеринга. Если значение пикселя изображения больше значения точки паттерна дизеринга, то выходному биту присваивается значение 1, в противном случае оно равно 0. Выходные данные упрощаются до 1-битных значений, а глаз зрителя объединяет пиксели, аппроксимируя из них больше битов.
Читать дальше →

Рисователь биомов: наполняем содержанием огромный мир

Время на прочтение11 мин
Количество просмотров16K

Как преобразовать карту высот с верхней картинки в лес с нижней?

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

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

Если посмотреть на типичную игру с открытым миром, то можно увидеть в действии принцип Парето — 20% контента составляют основной путь игрока, а 80% — это фон. Основной путь игрока должен отличаться высоким качеством и художественным содержанием, потому что игроки проведут на нём бо́льшую часть времени. Фоны, в том числе обширные леса или пустыни вокруг главных городов, не требуют такого внимания к деталям. Эти 80% представляют собой отличную цель для умных инструментов размещения содержимого, которые слегка жертвуют качеством и художественным оформлением в пользу скорости и простоты создания контента.
Читать дальше →

Туториал: создаём простое приложение для watchOS 4

Время на прочтение24 мин
Количество просмотров9K
image

В этом туториале мы создадим простое, но полнофункциональное приложение под watchOS 4. А конкретнее, мы будем работать над приложением придуманной авиакомпании Air Aber для Apple Watch.

Из этого туториала вы узнаете:

  • Как добавлять целевую сборку watchOS 4 в приложение iOS.
  • Как обмениваться данными между двумя целевыми сборками.
  • Как добавить в Storyboard контроллер интерфейса watchOS и расположить объекты интерфейса.
  • Как создать подкласс WKInterfaceController и соединить всё вместе.
  • Как добавить новый контроллер интерфейса, добавить к нему таблицу и создать прототип из строк.
  • Как создать подкласс класса WKInterfaceController, чтобы заполнить таблицу, настроить строки и обрабатывать выбор.
  • Как сделать контроллер интерфейса модальным и передавать ему данные для отображения.
  • Как создавать анимации на основе изображений.
  • Как использовать API анимации watchOS 4.
Читать дальше →

Разработчики о самых грязных программных трюках в играх

Время на прочтение10 мин
Количество просмотров83K
image


Когда время заканчивается, разработчики выдохлись, а загадочные проблемы продолжают появляться, иногда требуются нестандартные решения. Когда вам любой ценой нужно завершить проект, то на кону стоит всё… В паре классических статей, изначально опубликованных в дружественном журнале Game Developer magazine, мы изучили несколько потрясающих примеров таких решений из реальной жизни. Эти нестареющие шедевры можно прочитать здесь (перевод на Хабре) и здесь.

Gamasutra ещё раз решила рассмотреть эту тему. Мы собрали со всей игровой индустрии необычные решения необычных проблем. Те, кто поделился с нами этими решениями, могут и не гордиться такими «исправлениями», но на самом деле гордиться им стоит. Им удалось выпустить игру, они ничего не испортили и, что важнее всего, никто ничего не заметил. По крайней мере, до этой статьи.

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

Логика камеры в 2D-платформере

Время на прочтение3 мин
Количество просмотров16K
image


Правильно настроить поведение камеры в классическом 2D-платформере не так просто, как может казаться.

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

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

В нашей новой игре Tiny Thor мы экспериментировали с различными вариантами. Я хочу рассказать о том, на каких техниках мы в результате остановились.
Читать дальше →

Создание ремейков игр с помощью эмуляции: proof of concept

Время на прочтение7 мин
Количество просмотров10K
image

Введение


«В моё время игры были лучше. Они были интереснее, потому что геймплей считался более важным, чем графика».

— Геймеры, рождённые в любом десятилетии

Каким бы ни было «ваше время», думаю, вы в какой-то степени согласны с этим мнением. Для меня это был период с середины 80-х до середины 90-х, когда я проводил бесчисленные часы за Sir Fred, Atic Atac, Airborne Ranger, Monkey Island, Twilight: 2000, Stunts, Gunship 2000, Twinsen’s Adventure, Dark Sun, Challenge for Ancient Empires, серией the X-Wing и очень многими другими играми.

Иногда мы испытываем приступы ностальгии и нам хочется сыграть в одну из тех игр снова. В этом случае у нас есть на выбор несколько вариантов.

Сыграть в remastered-версию. Некоторые игры настолько потрясающи и собрали настолько преданную базу фанатов, что выпускается официальное «новое издание». Это точно такая же игра, но с современной графикой. Отличным примером таких игр может быть замечательная Monkey Island Special Edition.

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

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

От кипящего свинца до компьютеров: история математической типографики

Время на прочтение24 мин
Количество просмотров15K

Математические шрифты шести разных систем печати, изображение Chalkdust

Я всегда считал, что создание печатных математических трудов больше похоже на вид искусства, чем на обычную полиграфию. Тот, кто печатает математические работы, скорее не «типограф», а художник, стремящийся изложить абстрактные данные на двухмерной поверхности. Математические символы сами по себе являются языком, но в основе своей это визуальное представление добытого человеком знания — знания, которое может быть слишком неэффективным, если передавать его через вербальные объяснения. Это делает печать математики ближе к форме визуализации данных, а не обычному печатному тексту.

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

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

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

Небольшое расхождение

Время на прочтение9 мин
Количество просмотров23K


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

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

positions of 394 raindrops on a tabletop


Повторю вопрос: выглядит ли этот паттерн как результат случайного процесса?
Читать дальше →

Информация

В рейтинге
Не участвует
Откуда
Россия
Зарегистрирован
Активность