Здравствуйте, Нomunculus, Вы писали:
Н>Ну игра про некую сборку лабиринта, с лабиринте находится главный герой и враги и от этого уровня хаоса зависит агрессивность врагов и здоровье главного героя. То есть чем хаотичнее лабиринт тем фиговее; и можно пройти лабиринт спокойно, если он собран нормально.
Мне кажется, строго вычислять меру хаоса не получится. Придется эвристически и органолептически.
Можно сесть и спокойно расписать, от чего зависит сложность прохождения для игрока как объективно, так и психологически: количество фишек в лабиринте (размер лабиринта), количество необходимых перестановок фишек для сборки лабиринта, количество врагов и препятсивй, ограничения для игрока, если они есть (например, ограниченное число ходов) итд. Для вычисления сложности можно сложить эти величины, нормированные, с весовым коэфициентом для каждой. В результате в любой момент можем вычислить меру сложности. Поделив ее текущую величину на величину, которая была в начале уровня, получим что-то вроде коэффициента хаоса в данный момент.
Это примерно. Если у игры будет статистика по реальному поведению пользователей, можно уточнить коэффициенты и сами формулы.
Мне пришлось усидчиво поиграть в андроидные игры-миллионники. Сложилось впечатление, что там подобные задачи нормально не решены, например, сложность уровня предсказывается плохо. Это еще очень трудно решить, потому что для одного игрока сложным будет одно, для другого — совсем другое, также у каждого будут свои излюбленные шаблоны прохождения. Полдучается, надо заниматься кластеризацией пользователей, и тут уже начинается вакханалия "псевдоматематики". Большая контора на 1000 работников и миллион пользователей может посадить на это пару своих черепастых "квантов" с непонятным выхлопом в результате, а разработчикам поменьше надо не усложнять себе жизнь. Если геймплей, графика, анимаиция хорошие (адекватные), то игроки всё простят.
п.с.
А ты спрашивал вопрос на gamedev, dtf или что сейчас есть?
Есть игровой уровень головоломки. Для примера рассмотрим три игры — паззлы, пятнашки и кубик Рубика.
Необходимо ввести некий коэффициент 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>Нельзя. Ну, ты понимаешь, что в "пятнашке" все фишки, кроме одной, могут лежать на своих местах, а ситуация при этом может быть сложной и далекой до решения. Примерно то же для Рубика.
Да. Не подумал. Этот пример ломает второй и третий вариант.
Если есть некая общепринятая стратегия сборки (для кубика рубика такая есть), то можно взять разновидность варианта 1, но считать не оптимальное число шагов для сборки, а число шагов для сборки по этой стратегии. В общем случае оно будет не оптимальным, но для игрока более понятным и вычислять его тоже понятно, как.