Звучит так, как будто вы хотите получить 2D-эквивалент карты высот. Я бы не стал делать истинную «кривую» и просто приближал бы ее с отрезками.
Таким образом, в основном у вас будет массив или список чисел, которые представляют высоту вашего ландшафта в ряду равномерно распределенных (по горизонтали) точек. Когда вам нужна высота между двумя точками, вы просто линейно интерполируете между ними.
Чтобы сгенерировать его - вы можете установить несколько точек случайным образом, а затем выполнить некоторую форму плавной интерполяции, чтобы задать остальные. (Это действительно зависит от того, какую кривую вы хотите.)
Чтобы отобразить его , вы можете просто использовать треугольную полосу. С каждой точкой на карте высот будут связаны две вершины - одна в нижней части экрана, а другая - на высоте этой точки на карте высот.
Для обнаружения столкновений - самый простой способ состоит в том, чтобы ваши объекты были одной точкой (звучит так, как будто вы делаете артиллерийскую игру, такую как Scorched Earth) - просто займите положение X вашего объекта , получите положение Y вашего ландшафта в этом положении X, если положение Y вашего объекта ниже ландшафта, установите его так, чтобы оно было на поверхности ландшафта.
Во всяком случае, это грубое руководство:)