Боковой скроллер в C++
Я смотрю на создание базового бокового скроллера с использованием OpenGL и C++, однако у меня возникают проблемы при решении нескольких основных концептуальных вопросов, а именно:
Деление окна на легкие "блоки" (своего рода сетка). На каком уровне я хотел бы сделать это? (Размер области просмотра OpenGL, или через некоторую абстракцию, которая обеспечивает работу с кратными x?)
Хранение данных для всех этих "блоков" позволяет обнаруживать столкновения и некоторые специальные эффекты. Какой разумный способ добиться этого - я думал о многомерном массиве объектов (которые содержат информацию, такую как тип мозаики), но это не кажется очень элегантным или эффективным решением.
2 ответа
Обычно это не окно (т.е. окно просмотра), которое делится на сетку, а "область игрового процесса". Выберите подходящий размер в соответствии со стилем вашего искусства (что-то вроде 64px - вы можете выбрать размер, который является степенью двойки по техническим причинам) и создать плитки такого размера для вашей игры (сохраненные и загруженные в виде одномерного массива).)
Затем на эти плитки ссылаются (смещением) в карте тайлов, которая фактически описывает, как выглядит ваш уровень. Каждая плитка может также иметь дополнительные метаданные для обработки столкновений и игровых событий. Вы можете использовать существующий формат карты и набор инструментов для экономии времени, например, Mappy.
Подсказки:
Подумайте об отображении и данных отдельно (ищите Model-View-Controller).
То, как вы храните данные, зависит от того, как они будут доступны, а не от того, как они будут отображаться. Подумайте об этом с точки зрения компьютеров!
Подсказка, часто проще всего работать в одномерном хранилище данных и выяснить, где на следующем шаге находится следующий шаг вверх / вниз, чем работа в 2d.