На протяжении всей своей истории человечество любило играть: создавать искусственный маленький мир со своими правилами и исследовать его. Самые древние в мире игрушки датируются 4–5-м тысячелетием до нашей эры. Не меньше мы любим и познавать, разбираться уже в мире вокруг себя, выявлять его законы и тем самым делать мир удобнее, приятнее и проще для собственной жизни. Столетиями два этих замечательных стремления — развлекаться и познавать — существовали несколько порознь: несерьёзное это дело для научного мужа — увлекаться игрушками. Но кое о чём учёные не догадывались: их открытия и осознание мира реального вели к созданию одного из самых впечатляющих развлечений — видеоигр. Давайте разбираться, какие именно открытия в мире реальном дали нам возможность погружаться в миры виртуальные — и кому за это сказать спасибо.

Евклид: миры, которые мы видим

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

до современного AAA-блокбастера:

Источник: https://cdn2.unrealengine.com/resident-evil-requiem-11-3840x2160-878e569a666b.png

В 2D-играх уровни состоят из тайлсетов — наборов плиток разных размеров: они формируют плоскости, по которым перемещается игрок, и задний план уровня. 

Движущиеся объекты, то есть игрок и враги, — это спрайты, наборы сменяющихся анимаций. Как бы необычно они ни выглядели, каждый спрайт — тоже прямоугольная плоскость, просто частично прозрачная. Поэтому в некоторых (не очень хорошо запрограммированных) 2D-играх урон кажется таким несправедливым: визуально игрок увернулся, но удар противника пришёлся по прозрачной части прямоугольной плоскости — прощай, здоровье!

Источник: https://classic-games.net/wp-content/uploads/2017/05/Image-046-1.jpg

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

Здесь же заметен и его вклад в оптику: соблюдена перспектива, игроку видны крохотные облака и далёкие небоскрёбы. Евклид заложил базу науки: наше зрение расходится от глаза конусом, центр конуса в зрачке, мы видим то, на что падает конус, а величина видимого объекта зависит не только от его реальных размеров, но и от угла наклона, под которым он виден. 

Пока мир игры сводится к двум измерениям, евклидова оптика соблюдается благодаря углу камеры. Мир имеет условную глубину, просто мы наблюдаем её только с заранее заданного ракурса. Это классический для платформеров вид сбоку или не менее классическая изометрическая камера, висящая над миром сверху и слегка диагонально. Её ещё называют видом на ¾ сверху. 

Источник: https://upload.wikimedia.org/wikipedia/en/a/a8/Final_Fantasy_VI_Opera_House_scene.png

Поскольку все объекты в кадре показаны под одним углом, глазу остаётся считывать только размеры для осознания перспективы. Всё очень просто: большой замок — большой, человеческая фигурка на нём — маленькая, луна — далеко.

Одним из продающих аспектов SNES, второй консоли Nintendo и наследницы Dendy (NES), была Mode 7 — возможность для разработчиков менять перспективу и показывать мир под новыми углами, например, подняв игрока в небо:

Источник: https://static0.thegamerimages.com/wordpress/wp-content/uploads/2024/11/final-fantasy-6-party-travelling-in-the-open-world-above-a-forest-in-an-airship.jpg?w=1600&h=900&fit=crop

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

При переходе в 3D-пространство базовые законы оптики менее важными не стали. В «переходном возрасте» эпохи PS1 разработчики придумали новый интересный способ отразить трёхмерное пространство: персонажи начали передвигаться по статичным задним планам:

Источник: https://preview.redd.it/i-beat-resident-evil-2-1998-for-the-first-time-v0-2lhhc3kzuuqg1.jpeg?width=640&crop=smart&auto=webp&s=39b06ac34c91e3a304c358cebc5fb783992a78b1

Все, кто играл в ранние Resident Evil, хорошо с этим знакомы: все комнаты и коридоры — очень детальные, потому что это заранее отрендеренные картинки без анимации. Единственное настоящее 3D — персонажи и объекты. Это был способ сделать красивую игру, не перегрузив всё ещё довольно слабое железо. 

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

Наконец, в полноценном 3D максимально задействованы и евклидова геометрия, и его же оптика. Все трёхмерные объекты состоят из полигональных сеток — совокупности треугольных плоскостей, собранных в многогранные объекты.

Источник: https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcSqm-4MoVAmidFJ1hmDYi85khWExi5YjrS3DQ&s

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

Источник: https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcT_6Q5j1RG-IdSseHLCtWvkZk-jsqSFdsr1uJFnaDGucIGLx1rCxeGWoaTE&s=10

В трёхмерных мирах камера чаще всего нестатична: она может следовать за персонажем или находиться полностью под контролем игрока. Чтобы отразить 3D-пространство на плоском экране, используется растеризация: игра определяет, что видит камера в каждый конкретный момент, и создаёт двумерный рендер. Кстати, помните, как на PS1 дёргались полигоны и весь мир как будто слегка дрожал? Это как раз из-за недостаточно точной растеризации. Поэтому современные эмуляторы смогли поправить проблему, на решение которой у тогдашнего железа не хватало мощностей.

