Как стать автором
Обновить

Комментарии 72

Осталось написать кубик Рубика в 4 измерениях и тогда мне будет чем заняться между уколами санитарки.
Впрочем направление интересное. но мне кажется, что игровое направление верное. А просто посмотреть -не очень
Уже написан и 4d и 5d

У вас ссылки не работают :)

Очень интересное направление, особенно для игр в научно-фантастическом сеттинге.
В "Crysis" был уровень на базе пришельцев, где приходилось как бы "летать" или "плавать". Вот он был бы в разы интереснее, будучи четырехмерным.

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

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

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

Под линукс собрать можно или там сильно завязано на винду?
Завязано на win
Завязано не сильно. Изменений нужно не так уж и много. (Если что, я на C++ не писал лет 10, так что сильно не бейте за код).
Спасибо за pull request, добавлю.
Спасибо! А как собрать?
Присоединяюсь к вопросу.

Для начала нужно установить зависимости. В моём случае (Debian) это делается так


sudo apt install build-essential cmake ninja-build libglfw3-dev libglm-dev

Потом нужно создать каталог для сборки (внутри скачанного каталога проекта), перейти в него, сконфигурировать и собрать проект.


mkdir builddir
cd builddir
cmake ..
ninja

В результате появится ожидаемый исполнимый файл.

В manjaro, почему-то, не нужен ninja. сборка выглядит так:
sudo pacman -S cmake glfw-x11 glm

После установки зависимостей сборки:
mkdir builddir && cd builddir && cmake .. && make
Да под Убунтой тоже помогла замена «ninja» на «make».

Но, виндовая под вайном идёт гораздо быстрее

Соберите с -O2. Добавьте в конец CMakeLists.txt:


 target_compile_options(${PROJECT_NAME} PRIVATE -march=native -O2 )

Результаты (AMD FX-8320):


  • Linux, по-умолчанию: ~5 FPS
  • Linux, O2: ~15-17 FPS
  • Wine: ~20-30 FPS. Но там начальное положение в лабиринте другое, меньше видно, чем в начальном положении в версии под линукс. Если побродить, есть просадки вроде такие же, до 15-17.
Судя по всему, вы тестировали без включенной многопоточности? Попробуйте включить её в файле config.txt, FPS должно значительно повыситься.
Как уже выше написали, зависимость там минимальная.

даешь д()()м в 4D!!!
ps: а как будеть лететь ракета кибердемона, прячущегося в складках мерности?!)))

Ракета будет лететь по прямой, но прилетит с неожиданной стороны :)

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

Это если снаряд четырехмерный. Если он трехмерный то эффекты будут другие.
Пересечение произвольно ориентированной в объеме плоской фигуры с плоскостью — отрезок(за маловероятным исключением полного совпадения плоскостей ориентации ) А трехмерного снаряда с техмерной плоскостью — плоская двухмерная фигура. То есть снаряд не сработает.

Вы правы. Я исходил из того, что в 4х мерном простанстве не существует истинно 3х мерных объектов, так же как реальном мире нет плоских обьектов. Даже у тончайших листков бумаги есть толщина, пусть и очень маленькая.


Снаряд на сработает.

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

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

Мы говорим про реальность или про игру?


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


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


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

В реальности с цельным 4 мерным объектом есть та же проблема с связностью. Его любое бесконечно тонкое трехмерное сечение имеет массу. Интеграл этой массы по четвертому измерению даст какую-то фигню. Эта фигня должна взаимодействовать с другими такими 4-х мерными по закону обратных кубов… Тут наблюдается слишком много логических проблем именно с физикой и взаимодествиями. Так что я -пас…

Надо сделать это в vr для большего погружения в 4д. Вообще vr — хорошая возможность научиться интуитивно чувствовать 4д мир, но это пока не делают (

Разве VR даёт сильно больше информации, чем проекция 3д проекции 4д мира на 2д монитор?

В плане субъективного восприятия кажется, что да. Но только "кажется")

Разница есть на самом деле. Можно почуствовать сравнив как выглядят "3д видео" и "360° видео" в шлеме.

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

Основное достоинство VR бинокулярное зрение и параллакс связанный с микродвижениями головы и тела. Создаётся убедительный эффект погруженности в 3Д сцену.

