Перейти к публикации
Форум - ComputerCraft
Doob

[Идея] Многомерный лабиринт

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

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

 

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

 

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

 

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

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

 

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

  • Like 4

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


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

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

 

Появляешься в комнате [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 - там связи жестко зафиксированы и решить задачу можно просто рандомно бегая в разные двери.

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

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


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

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

 

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

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


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

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

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

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


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

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

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

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


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

А вообще, идея интересная. Если нужна будет помощь-пиши

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


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

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

 

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

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

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

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


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

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

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

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

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

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


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

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

 

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

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

 

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

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

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


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

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

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

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

  • Like 3

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


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

Мне тоже отсыпь дури. Может, пойму тогда.

  • Like 1

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


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

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

 

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

 

ТипаКод:

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

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


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

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

 

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

 

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

 

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

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

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

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


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

 

 

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

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

  • Like 1

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


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

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

Каждая комната пронумерована.

 

Предлагаю так осуществить головоломку:

Над выходами, на табличках написаны номера комнаты, в которые мы можем телепортится.

Например дверей 4 в комнате. Над каждой табличка в какую комнату мы телепортнёмся.

Каждая дверь имеет свою формулу. При телепортации в новую комнату положение дверей изменяется, но не изменяется их формула.

Задача игрока - понять по какой формуле работают двери. Сделать так, чтобы оказать в комнате номер 1.

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

 

Пример:

Комната с 4 дверьми. Мы в 8 комнате.

1 дверь умножает текущий номер на 2. Другая делит его на 2. То есть мы получаем рандомную формулу (сложнее естественно) и создаём ей дверь с обратной формулой, чтобы дать шанс отката. (так мы дадим себе 100% шанс, что мы сможем вернуться в исходную точку) И так со всеми остальными дверьми.

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

 

Как будет выглядеть глазами игрока:

То есть во время игры мы сначала определяем формулы, по которым работают двери.

Потом находим их, так как они меняют своё расположение при каждом переходе.

Рассчитываем по каким путям нам прийти в комнату номер 1 и идём к цели.

 

Как рассчитать конкретный стартовый номер комнаты:

Взять номер цели - в данном случае мы берём 1 комнату. Проводим 5 раз через формулы, которые уже определили для дверей случайным образом. Всё! У нас есть 100% шанс что данную игру реально пройти!  Причём случайно выйти из головоломки шанс очень низок.

 

Как будет выглядеть в майнкрафте:

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

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

 

Можно было бы такое на сервер поставить.

 

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

Изменено пользователем Fingercomp
Технизм

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


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

Мой план работает всего на одном логическом принципе:

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

 

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

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

 

В жизни, этот принцип можно наблюдать на примере Кубика Рубика:

Как не запутывай его, со 100% шансом его реально собрать в первоначальное состояние. Любой кубик, даже не классический. Даже 11x11x11. От его формы ничего не зависит.

Но стоит лишь разобрать Кубик Рубика и повернуть 1 уголок, как он станет абсолютно не собираемым. Его нельзя будет вернуть в то состояние, в котором он не был и не может быть.

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

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


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

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

 

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

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


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

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

 

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

Думать мозгом а не тупо копать золотишко, да алмазы!

  • Like 1

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


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

 

Просто Дуб хочет по фану сделать подобие того что было в фильме "Cube":

 

Как-то ковыряясь с комблоком я вспомнил фильм "Cube"

 

Чтобы избежать однотипности и скуки можно сделать так:

Если игрок проходит в новую комнату, то создаётся ячейка в массиве cube и случайны её интерьер из уже подготовленных. (возможно ловушки разнообразные, если число простое например). Далее если игрок попадёт в комнату с таким же номером, то она не будет снова генерироваться, а будет браться из массива.

Можно закинуть в массив случайный цвет куба, сделать как и в фильме полностью кубические комнаты из однотонных цветных блоков, сделать 6 выходов.

 

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

 

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

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

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

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

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


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

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

 

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

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

Вот идея ещё похожая: http://computercraft.ru/topic/1326-labirint-na-oc/, заметил.

 

Ключевое тут то, что никто не будет строить это (99%).

  • Like 1

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


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

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

Вот идея ещё похожая: http://computercraft.ru/topic/1326-labirint-na-oc/, заметил.

 

Ключевое тут то, что никто не будет строить это (99%).

 

Вот именно. Беготня по тессерактам какая-то. Зачем вообще эти "тессеракты" тогда нужны и какой-то сетинг непонятных комнаток, который нам скорее всего сервак завалит?

 

Ведь если они однотипные с 4-мя дверками, или сколько они там  их хотят впендюрить, то не проще ли, и как следствие, вообще их не спавнить, а сделать одну ссаную комнатку и на монитор принтить или в чат сендить в личку, мол вы в 158-й комнатке, если игрок там чего-то потыкал куда-то, потом, мол вы в 499-й комнатке, так ведь?  Разницы то нет никакой и игрок даже не поймет, тепешится ли он реально, или это только иллюзия :giggle:   

 

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

"А за окном" просто куст сирени спавнить разный, чтобы было, как в ДМБ - иллюзия движения на поезде домой, как дембель там на кровати "ехал", а духи с ветками носились :D ( в нашем случае менять шерсть на полу, цвет то есть, то есть сетить пол 5 на 5 другой шерстью при "перемещении" по комнаткам)

 

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

 

А самое главное - ведь если там приват, то как они собрались там открывать дверки и кнопки какие-то??? А если привата нет, то я и с помощью кирки лабиринт пройду быстренько. Да и сетиться КБ-шкой же дверки и кнопки будут сикось-накось раком на ушах как попало, дверки же боком как-то впендюрятся, а кнопки будут в воздухе летать с факелами вместе, если их сетить КБ-шкой, так ведь?  

 

А это же еще нужно как-то "украшать" ловушками и спавнить КБ-шки с командами и прочее прочее.  Как это вообще будет работать и в чем соль замысла спавнящихся комнаток, ума не приложу пока. Как-то тоскливо это все и гемОрно в реализации, как по мне.

 


 

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

 

Лабиринт этот сделать в отдельном скай-ленд мире, при ТП туда скрипт чистит инвентарь и выдает минимум каких-то предметов. Консольный доступ в эндер-чест заблочен. "Бегунов" может быть сколько угодно одновременно.

 

Лабиринт живет своей жизнью и почти не зависит от действий игрока (имеется ввиду главный механизм открытия и закрытия ключевых проходов в стенах, глобальных ТП, сброса, чистки игроков недобежавших, то есть оттепешило их в начало лабиринта или убило и т.д.). Вход в главные ворота лабиринта только в определенное время суток по времени, никакие транслокаторы там не работают, кастомный спавн мобов, кастомные ловушки, все как в фильме "Бегущий в лабиринте".  Мелкие же препятствия и головоломки или ловушки уже требуют действий игрока для их решения и обхода, начиная от паркура и заканчивая поршнями, воронками, лавой и компами.

 

Та тема, которая в урле указана - это совсем другой компот и она совершенно никак не связана с "Кубом" и спавном одинаковых комнаток  и с данной темой, кроме общего слова "лабиринт".

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


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

 

 

Ключевое тут то, что никто не будет строить это (99%)
 

Строить может не кто и не будет, но всё же на комп такую игрушку я сделаю.

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


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

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

Если накидают идей с ловушками, то остается их реализовать и создать мирок для лабиринта.

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


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

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас

×