Если мы перенесёмся совсем в настоящее, то важно также упомянуть вклад в оптику Ибн-Сахла, Виллеборда Снеллиуса и Рене Декарта. Они независимо в разное время открыли законы преломления света. Ибн-Сахл был первым, но его открытие не добралось до Европы, так что Снеллиус переоткрыл преломление, и закон, по которому оно работает, назван в его честь. 

Вместе с законом отражения света (открытым Евклидом) он составляет основу современного освещения в дорогих AAA-играх. Без этих открытий не было бы ни трассировки лучей, ни метода глобального освещения.

Источник: https://cdn-l-mkt.cdprojektred.com/image/Cyberpunk2077-abandoned_mall-RGB-EN_5oupp2lj9o6w9hfw.png

Гамильтон и Плато: всё, что нами движет

В 1843 году ирландский математик Уильям Гамильтон открыл кватернионы — систему гиперкомплексных чисел. Каждый кватернион — это четвёрка чисел, скаляр и вектор в трёхмерном пространстве. Для видеоигр важны как кватернионы, так и сами по себе векторы: именно Гамильтон впервые употребил это слово в современном значении.

Векторы разных величин и направлений лежат в основе движения персонажей в видеоиграх. Каждое нажатие WASD на клавиатуре или движение стика задаёт управляемому нами герою определённый вектор в двух или трёх измерениях. Прыжки? Вектор вверх, а после определённого времени — вектор вниз, отвечающий за падение. Плавание? Дополнительная возможность придавать персонажу вектор строго вверх или вниз по оси z. А поскольку векторы слагаемы, мы можем передвигать персонажа как в одном конкретном направлении, так и по любым диагоналям.

Источник: https://images.steamusercontent.com/ugc/1649965854345278907/3559F0AEE7086C9A4F34827A7C8EF97589E1142B/

Векторам же подчиняется движение всех врагов и объектов на любом уровне. 

Источник: https://i.redd.it/fyi5sks9lnva1.gif

Но если бы объекты и игрок перемещались по экрану, оставаясь статичными, видеоиграм остро недоставало бы динамики. Так кого благодарить за анимацию? В 2D — Жозефа Плато. Этот замечательный бельгиец изобрёл фенакистископ. 

Источник: https://upload.wikimedia.org/wikipedia/commons/thumb/d/d3/Phenakistoscope_3g07690b.gif/500px-Phenakistoscope_3g07690b.gif

Да, это первый дошедший до нашего времени прибор, превращающий ряд статичных картинок в анимацию. История первой анимации довольно интересна. Плато заинтересовался идеей превращения статичных изображений в оптическую иллюзию движения ещё в университете, а с головой погрузился в эту тему, прочитав научный труд Питера Роже «Пояснение оптической иллюзии, возникающей при наблюдении спиц колеса через вертикальное отверстие» в 1824 году. Он продолжил изучать этот феномен и сам опубликовал работу о нём в 1828 году. 

Параллельно с Плато сферу изучал Майкл Фарадей: его научный труд о феномене вышел в 1830 году. Прочитав работы Плато, Фарадей начал переписку с коллегой. В этой переписке Майкл в том числе поделился собственным экспериментом, позволявшим создать анимированное изображение, прокручивая колесо с картинками перед зеркалом. Спустя два года, в декабре 1832 года, Плато создал первую рабочую модель фенакистископа. Позже, в 1834 году, Питер Роже, труды которого подтолкнули изыскания Плато, утверждал, что также создал несколько подобных аппаратов ещё до Плато, но ни один из них не сохранился.

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

Источник: https://i.pinimg.com/originals/69/e4/e9/69e4e9216ecf61f64d4dce6dd74acddf.gif

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

Источник: https://media4.giphy.com/media/aESs2FU75W1Wehi1n0/giphy.gif

На помощь для описания физики твёрдых объектов приходят кватернионы. С их помощью вычисляется смещение центра тяжести, скорость вращения, инерция.

Источник: http://algarcia.org/Talks/PhysicsVideoGames_43.pdf


Как вы, наверное, заметили, в углу слайда указано, что не твёрдые тела и столкновения тел создают для дизайнеров дополнительные проблемы. Для решения этих проблем дополнительно используются методы Рунге-Кутты четвёртого порядка, к которым относится в том числе явный метод Эйлера (куда же без Эйлера!). Первые из этих методов Карл Рунге и Мартин Кутта опубликовали в 1900 году. Четвёртый порядок — весьма точный, но есть и более высокие, однако каждый порядок всё более требователен к железу, поэтому пока игры остановились на четвёртом. Так что если на ваш вкус снег в современных блокбастерах деформируется как-то нереалистично, ждите: со временем станет ещё круче.

Улам и Лоренц: бог из машины, играющий с нами в D&D

Станислав Улам разработал метод Монте-Карло как бы между дел: до этого он участвовал в создании первой ядерной бомбы, позже — в создании бомбы водородной. Ему всего-то хотелось статистически выяснить вероятность выигрыша в пасьянс солитер. Метод, названный в честь дяди Улама, любившего гемблинг в казино Монте-Карло, быстро нашёл применение в ЭНИАК, первом электронном вычислителе общего назначения, предтече компьютеров. И понеслась.