Я переживал восторг, разглядывая 3Д сцены, которые сам рисовал на обычном мониторе, чувство погружения прямо внутрь «матрицы».
В VR очень неприятно (для некоторых!) когда «пол» меняет положение. Или когда окружение движется не из за перемещения головы, а в результате движения камеры в пространстве игры.

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

В Ubuntu под Wine отлично запустилось

Как же это КРУТО. Спасибо большое!


Пара идей:


  • Добавить мини-карту с текущей 3д проекцией и положением игрока в ней — вот оч поможет вестибулярный аппарату. Карта перерисовывается динамически в зависимости от текущей 3д проекции
  • Добавить 4-хмерную плоскость к которой игрок всегда будет находится в перпендикулярном положении (а-ля земля)
На самом деле интересно было бы развить эти идеи и выработать «правила» 4-мерного игрового мира в форме ограничений на степени свободы, аналогичные 3-мерному. Вы предлагаете добавить гиперплоскость (а-ля земля), ортогональную, полагаю, 4-вектору ускорения свободного падения, которая имеет 3 степени свободы (т.е. игрок по гиперплоскости перемещается в 3-х направлениях, не счиатя «прыжков»). Какими будут ограничения на «повороты головы»? Обычно в 3-д играх направление взгляда задается единичным вектором (имеющим две степени свободы), а поворот плоскости вокруг этого вектора исключается (хотя в реальности он вполне возможен). В 4-д мире направление взгляда, очевидно, должно задаваться так же единичным вектором (уже с 3-мя степенями свободы) и ограничениями на поворот плоскости (но тут уже у 2-плоскости две степени свободы, так что не совсем понятно как это логичнее сделать). При наличии 3-х степеней свободы привычное управление мышкой поворотами «головы» уже становится не вполне удобным и интуитивно понятным. Как быть? Возможно, появятся новые контроллеры?)
Интересно услышать Ваше мнение)

Хм, через несколько минут игры бинарник из статьи зарубил виндовый антивирь. Запускал несколько раз, всё было хорошо, но когда попробовал Roll, то сразу удалилось. Странно, на virustotal всего 2 детекта, проактивная защита сработала?

Действительно странно. Я даже не представляю, что там может быть подозрительного для антивируса.
У нас после апдейтов с 16 декабря такое поведение. ЕХЕ собранные на одной машине (без цифровой подписи), а потом сразу скачанные интернет браузером на другой, детектируются как вирус. Пользы, конечно, от такого антивируса конечно мало.
Описание угрозы идёт как Behavior:Win32/DefenseEvasion.WI!ml.
Причём любопытно, но на virustotal антивирус от MS ничего не детектит.

интересно, как это будет выглядеть в VR?

ого! здорово! спасибо очень круто!
скачал себе несколько таких игр!

НЛО прилетело и опубликовало эту надпись здесь
Так давно ведь. Видео датировано 2014-м.

В Задаче Трёх Тел было описание 4-х мерного пространства, интересно с тех пор посмотреть глазами насколько это возможно.

