Есть игровой уровень головоломки. Для примера рассмотрим три игры — паззлы, пятнашки и кубик Рубика.
Необходимо ввести некий коэффициент float для уровня, который от 0 до 1.
0 — это головоломка собрана.
1 — а вот с 1 непонятно. По идее это некий максимально удаленный от собранного состояния шаг. Но непонятно как в кубике Рубика это может быть?
Ну, замнем пока с 1.
Что может быть таким коэффициентом?
Придумалось несколько вариантов. Но в любом из них какая-то из этих трех головоломок будет давать не то.
1) количество шагов до сборки (нормализованное). Но у головоломки может быть несколько путей сборки и не понятно по какому считать? Например у игрока текущий уровень хаоса — 0.3. Он сделал ход. По одному варианту сборки от отошел от идеала, а по другому — приблизился. И не понятно — увеличивать уровень хаоса или нет
2) колическтво деталек на своих местах. Ну если с пятнашками и пазлами тут понятно, то вот с кубиком Рубика не понятно, что значит что деталька на «своем месте»?
3) некие связи между соседними детальками. То есть для каждой детальки сосчитать с какими она соседствует в соьранном виде и уже от этого отходить при подсчете уровня хаоса текущего положения. Тут вроде все три головоломки будут давать однозначные результаты.
Здравствуйте, Нomunculus, Вы писали:
Н>1 — а вот с 1 непонятно. По идее это некий максимально удаленный от собранного состояния шаг. Но непонятно как в кубике Рубика это может быть?
У кубика Рубика вроде доказано, что его можно собрать из любой позиции за 20 шагов, . Следовательно, когда нужно 20 шагов, то будет — 1.
Ну минус этого подхода в том, что надо рассчитывать каждый раз путь до сборки. Хотелось этого избежать. Уровень сам в себе должен содержать этот уровень хаоса без относительно способа сборки
Здравствуйте, Нomunculus, Вы писали:
Н>Здравствуйте, cserg, Вы писали:
Н>Ну минус этого подхода в том, что надо рассчитывать каждый раз путь до сборки. Хотелось этого избежать. Уровень сам в себе должен содержать этот уровень хаоса без относительно способа сборки
по-моему довольно очевидно, что этот уровень будет в какой-то степени эквивалентен количеству шагов до полной сборки.
Столкнулся с геймдевом, головоломкой и немного похожей задачкой. Требовалось вычислять сложность уровня. Похоже, без натягивания совы на глобус не решается, требуются высасывания из пальца некие эвристики.
Если про "мою" задачку, подозреваю, что большие фирмы с кучей реалтайм статистики и могут вытаскивать сложность из статистики напрямую. Либо по нериалтаймовой строить некие эмпирические формулы, системы уравнений и типа через аппроксимацию.
Ты не написал, зачем тебе этот уровень хаоса, поэтому остается фантазировать.
Н>1) количество шагов до сборки (нормализованное). Но у головоломки может быть несколько путей сборки и не понятно по какому считать? Например у игрока текущий уровень хаоса — 0.3. Он сделал ход. По одному варианту сборки от отошел от идеала, а по другому — приблизился. И не понятно — увеличивать уровень хаоса или нет
Вычисляешь количество ходов до выигрыша на старте уровня. После каждого шага пользователя вычисляешь текушее количество шагов до выигрыша и делишь на стартовую величину.
Н>2) колическтво деталек на своих местах. Ну если с пятнашками и пазлами тут понятно, то вот с кубиком Рубика не понятно, что значит что деталька на «своем месте»?
Нельзя. Ну, ты понимаешь, что в "пятнашке" все фишки, кроме одной, могут лежать на своих местах, а ситуация при этом может быть сложной и далекой до решения. Примерно то же для Рубика.
Н>3) некие связи между соседними детальками. То есть для каждой детальки сосчитать с какими она соседствует в соьранном виде и уже от этого отходить при подсчете уровня хаоса текущего положения. Тут вроде все три головоломки будут давать однозначные результаты.
Не понял.
Н>Может еще что-то вам в голову придет? Как лучше?
Лучше понимать, для чего это, и исходить из реальных возможностей.
Здравствуйте, goto, Вы писали:
G>Ты не написал, зачем тебе этот уровень хаоса, поэтому остается фантазировать.
Ну игра про некую сборку лабиринта, с лабиринте находится главный герой и враги и от этого уровня хаоса зависит агрессивность врагов и здоровье главного героя. То есть чем хаотичнее лабиринт тем фиговее; и можно пройти лабиринт спокойно, если он собран нормально.
G>Нельзя. Ну, ты понимаешь, что в "пятнашке" все фишки, кроме одной, могут лежать на своих местах, а ситуация при этом может быть сложной и далекой до решения. Примерно то же для Рубика.
Да. Не подумал. Этот пример ломает второй и третий вариант.
Здравствуйте, Нomunculus, Вы писали:
Н>Ну игра про некую сборку лабиринта, с лабиринте находится главный герой и враги и от этого уровня хаоса зависит агрессивность врагов и здоровье главного героя. То есть чем хаотичнее лабиринт тем фиговее; и можно пройти лабиринт спокойно, если он собран нормально.
Мне кажется, строго вычислять меру хаоса не получится. Придется эвристически и органолептически.
Можно сесть и спокойно расписать, от чего зависит сложность прохождения для игрока как объективно, так и психологически: количество фишек в лабиринте (размер лабиринта), количество необходимых перестановок фишек для сборки лабиринта, количество врагов и препятсивй, ограничения для игрока, если они есть (например, ограниченное число ходов) итд. Для вычисления сложности можно сложить эти величины, нормированные, с весовым коэфициентом для каждой. В результате в любой момент можем вычислить меру сложности. Поделив ее текущую величину на величину, которая была в начале уровня, получим что-то вроде коэффициента хаоса в данный момент.
Это примерно. Если у игры будет статистика по реальному поведению пользователей, можно уточнить коэффициенты и сами формулы.
Мне пришлось усидчиво поиграть в андроидные игры-миллионники. Сложилось впечатление, что там подобные задачи нормально не решены, например, сложность уровня предсказывается плохо. Это еще очень трудно решить, потому что для одного игрока сложным будет одно, для другого — совсем другое, также у каждого будут свои излюбленные шаблоны прохождения. Полдучается, надо заниматься кластеризацией пользователей, и тут уже начинается вакханалия "псевдоматематики". Большая контора на 1000 работников и миллион пользователей может посадить на это пару своих черепастых "квантов" с непонятным выхлопом в результате, а разработчикам поменьше надо не усложнять себе жизнь. Если геймплей, графика, анимаиция хорошие (адекватные), то игроки всё простят.
п.с.
А ты спрашивал вопрос на gamedev, dtf или что сейчас есть?
Если есть некая общепринятая стратегия сборки (для кубика рубика такая есть), то можно взять разновидность варианта 1, но считать не оптимальное число шагов для сборки, а число шагов для сборки по этой стратегии. В общем случае оно будет не оптимальным, но для игрока более понятным и вычислять его тоже понятно, как.