Люди в целом склонны любить элемент случайности. Мы хотим верить, что нам нравятся только удачи, но именно вкупе с неудачами они создают баланс, столь привлекательный для мозга. Большинство видеоигр существуют не в пространстве чистого детерминизма: каждый исход зависит (в разной степени) от навыка игрока и удачи. Эту удачу симулируют поиск по дереву методом Монте-Карло и генерация случайных чисел, основанная на нём же. 

В компьютерной ролевой игре генерация решает, сколько именно урона наносят персонажи игрока и враги при ударе, симулируя бросок одной или нескольких костей d6:

Источник: https://www.myabandonware.com/media/screenshots/w/wizardry-proving-grounds-of-the-mad-overlord-5vx/thumbs/wizardry-proving-grounds-of-the-mad-overlord_9.png

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

В других жанрах игр RNG часто определяет, что падает с врагов, редкость и свойства каждого предмета.

Источник: https://tagn.wordpress.com/wp-content/uploads/2021/10/d2_faroasisloot.png

Как и все технологии, генераторы случайных чисел со временем растут и развиваются вместе с железом. Поэтому сейчас ими довольно сложно манипулировать, а вот в играх постарше можно было гарантировать те или иные результаты или хотя бы группы результатов. Например, в самой первой The Legend of Zelda враги поделены на группы, а игра за кадром подсчитывает количество убитых противников — от 0 до 9, потом сброс к 0. Сочетание этого счётчика и группы врагов определяет, какой предмет игрок может получить за победу:

Источник: https://www.zeldadungeon.net/wiki/images/c/c8/Item-Drop-Chart.png

Искусственный интеллект врагов решает, что делать дальше, опираясь на сложное дерево Монте-Карло. Игроки склонны хвалить ИИ в некоторых играх, подмечая, что противники действуют как живые: всё дело в дереве из множества ветвей, продуманных разработчиками. Частый объект похвалы — шутер F.E.A.R.: в каждом сценарии вражеские силы принимают быстрые решения, обходят игрока с флангов и координируют действия, подчиняясь сложному дереву решений. 

Источник: https://media.moddb.com/images/members/4/3578/3577549/profile/1.png


Столь сложная и продуманная система легко может показаться несправедливой для игрока, поэтому F.E.A.R. оставляет подсказки: получив свежий приказ, ИИ переговариваются, давая в общих чертах понять, что собираются делать дальше. Это не единственное решение. Например, в серии Devil May Cry ИИ противников напрямую связан с камерой: оказавшись вне поля зрения игрока, враги приходят в дереве поведения к команде присмиреть и атаковать реже, чтобы снизить количество «нечестного» урона.

Источник: https://ushallplay.wordpress.com/wp-content/uploads/2023/01/dmc3.jpg

Что до Эдварда Лоренца, его можно и нужно благодарить за эффектные всплески, вспышки и взрывы на наших экранах. В 1961 году Лоренц, изучая с помощью компьютера модели поведения погоды, загрузил данные, основанные на дюжине факторов, в компьютер дважды. Для второй симуляции учёный взял за основу данные из середины первой. В идеале повтор должен был показать те же результаты, но они оказались совершенно разными. Компьютер при симуляции округлял вводные шестизначные данные (0,123456) до трёхзначных (0,123). Эта крохотная погрешность привела к огромным конечным изменениям. 

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

Да, вражеский корабль процедурно распадается на частицы при попадании ракеты. Теория хаоса в действии!

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

Источник: https://media.tenor.com/wLiDyxOJS0QAAAAe/blood-fresh.png

Впрочем, этот аспект и сейчас не слишком поменялся. Например, в Battlefield 6 даже здания при взрывах расщепляются на частицы, поведение которых определяет центр взрыва, масса и изначальное местоположение.

Источник: https://www.ea.com/ru-ru/news/how-battlefield-6-redefined-destruction

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

Источник: https://i.redd.it/change-my-mind-gta-trilogy-has-the-worst-rain-effects-in-v0-my3qw4ovawz71.jpg?width=3840&format=pjpg&auto=webp&s=2899ff0cc269af9ff0211aec7726b8ff6c6eecc3

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

Источник: https://64.media.tumblr.com/82bbddf45e3bc9c0f625cfab7f06246a/tumblr_nxfkzrkU1i1u58hhno1_500.gif

Так кого благодарить за видеоигры?

Далеко не только вышеназванных личностей. Законы Ньютона влияют на физику виртуальных объектов. Ему же, а также Галилею, стоит возносить хвалу за поведение огнестрельного оружия и баллистику в играх. Основатели математической экономики внесли свой вклад в развитие стратегий. И, конечно же, все математики, работавшие в сфере «компьютерной науки» информатики, начиная с Шиккарда, Бэббиджа и Лавлейс, достойны нашего величайшего уважения. Как его выразить? Наверное, играть в игры, которые вам нравятся, и искренне восхищаться тем, что на стыке науки и искусства родился столь невероятный тип развлечений.