А меня в своё время очень впечатлило описание пятимерной Вселенной в книге Грега Игана «Диаспора».
Небольшой отрывок
В Пилотской Кабине было яблоку негде упасть: отличное окружение, чтобы попрактиковаться в преодолении непредсказуемых препятствий. Орландо обнаружил, впрочем, что большую часть времени молча стоит, очарованный открывающимся видом. Одна стена пентерактового окружения представляла собой сплошное гигантское окно, занятое увеличенным изображением Пуанкаре. Стоять перед нею и с открытым ртом пялиться на звезду было вполне простительно. Перемещение в публичных пятимерных окружениях требовало от Орландо постоянного самоконтроля, куда большего, чем страх ударить лицом в грязь — в строгом смысле слова последней оплошности совершить он физически не мог. Пятимерное тело, снаряженное многочисленными полезными рефлексами, в целом отвечало предполагаемому макросферному стандарту, но полагаться на столь чуждые инстинкты было все равно что управлять роботом-дистантником, чья программа включала так много автономных откликов, что все данные ему инструкции оказывались излишни…
Он смотрел вниз, в окнопол. В пятимерном окружении самые банальные детали оказывали гипнотизирующее воздействие. Тессеракт окошка состыковывался с тессерактом пола не по прямой, а через объем приблизительно кубических очертаний. Стоило ему подумать об этой гиперповерхности как о нижней части прозрачного окна, как тот факт, что он видел весь этот объем одновременно, обретал успокоительный смысл. Но как только он напоминал себе, что каждая точка куба принадлежит также фронтальной гиперповерхности матового пола, как иллюзия нормальности улетучивалась.
Пуанкаре с самого начала им не очень-то благоприятствовала. Даже ее очертания решительно противоречили старым представлениям о кривизне и пропорциях небесных тел. Орландо видел краем глаза, что четырехмерный диск звезды занимает лишь треть тессеракта, которому полагалось его обрамлять. Куда меньше места отсекала от прямоугольника вписанная в него окружность, и это побуждало плохо приспособленную к новым условиям часть его личности воображать, что звезда вот-вот улетит в глубь тессеракта, провалившись между восьмеркой точек сцепления. Конечно, этого не происходило. Поскольку полис подошел к звезде на расстояние, вполне достаточное, чтобы рассмотреть ее континенты «невооруженным» глазом, блеск светила слепил Орландо. Границы гигантских слябов кристаллизовавшихся минералов, что плавали по звездной поверхности, превосходили сложностью все формы трехмерных аналогов; ни одна выветренная долина, ни один коралловый риф не были так восхитительно вычурны, как темный скальный силуэт на фоне раскаленного звездного вещества.

Блин, я всегда думал что 4 измерение — это t — время. Уххх

В некоторых играх это измерение именно так и реализуют.
Обычно для удобства формул. Но когда говорят о мерности миров, обычно имеют ввиду геометрические мерности. А «который час» можно спросить и у жителя 4d мира.
После того как скачал игру....
… я в своем познании настолько преисполнился, что будто проживаю в миллионах и миллиардах таких же измерений и этот мир мне абсолютно понятен.
Интересно, сколько людей научились понимать четырёхмерное пространство и ориентироваться в нём. С помощью этой, либо другой симуляции

Ну понимать — это понятие растяжимое. Человек и в трехмерном пространстве ориентируется намного хуже, чем в двухмерном.

Тогда какой смысл делать такие игры? С тем же успехом можно менять окружению по любым выдуманным законам — зритель/игрок и не заметить разницы.

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

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

После статьи мне так и не стало понятно значение 4d

Что Вы имеете ввиду под значением?
Значение слова? 4d — 4 dimension или 4 измерения пространства, не считая времени.

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

Если бы добавили такие игры для виртуальной реальности, было бы круто, а так с монитора сложно всё таки прочувствовать эту реальность

А чем в виртуальной реальности будет проще?

Стерео объём.

А вы знали, что у лабиринтов в этой игре есть выход, после которого наступает победа?
Я уже две недели изучаю/модифицирую код этой игры и постоянно в неё играю, и только сегодня первый раз заметил, что её можно пройти
Выглядит как белый квадтрат вместо стены у края лабиринта. А вот что происходит если туда зайти — сюрприз =)


Спойлер

Используйте F8 что бы ходить сквозь стены и найти выход, прошерстите 3-д пространство по количеству комнат в поперечнике 4-ого пространства (по де-фолту = 3).
Я очень удивился когда зашел в этот "портал"

Выход есть всегда :)
Используйте F8 что бы ходить сквозь стены и найти выход, прошерстите 3-д пространство по количеству комнат в поперечнике 4-ого пространства (по де-фолту = 3).

А можно ещё проще — изменить размер лабиринта, меняя параметр maze_size в config.txt. Например, можно сделать «плоский» лабиринт, если задать maze_size_w = 1 и maze_size_y = 1. В таком виде он очень легко проходится.

Автор, джва года уже такое хочу, не встречал:
в двух изменениях точку можно показать перекрестием линий (прицел Робокопа) параллельным осям, в трёхмерном уже трёх линий. Можете сделать гифку или видео с анимацией движения точки пересечения 4 линий внутри прозрачного тессеракта?

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

Да, хотелось бы "снаружи", проекцию в 2D как на картинках в статье.

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории