Doob 2 749 Опубликовано: 4 июля, 2015 Как-то ковыряясь с комблоком я вспомнил фильм "Cube", начал делать алгоритм пермутаций, попутно пытаясь сделать переброс пространства через время и наоборот, потом энтузиазм затух. Потом пытался сделать мини-игру, где кубы тессеракта спроецированы в 2d шестиугольники, игрокам надо было бегать по пространству заполненному тессерактами, и по определенным правилам линковать кубы удаленные друг от друга на огромные расстояния, так же была идея сделать полноценную игру-песочницу, с бесконечным фрактальным миром, где можно сокращать расстояния преобразовывая время в пространство. Но, так как во все это никто играть не будет, то даже и не пытался сделать что-либо внятное. В minecraft, при помощи комблока, можно сделать что угодно, но все упирается ресурсы сервера. Суть лабиринта в том, что игрок бегает не по коридорам, а по комнатам с несколькими дверьми, и зайдя в определенной последовательности в определенные двери, игрок перемещается в недоступные обычными переходами места. Весь лабиринт хранится в памяти, а новые комнаты подгружаются и материализуются, когда игрок совершает переход, старые комнаты исчезают и в мире постоянно остаются только 6 кубов вокруг комнаты, в которой находится игрок и комнаты, в которые можно попасть задействовав гиперсвязь. Но я никак не мог придумать нормальный алгоритм генерации связей гиперпереходов, рандом не может создавать достаточно осмысленный лабиринт, необходима какая-то формула, в математике я - дуб... как-то пытался разобраться с кватернионами, чтобы сделать кубик Рубика, даже не понял магию выражения векторов через мнимые единицы. 4 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
ShuraGamer 25 Опубликовано: 4 июля, 2015 А можно тоже самое, но для "дубов"? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Doob Автор темы 2 749 Опубликовано: 4 июля, 2015 (изменено) А можно тоже самое, но для "дубов"? Появляешься в комнате [1] с четырьмя дверьми, идешь в первую попавшуюся - оказываешься в комнате [3] с кучей зомбей, бежишь назад - оказываешься в комнате [17]. В комнате [17] стоит печка, верстак и табличка, на табличке надпись "Ты всегда можешь вернуться сюда, войдя в ту же дверь, из которой вышел". Идешь в первую попавшуюся дверь - попадаешь в комнату [109], она пустая, идешь в первую попавшуюся дверь - попадешь в комнату [108], там растет дерево со стволом из коблы и "листвой" из досок. Ну и в таком духе... Изменено 4 июля, 2015 пользователем Doob Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
ShuraGamer 25 Опубликовано: 4 июля, 2015 Появляешься в комнате [1] с четырьмя дверьми, идешь в первую попавшуюся - оказываешься в комнате [3] с кучей зомбей, бежишь назад - оказываешься в комнате [17]. В комнате [17] стоит печка, верстак и табличка, на табличке надпись "Ты всегда можешь вернуться сюда войдя в ту же дверь, из которой вышел". Идешь в первую попавшуюся дверь - попадаешь в комнату [109], она пустая, идешь в первую попавшуюся дверь - попадешь в комнату [108], там растет дерево со стволом из коблы и "литвой" из досок. Ну и в таком духе... Я правильно понял, для каждой двери правила генерируются случайным образом? Кстати, ты в The Talos Principle играл? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Doob Автор темы 2 749 Опубликовано: 4 июля, 2015 Я правильно понял, для каждой двери правила генерируются случайным образом? Кстати, ты в The Talos Principle играл? Не совсем случайно, по системе, игрок определивший систему связей становится могущественней, но правила генерируются бесконечно, так что возможности не ограничены, а если лабиринт пятимерный, то игроки изучающие лабиринт становятся богами, потому что они могут управлять конфигурацией комнат в которых они побывали. В The Talos Principle не играл, играл в Antichamber - там связи жестко зафиксированы и решить задачу можно просто рандомно бегая в разные двери. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
ShuraGamer 25 Опубликовано: 4 июля, 2015 Допустим, в вышеописанной ситуации алгоритм один: беги в рандомные двери, вернуться все равно не сможешь Не совсем случайно, по системе, игрок определивший систему связей становится могущественней, но правила генерируются бесконечно, так что возможности не ограничены, а если лабиринт пятимерный, то игроки изучающие лабиринт становятся богами, потому что они могут управлять конфигурацией комнат в которых они побывали. В The Talos Principle не играл, играл в Antichamber - там связи жестко зафиксированы и решить задачу можно просто рандомно бегая в разные двери. Погоди ты с пятимерными лабиринтами-мы еще с четвертым измерением не разобрались) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Doob Автор темы 2 749 Опубликовано: 4 июля, 2015 Допустим, в вышеописанной ситуации алгоритм один: беги в рандомные двери, вернуться все равно не сможешь Ну это если связи совсем случайные. Тогда это не лабиринт, а пытка рандомом. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
ShuraGamer 25 Опубликовано: 4 июля, 2015 Ну это если связи совсем случайные. Тогда это не лабиринт, а пытка рандомом.Хорошую головоломку намного сложнее создать, чем пройти 1 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Quant 442 Опубликовано: 5 июля, 2015 Хорошую головоломку намного сложнее создать, чем пройти Причем при создании головоломки придётся проходить,что ещё дольше. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
ShuraGamer 25 Опубликовано: 5 июля, 2015 А вообще, идея интересная. Если нужна будет помощь-пиши Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Zer0Galaxy 2 187 Опубликовано: 5 июля, 2015 А если в лабиринт войдут два игрока? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Doob Автор темы 2 749 Опубликовано: 5 июля, 2015 А если в лабиринт войдут два игрока? Ну вся фишка в том, что система должна обрабатывать каждого игрока индивидуально и всех вместе. Внешне это будет выглядеть как висящие в пустоте ячейки для каждого игрока, когда один игрок переходит в комнату рядом с другим игроком, то его ячейка удаляется и подгружается к уже существующей. Если игрок покидает общую ячейку, то для него создается новая. Находясь внутри, переходы не заметны, т.к. переход совершается в заранее созданную комнату и при телепортации полностью сохраняется положение игрока. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
ShuraGamer 25 Опубликовано: 5 июля, 2015 Ну вся фишка в том, что система должна обрабатывать каждого игрока индивидуально и всех вместе. Внешне это будет выглядеть как висящие в пустоте ячейки для каждого игрока, когда один игрок переходит в комнату рядом с другим игроком, то его ячейка удаляется и подгружается к уже существующей. Если игрок покидает общую ячейку, то для него создается новая. Находясь внутри, переходы не заметны, т.к. переход совершается в заранее созданную комнату и при телепортации полностью сохраняется положение игрока. Но это все тоже мозговыламывание, только в квадрате Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Doob Автор темы 2 749 Опубликовано: 6 июля, 2015 (изменено) Но это все тоже мозговыламывание, только в квадрате Вообще-то в кубе)) Изначально, я сделал по фильму Cube - 18х18х18 комнат, при переходе из одной комнаты в другую, дальние комнаты выгружались, новые появлялись, без всяких смещений и телепортаций. Но все делалось при помощи комблока - каждый блок приходилось ставить отдельно, комп на циклах без слипов подвисал, вылетал, крашил майн. В OpenComputers же, создать базовую комнату можно двумя командами setBlocks (в MC1.8 лучше задействовать стандартные fill и clone) Самое сложное это алгоритм генерации, тут у меня просто нет идей, только смена маршрутов по таймеру и предыдущим переходам. P.S. Как вариант - виртуальное пространство заполненное тессерактами, но это слишком примитивно. Изменено 6 июля, 2015 пользователем Doob 2 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Doob Автор темы 2 749 Опубликовано: 15 июля, 2015 Хотя, кроме тессерактов мне ничего не приходит в голову.Вот например возможные правила:Вся система в цикле меняет состояние по таймеру.1. Состояние системы "запертые ячейки" - все тессеракты запираются, т.е. невозможно перемещаться между соседними просто пройдя через дверь. Если игрок идет через внешнюю дверь - его перекидывает в этом же тессеракте в куб расположенный напротив того куба из которого он попытался выйти. Побегав, игрок находит правило перехода из запертого тессеракта (например пробежав через все "внешние" кубы по одному разу, а в одном побывав два раза, игрок может перебросить себя в соседний тессеракт зайдя в правильную дверь) 2. Состояние системы - "сдвиг кубов"Т.к. для упрощения используются "стабилизированные" тессеракты - одновременно в трехмерное пространство проецируются только 7 кубов (восьмой смещен в подпространство)Во время сдвига кубов один куб уходит на место восьмого, а восьмой сдвигает остальные кубы, если игрок находится в смещаемом кубе, то его выбрасывает через n тессерактов в направлении смещенного куба в ближайший к исходному куб. 3. Состояние системы - "гиперсаязи"В это состоянии внешние двери связываются не с ближними тессерактами, а с дальними, через несколько штук (дальность связи меняется после каждого цикла системы в виде синусоиды)Внутренние же двери тоже перебрасывают через несколько кубов, но внутри исходного тессерката. Таких правил можно наплодить тысячами, но надо систематизировать, чтобы их можно было масштабировать процедурно. 3 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Lgmrszd 390 Опубликовано: 15 июля, 2015 Мне тоже отсыпь дури. Может, пойму тогда. 1 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
LeshaInc 625 Опубликовано: 15 июля, 2015 (изменено) Тут получается все не так уж и сложно. Когда человек попадает в комнату (назовём её печенька) генерируются двери и маршрут. Одна из дверей ведёт в другую комнату (в рандомную комнату), все остальные двигают человечка по комнате "печеньке". ТипаКод: когда(человек попал в комнату) { пока(не вышел) { когда(открыл дверь /* любую */) { маршрут = рандомныйПуть(); идтиВ(маршрут); } } } Изменено 15 июля, 2015 пользователем LeshaInc Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Doob Автор темы 2 749 Опубликовано: 15 июля, 2015 (изменено) Тут получается все не так уж и сложно. Когда человек попадает в комнату (назовём её печенька) генерируются двери и маршрут. Одна из дверей ведёт в другую комнату (в рандомную комнату), все остальные двигают человечка по комнате "печеньке". Но ещё круче, сделать а-ля Квантовую Суперпозицию. Пока человек не откроет дверь, маршрут будет не определён, и будет постоянно, в цикле изменяться. Вообще-то маршрут вычисляется на основе пройденных комнат, а неопределенность это обычный рандом, поэтому лучше с правилами. В qCraft веселый юмор с неопределенностью - свойства объекта зависят от точки зрения, такое можно на дебаг-плате провернуть. Изменено 15 июля, 2015 пользователем Doob Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
LeshaInc 625 Опубликовано: 15 июля, 2015 Можно вставлять текущее время в сид генератора путя. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
SergOmarov 34 Опубликовано: 16 июля, 2015 Но, так как во все это никто играть не будет, то даже и не пытался сделать что-либо внятное. Вот я бы в это поиграл) 1 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах