Как хранить экранные объекты для двухмерной игры с прокруткой? - PullRequest
1 голос
/ 28 ноября 2010

Я пытаюсь найти лучший способ хранения объектов карты в двухмерной игре с прокруткой.

Например, в игре Doodle Jump, как платформы, на которых вы прыгаете, сохраняются?

У меня было несколько мыслей о том, как это возможно сделать.

Хранятся ли платформы в виде строки или другого объекта, определяющего, где будет размещаться каждая платформа?Например, если бы я определил строку, например, 0,10,5,8,6,2,3,4,2, ..... и т. Д., Я мог бы интерпретировать их как x-координаты каждого игрового элемента в игре.,Я предполагаю, что проблема в том, что это может быть ОЧЕНЬ МНОГО игровых фигур, которые можно определить.Игра кажется бесконечной, поэтому предопределение карты кажется плохой идеей.

Я также подумал, что, возможно, фигуры просто случайны.Поэтому всякий раз, когда карта требует нового фрагмента карты, она случайным образом получает X-координату.Я думал, что это кажется вполне осуществимым, но при игре в DoodleJump не кажется, что все они случайные.

Кто-нибудь имеет представление о том, как эти объекты карты могут быть сохранены, чтобы привести меня в правильном направлении?

Спасибо!

Ответы [ 3 ]

1 голос
/ 29 ноября 2010

Я думаю, массив из инкрементных координат высоты и их соответствующих координат ширины (массив 1d или 2d). Инкрементальный из-за того, что координаты не доходят до больших.
Вы можете использовать размер экрана, чтобы знать, для каких платформ рассчитать координаты экрана. Когда прыгающий объект достигает определенного порога высоты экрана, сдвиньте камеру вместе с ним, рассчитав новые координаты экрана, исключив платформы, которые выпадают из экрана, и добавив платформы, которые находятся в поле зрения.

Вы можете заранее сгенерировать массив, используя алгоритм с некоторой случайностью с ограничением min / max на координатное расстояние. Я полагаю, что при использовании int вы можете создать довольно большой массив, прежде чем начнутся проблемы.
Или сгенерируйте его в реальном времени, используя один и тот же начальный элемент для случайной функции, чтобы он каждый раз генерировал один и тот же массив, и вы можете продолжать работать бесконечно

0 голосов
/ 03 декабря 2010

Многие платформенные игры хранят статические карты (то есть части карты, которыми нельзя манипулировать / уничтожать - например, плитки пола в Mario Bros.) как любую предопределенную карту. Это можно сделать с помощью массива значений или изображения в альфа-карте.

Если вы используете метод массива, используйте байты (unsigned char) вместо int.

0 голосов
/ 29 ноября 2010

Вы можете использовать генератор случайных чисел с фиксированным начальным числом для каждого уровня, чтобы пользователи каждый раз получали один и тот же уровень.Случайные числа можно выбирать из массива соответствующих значений.(Я успешно использовал это в игре для Android.)

...