Это звучит как слишком конкретная необходимость быть предметом урока, если честно.Я играл в Canabalt, но не в iCopter, поэтому я расскажу об игре, подобной предыдущей.
Существуют всевозможные уравнения исчисления, которые вы можете использовать для расчета ускорения и гравитации, чтобы точно определить, где будет платформабыть для того, чтобы быть достижимым, но я подозреваю, что вы будете делать то же самое с более простым приближением.Если все ваши платформы имеют минимальную длину, вы можете сделать предположение о скорости, на которую разумно рассчитывать, что игрок сможет достичь к тому времени, как он доберется до конца.Это, в сочетании с тем, насколько долго ваш алгоритм прыжка удерживает кого-то в воздухе, определяет максимальное расстояние, на которое другая платформа такой же высоты могла бы быть и все еще достижима.
Обычно наивысшая платформа, которую вы можете достичь, определяетсяпо вашему алгоритму прыжка - это может быть постоянная высота, или она может быть пропорциональна скорости, но в любом случае вы можете легко оценить самый высокий разумный прыжок, который вы можете сделать в конце любой данной платформы.Это дает вам максимальную относительную высоту, которую вы можете достичь оттуда.
Предполагая, что ваша физика довольно реалистична, и вы применяете постоянную нисходящую силу, пока игрок находится в воздухе, вершина прыжка будет околона полпути.Таким образом, платформа, которая является максимально достижимой высотой относительно игрока, должна быть вдвое меньше, чем платформа на том же уровне.И чтобы найти разумные комбинации относительной высоты и расстояния между ними, вы можете линейно интерполировать.
Платформы ниже вас, очевидно, более мягкие - они могут быть дальше, чем на одном уровне, опять же на расстоянии, приблизительно пропорциональномскорость, с которой вы путешествуете.
Тогда простым алгоритмом было бы выбрать на каждом этапе либо более высокую, либо более низкую платформу, выбрать относительную высоту в пределах достижимых границ, а затем найти расстояние, необходимое для этого.быть в.
Чтобы настроить сложность, вы можете начать с приведенных выше относительных значений высоты и расстояния, которые представляют крайние значения того, что возможно, и уменьшить их на пропорции, чтобы облегчить выполнение прыжков.Я мог бы начать с 50% сокращений, +/- 10% (в случайном порядке), чтобы обеспечить несколько более жестких прыжков.Затем, по ходу игры, я постепенно увеличивал это значение на 50% до 0, поэтому у игрока все меньше и меньше погрешностей.
РЕДАКТИРОВАТЬ: Поскольку я опубликовал этот ответ, я нашел еще один интересный источник, который может быть полезен: Вероятностный многопроходный генератор уровней .Хотя рассматриваемая игра отличается (одна из игр Mario, которую я не признаю), многие принципы схожи с точки зрения размещения платформ на разумных высотах и расстояниях.Предоставляется код Java.