Выезд http://gamedev.stackexchange.com!
Как правило, платформеры используют «плитки», маленькие изображения, которые размещаются в сетке, так что
- Весь фон не нужно хранить в памяти, а
- , чтобы дублированные фрагменты фона не нуждались в дублировании в памяти, а
- , чтобы рисовать отдельные фрагменты можно было более локально (для эффективности кэша).
Например, в чем-то вроде Super Mario Brothers огромное количество экранной недвижимости покрыто «небом». У них просто есть один тайл неба, может быть 16х16, может быть 128х128, может быть, что-то еще целиком (но обычно степени двойки, так что математика проста, и все фишки одинакового размера), которая синего цвета. Кажется вероятным (для меня), что их размер плитки равен размеру одного из «блоков», которые вы можете ударить и уничтожить.
В любом случае, так что «данные об уровне» будут массивом того, что тайл находится в одном месте в сетке, вероятно, ориентированный в памяти как столбцы для локальности доступа. Затем, когда пришло время рисовать, вы начинаете с (например) верхнего левого угла, затем идете вниз, затем над одним столбцом и снова вниз ...
Что касается «загрузки на лету», это можно сделать, но вы должны убедиться, что вы выполняете эту загрузку асинхронно (чтобы игра не приостанавливалась) и чтобы вы проверяли, что данные Вы должны быть доступны задолго до того, как они вам понадобятся.