Игра, где можно обогнать свет

Неделю назад я смотрел видео про телескоп Хаббл

Вот это

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

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

"Насколько сложно такую игру сделать?" - спросил я на ДТФ. В ответ я получил миллион ссылок на A Slower Speed of Light и прочие симуляции искажений Доплера, рассказы о том, что двигаться быстрее скорости света невозможно, что замедляющих свет сред не бывает, и прочую бесценную информацию, никак не относящуюся к сути вопроса, спасибо тебе, ДТФ. Однако в процессе ругани с комментаторами я примерно придумал, как можно сравнительно несложно накидать двумерный прототип, который даст некое условное представление о концепции. (Понятно что в идеале хотелось бы все это в честном 3D, но не будем торопиться.)

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

Получилось что-то такое
Получилось что-то такое

Здесь управляющийся на стрелках игрок, и весь мир показан субъективно с его точки зрения. Далее бегающие между вейпойнтами мобы - при этом можно увидеть где моб в текущий объективный момент времени (у него надпись над головой) так и где его проекции из прошлого, которые видит в данный момент игрок. Далее три бегунка слева настраивают скорость света, игрока и моба от 0 до 10 метров в секунду (одна клетка - метр). Следующие два бегунка - позволяют вручную бороться с багом, из-за которого персонажи либо мерцают (если бегунки слишком сильно выкручены влево) либо оставляют за собой инверсионные следы (если выкручено слишком вправо). По идее этот баг можно забороть, но для первого прототипа мне проще подкручивать бегунки вручную, вы постарайтесь не слишком обращать внимание ни на то ни на другое. Далее три галочки справа позволяют включать или отключать проекции игрока/мобов и так же отключать объективное положение мобов (объективное положение игрока отключать нельзя, подразумевается что сам себя он всегда видит там где надо, т.к. от него к самому себе свет летит условные 0 метров, т.е. мгновенно независимо от скоростей). Понятно, что должны быть еще и разнообразные искажения, но мы пока что на них забиваем. Надо же с чего-то начать.

Выставляем одного моба, бегающего по квадрату 4 на 4 метра, ставим скорость света на 5 м/с, скорость моба на 1м/с. Так же пытаемся избегать одновременно и морганий и инверсионных следов.

В результате получаем примерно предсказуемую картину. Когда моб бежит от нас - его проекция замедляется и отстает тем сильнее, чем дальше он от нас находится. Однако когда он приближается - проекция догоняет.

Ускорим моба до 4, так что он уже почти приближается к скорости света.

Эффект стал в четыре раза заметнее.
Не забываем, что по факту наш персонаж видит этого моба вот так. То есть только его субъективное положение. Так как объективно моб продолжает бегать равномерно не ускоряясь и не замедляясь (см гифку выше этой).

Пошли к более интересной теме. Что если моб бегает со скоростью света? Ставим на 5.

Здесь первый интересный эффект - когда что-то движется к нам со скоростью света - мы видим его ровно в последний момент при этом одновременно во всех точках движения к нам.

Хорошо, а что если моб бегает быстрее скорости света? Ставим 6.

Пока еще этого плохо видно, но я проспойлерю - объекты, которые движутся к нам быстрее скорости света - мы видим в обратном времени.

Давайте посмотрим эффект лучше. Ставим 8

Сможете угадать, где в это время реальный объективный моб? Я честно смог не сразу. Давайте покажу.
Заметьте, что моб уже бегает так быстро, что вот-вот догонит свою собственную проекцию из прошлого. Что будет, когда он это сделает?

Ставим 10 и уменьшаем скорость света до 4, чтобы не только ускорить персонажа (быстрее десятки его ускорить технодема не позволяет) но и замедлить проекцию.

Ничего не происходит. Игрок даже не замечает, что это случилось.
Пруф

Несколько разочаровывающе? Конечно. Потому что самое интересное начинается не когда персонаж догоняет свою проекцию, а когда он ее обгоняет. Потому что тогда... (Уменьшаю скорость света до 3, т.е. теперь моб бегает в три раза быстрее света)

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

Ставим свет на 2. Моб теперь в 5 раз быстрее.

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

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

Что-то в этом есть.
Чтобы вы понимали, где он в это время находится в реальности.

Технически можно выкрутить еще дальше, и выставить свет на 0, но результат ожидаемо будет...

...таким. Удачи увидеть что-нибудь, когда свет не двигается.
...таким. Удачи увидеть что-нибудь, когда свет не двигается.

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

(p.s. на гифках технодема выглядит несколько тормозной, в реальности она работает плавнее и ресурсов особо не жрет, я просто не умею в снимать видео с компьютера.)

449449
96 комментариев
300 ₽

пиши есчо!!!

103
Ответить

Идея для следующего фильма Нолана

102
Ответить

Только не говорите мне, что в этом треде как и в прошлом самым топовым будет комментарий про Нолана.

32
Ответить

Симулятор сенэна, неплохо

40
Ответить

"Когда в Японии дичь придумывают, в России её воплощают. Когда дичь придумывают в России - приходит пора Японии".

11
Ответить

Видел вопрос до этого в другом треде от автора - подумал что за наркоман в геймдев полез.. Щас увидел и подумал, что за гениальный наркоман!
Лайк! оч круто

28
Ответить

НЕ ПОКАЗЫВАЙТЕ НОЛАНУ!
НЕ ПОКАЗЫВАЙТЕ НОЛАНУ!
НЕ ПОКАЗЫВАЙТЕ НОЛАНУ!
!УНАЛОН ЕТЙАВЫЗАКОП ЕН
ЬТАМ ЮОВТ БЕ УН

22
Ответить