Бесконечный мир: как реализовать?
У меня возникла идея создать оригинальную игру на АС3, но пока что не представляю, как это сделать. Нужно создать бесконечный мир, который будет генерироваться на ходу и удаляться сразу предыдущие генерации карты. Я впервые в геймдеве, проходил несколько туториалов по геймдеву для новичков, все понял, но это был простой Арканоид. Если не подскажите с генерацией карты, хоть подскажите - копать куда?
|
А что подсказывать-то? И так же все ясно. Перемещается персонаж. На основе его текущего положения высчитывается какой кусок мира вокруг него должен показываться. Все остальное убирается. Профит.
Какого-то универсального способа это сделать не существует. Все индивидуально. |
Нет, вы не поняли. Карта должна быть случайной и бесконечной.
Я так и не понял насчет создания массивов уровня. Меня особенно интересует этот момент. Ну, допустим, создам я массив уровня из различных цифр, обозначающих бонусы, но вот как превратить этот массив в сетку из мувиклипов - я так и не понял. Сам скопировал, но сколько не сидел, не мог понять работу. |
Вы видимо даже не пытались поискать статьи и литературу в интернете, хотя эта проблема решалась очень большое количество раз на всех возможных языках начиная с ассемблера
|
Цитата:
- Если уровень бесконечный - то массив из различных цифр будет бесконечным, а значит невозможным. Как вы его создали... Один из подходов: - Делим в уме бесконечное пространство на бесконечное число квадратных секторов (размером примерно с экран) - Храним в памяти, рисуем и строим только те сектора, которые попадают в экран - По координатам героя мы можем вычислить индексы сектора, в котором он стоит - Заводим список _видимых_ секторов, с которыми будем работать, в которых будем искать предметы - При появлении нового сектора на экране - заполняем его рандомными предметами с момощью _детерминированного_ рандом-генератора, инициализированного индексом сектора (чтобы сколько человек туда не приходил - сектор не менялся), добавляем его в список - Когда сектор уходит с экрана - убираем его из списка и с экрана предметы сносим. P.S. Скриншот того что пытаетесь реализовать сделайте - разговор предметнее будет |
К посту выше: используйте генераторы псевдослучайных чисел. Например: http://lab.polygonal.de/?p=162
|
Цитата:
Например, у одного из туториалов по платформеру такой код: Код AS3:
Это лишь кусок кода, создающий уровень. До меня трудно доходит чужой код(не знаю, у всех ли так поначалу было...), поэтому не могу понять, что он делает в деталях. |
Цитата:
Насколько я понял - там уровень представлен 1-мерным массивом, в который загнали построчно 2-мерный. row = i / lvlColumns - получается номер строки column = i - (row - 1) * lvlColumns - номер столбца Умножаем на размеры ячейки - получаем координаты Но я бы мозг свой так не мучал, а просто прошёлся бы 2-мя циклами: Код AS3:
|
Может Openzoom поможет? Сайт сочинской олимпиады вроде использует его. Хотя там все предопределено
|
Цитата:
А теперь вопрос: можно ли, используя класс-генератор псевдослучайных чисел, заполнять массив методом push нужными значениями, под размер сцены и поместить код в функцию, будет ли каждый раз при вызове функции генерировать новый массив, принимая в себя координаты предстоящего куска карты? Сойдет ли данная конструкция для бесконечного игрового мира? |
Часовой пояс GMT +4, время: 02:01. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.