Как создать игру с боковым скроллером? - PullRequest
4 голосов
/ 16 ноября 2009

Я хочу создать игру, в которой пользователь может перейти к самой правой части экрана, и если они пойдут дальше, они перейдут в новый вид.

Таким образом, в основном, если у них есть 3 монстра, преследующих их на экране № 1, и они идут вправо и продолжают идти, они войдут в экран № 2, где будут 5 новых монстров и новый ландшафт. 1003 *

Когда игра начнется, я должен сразу инициализировать всех NPC-монстров и особенности ландшафта для каждого экрана, или я должен инициализировать каждый экран при его входе? И каков наилучший формат / способ хранения того, что входит в каждый экран?

1 Ответ

9 голосов
/ 16 ноября 2009

Должен ли я немедленно инициализировать всех NPC-монстров и особенности ландшафта для каждого экрана

Вы можете, конечно, ничто не мешает вам сделать это:

Однако это зависит от того, насколько велики ваши уровни, а также от компромисса между временем загрузки и лагами во время игры (например, при загрузке следующего экрана).

Я бы предложил следующее:

Первый: темы

Создайте два потока, которые работают одновременно, один, отвечающий за фактический игровой процесс, и другой, чья единственная ответственность заключается в загрузке новой местности. Поток gameplay является основным и запускает поток loader для загрузки новых данных о местности, когда игрок переходит к следующему экрану.

Второе: уменьшение лагов между одной местностью и другой

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

Это также хорошо согласуется с вашим требованием, чтобы монстры-NPC на одной территории могли «следовать» за вами на следующую территорию (если вы их не убили); с оговоркой, что если игрок проходит через два экрана подряд без монстров NPC, проходящих через один, они не смогут следовать за вами дальше; это то, сколько боковых скроллеров, в которые я играл, все равно работают.

Также обратите внимание, что это означает, что когда вы начнете уровень, вам придется загружать 2 или 3 ландшафта одновременно (в зависимости от того, начинаете ли вы с края или в середине уровня), но впоследствии вы будете нужно загружать только одну местность за раз, потому что все, что вам нужно сделать, это поменять местами текущую и соседнюю каждый раз, когда игрок продвигается к следующей местности

Каков наилучший формат / способ хранения того, что входит в каждый экран?

Serialize

Учитывая, что выбранной вами платформой является Java, я бы сказал, что наиболее эффективный способ сохранения данных уровня - это сериализация. Создайте классы, в которых хранится информация об уровнях и объекте, в интерфейсе Serializable.

Если вы выберете эту опцию, то при первом создании уровней вам придется либо создать специальные методы для жесткого кодирования инициализации каждого уровня, а затем сериализовать их перед загрузкой игры; или вам придется создать редактор уровней.

XML

Эта опция значительно увеличивает время загрузки по сравнению с десериализацией объектов, но она более надежна, и ее очень легко вносить изменения. Это, вероятно, лучший вариант, если ваши уровни не очень сложны.

На самом деле, ничто не мешает вам сделать комбинацию обоих.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...