Перейти к содержимому
Doob

Многомерный лабиринт

Рекомендуемые сообщения

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

 

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

 

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

 

В minecraft, при помощи комблока, можно сделать что угодно, но все упирается ресурсы сервера.

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

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

А можно тоже самое, но для "дубов"?

 

Появляешься в комнате [1] с четырьмя дверьми, идешь в первую попавшуюся - оказываешься в комнате [3] с кучей зомбей, бежишь назад - оказываешься в комнате [17]. В комнате [17] стоит печка, верстак и табличка, на табличке надпись "Ты всегда можешь вернуться сюда, войдя в ту же дверь, из которой вышел". Идешь в первую попавшуюся дверь - попадаешь в комнату [109], она пустая, идешь в первую попавшуюся дверь - попадешь в комнату [108], там растет дерево со стволом из коблы и "листвой" из досок.

Ну и в таком духе...

Изменено пользователем Doob

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Появляешься в комнате [1] с четырьмя дверьми, идешь в первую попавшуюся - оказываешься в комнате [3] с кучей зомбей, бежишь назад - оказываешься в комнате [17]. В комнате [17] стоит печка, верстак и табличка, на табличке надпись "Ты всегда можешь вернуться сюда войдя в ту же дверь, из которой вышел". Идешь в первую попавшуюся дверь - попадаешь в комнату [109], она пустая, идешь в первую попавшуюся дверь - попадешь в комнату [108], там растет дерево со стволом из коблы и "литвой" из досок.

Ну и в таком духе...

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

Кстати, ты в The Talos Principle играл?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

Кстати, ты в The Talos Principle играл?

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

 

В The Talos Principle не играл, играл в Antichamber - там связи жестко зафиксированы и решить задачу можно просто рандомно бегая в разные двери.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Допустим, в вышеописанной ситуации алгоритм один: беги в рандомные двери, вернуться все равно не сможешь

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

 

В The Talos Principle не играл, играл в Antichamber - там связи жестко зафиксированы и решить задачу можно просто рандомно бегая в разные двери.

Погоди ты с пятимерными лабиринтами-мы еще с четвертым измерением не разобрались)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Допустим, в вышеописанной ситуации алгоритм один: беги в рандомные двери, вернуться все равно не сможешь

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

Хорошую головоломку намного сложнее создать, чем пройти

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Хорошую головоломку намного сложнее создать, чем пройти

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

А если в лабиринт войдут два игрока?

 

Ну вся фишка в том, что система должна обрабатывать каждого игрока индивидуально и всех вместе.

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Ну вся фишка в том, что система должна обрабатывать каждого игрока индивидуально и всех вместе.

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

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

Но это все тоже мозговыламывание, только в квадрате

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Но это все тоже мозговыламывание, только в квадрате

 

Вообще-то в кубе)) Изначально, я сделал по фильму Cube - 18х18х18 комнат, при переходе из одной комнаты в другую, дальние комнаты выгружались, новые появлялись, без всяких смещений и телепортаций. Но все делалось при помощи комблока - каждый блок приходилось ставить отдельно, комп на циклах без слипов подвисал, вылетал, крашил майн. В OpenComputers же, создать базовую комнату можно двумя командами setBlocks (в MC1.8 лучше задействовать стандартные fill и clone)

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

 

P.S. Как вариант - виртуальное пространство заполненное тессерактами, но это слишком примитивно.

Изменено пользователем Doob

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Хотя, кроме тессерактов мне ничего не приходит в голову.

Вот например возможные правила:
Вся система в цикле меняет состояние по таймеру.

1. Состояние системы "запертые ячейки" - все тессеракты запираются, т.е. невозможно перемещаться между соседними просто пройдя через дверь. Если игрок идет через внешнюю дверь - его перекидывает в этом же тессеракте в куб расположенный напротив того куба из которого он попытался выйти.
1pZbFx5.gif
 
Побегав, игрок находит правило перехода из запертого тессеракта (например пробежав через все "внешние" кубы по одному разу, а в одном побывав два раза, игрок может перебросить себя в соседний тессеракт зайдя в правильную дверь)
IYk7lel.gif
 
2. Состояние системы - "сдвиг кубов"
Т.к. для упрощения используются "стабилизированные" тессеракты - одновременно в трехмерное пространство проецируются только 7 кубов (восьмой смещен в подпространство)
Во время сдвига кубов один куб уходит на место восьмого, а восьмой сдвигает остальные кубы, если игрок находится в смещаемом кубе, то его выбрасывает через n тессерактов в направлении смещенного куба в ближайший к исходному куб.
 
3. Состояние системы - "гиперсаязи"
В это состоянии внешние двери связываются не с ближними тессерактами, а с дальними, через несколько штук (дальность связи меняется после каждого цикла системы в виде синусоиды)
Внутренние же двери тоже перебрасывают через несколько кубов, но внутри исходного тессерката.
 
Таких правил можно наплодить тысячами, но надо систематизировать, чтобы их можно было масштабировать процедурно.
iL5b6OO.gif

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Тут получается все не так уж и сложно.

 

Когда человек попадает в комнату (назовём её печенька) генерируются двери и маршрут. Одна из дверей ведёт в другую комнату (в рандомную комнату), все остальные двигают человечка по комнате "печеньке".

 

ТипаКод:

когда(человек попал в комнату) {
  пока(не вышел) {
    когда(открыл дверь /* любую */) {
      маршрут = рандомныйПуть();
      идтиВ(маршрут);
    }
  }
}
Изменено пользователем LeshaInc

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Тут получается все не так уж и сложно.

 

Когда человек попадает в комнату (назовём её печенька) генерируются двери и маршрут. Одна из дверей ведёт в другую комнату (в рандомную комнату), все остальные двигают человечка по комнате "печеньке".

 

Но ещё круче, сделать а-ля Квантовую Суперпозицию. B-) Пока человек не откроет дверь, маршрут будет не определён, и будет постоянно, в цикле изменяться.

 

Вообще-то маршрут вычисляется на основе пройденных комнат, а неопределенность это обычный рандом, поэтому лучше с правилами.

В qCraft веселый юмор с неопределенностью - свойства объекта зависят от точки зрения, такое можно на дебаг-плате провернуть.

Изменено пользователем Doob

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Можно вставлять текущее время в сид генератора путя. :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

 

 

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

Вот я бы в это поиграл) 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Присоединяйтесь к обсуждению

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

Гость
Ответить в тему...

×   Вы вставили отформатированное содержимое.   Удалить форматирование

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.


×
×
  • Создать...