Я думаю, что вы идете об этом неправильно. Максимальный путь в графе с циклами технически не определен, потому что он бесконечен, если цикл лежит между началом и концом. Вероятно, есть умные способы расширить / ограничить определение максимального пути, но я не думаю, что это лучший подход здесь.
Вы не пытаетесь смоделировать реальный длинный путь (например, робот пытается исследовать как можно больше областей на карте). Вы просто пытаетесь заставить игрока исследовать множество комнат.
Так что, дайте шанс игроку найти выход, пропорциональный проценту карты, которая была исследована до сих пор . Скажем, на уровне есть X комнат, и персонаж игрока исследовал Y. В следующий раз, когда персонаж войдет в комнату, разместите выход там с вероятностью f (Y, X). Тривиальным примером f может быть (Y * Y) / (X * X) - например, для 10 комнат 100% -ный шанс выхода в последнюю комнату, 81% -ый шанс, что он находится рядом с последней комнатой - и только 1% шанс, что это в первой комнате.
Вы можете настроить уравнение так, как вы хотите, чтобы игра выглядела правильно, и, возможно, даже дать игроку некоторые возможности, чтобы сделать его более вероятным. Ключевая часть: не генерируйте выход, пока персонаж действительно не войдет в комнату. Этот метод также невосприимчив к знаниям игрока об алгоритме генерации подземелий; даже если у игрока есть странные модели движения, такие как прыжок коня в NetHack или телепортация, ему придется исследовать больше комнат, чтобы найти выход.
Если вам нужно статически сгенерировать выход, вы можете использовать ту же идею с виртуальным персонажем. Представьте себе заливку, начинающуюся с позиции персонажа и перемещающуюся по одной ячейке на каждую итерацию. Последняя заполняемая комната - это комната, к которой относится выход (фактически последняя заполняемая ячейка - это ячейка, наиболее удаленная от игрока). Тем не менее, в этом случае у игрока есть больше информации о выходе - если они слева, скорее всего, справа - и если они могут телепортироваться, возможно, смогут добраться туда быстрее, чем обычная случайная прогулка.
Наконец, я только что закончил roguelike, где выход возник на другой стороне карты от персонажа игрока, а затем случайно забрел. Некоторые предметы в подземелье сделали его видимым на карте, за счет быстрого голода. Я не проводил никакого анализа, но определенно чувствовалось, что мне нужно изучить больше карты, чтобы найти ее, и это дало уровням уникальное ощущение.