Я думаю, що ти йдеш про це неправильним шляхом. Максимальний шлях у графіку з циклами технічно не визначений, оскільки це нескінченно, якщо цикл лежить між початком і кінцем. Ймовірно, є розумні способи розширення / обмеження визначення максимального шляху, але я не думаю, що це найкращий підхід тут.
Ви не намагаєтесь моделювати фактично довгий шлях (наприклад, робот, який намагається дослідити якомога більше області на карті). Ви просто намагаєтесь змусити гравця досліджувати багато кімнат.
Отже, зробіть шанс гравця знайти вихід пропорційним відсотковій частині досліджуваної карти досі . Скажімо, на рівні X є кімнати, і персонаж гравця досліджував Y. Наступного разу, коли персонаж заходить до кімнати, розмістіть вихід з ним з імовірністю f (Y, X). Тривіальним прикладом f може бути (Y * Y) / (X * X) - наприклад, для 10 номерів є 100% шанс виходу в останню кімнату, 81% шансів, що це буде в сусідній останній номер - і лише 1% шансів, що це в першій кімнаті.
Ви можете налаштувати рівняння, проте хочете, щоб гра відчувала себе правильно, і, можливо, навіть дати гравцеві певні здібності, щоб зробити його більш схильним. Ключова частина полягає в тому, щоб не створювати вихід, поки персонаж фактично не ввійде в кімнату. Цей метод також захищений від знань гравця про алгоритм генерації підземелля; навіть якщо у гравця є дивні моделі руху, такі як стрибок лицаря в NetHack або телепортація, їм доведеться вивчити більше кімнат, щоб знайти вихід.
Якщо вам потрібно статично генерувати вихід, ви можете використовувати ту саму ідею з віртуальним символом. Уявіть, що заливка заповнюється, починаючи з позиції персонажа, переміщаючись по одній комірці кожної ітерації. Остання кімната, яку потрібно заповнити, - це кімната, куди належить вихід (насправді, остання заповнена комірка - це клітина, де вона знаходиться найдалі від гравця). Однак у цьому випадку у гравця є більше інформації про вихід - якщо вони зліва, швидше за все, справа - і якщо вони зможуть телепортуватись, то, можливо, зможуть дістатися туди швидше, ніж звичайна випадкова прогулянка.
Нарешті, я щойно закінчив шахрайство, де вихід з іншого боку карти породжував персонажа гравця, а потім випадково блукав. Деякі предмети в підземеллі зробили це помітним на карті, за рахунок швидшого голодування. Я не робив жодного аналізу, але напевно відчувалося, що мені потрібно було вивчити більше карти, щоб знайти його, і це надало рівнів унікального відчуття.