Добавляем сцены
Нажимать на кнопки, конечно, весело, но хотелось побыстрее перейти к рендерингу. Я считал, что так результат станет более осязаемым и это будет меня мотивировать двигаться дальше. Возможно, поэтому я и соскочил с fullstack разработки на frontend в своё время. Хочется видеть визуальное подтверждение проделанной работы, а не просто полотна строк кода.
Размышляя о процессе рендеринга игры, я столкнулся с одной проблемой: откуда вообще брать объекты, которые нужно отрисовать? Где это все будет храниться, как получить к этому доступ? Более того, в игре может быть больше одного экрана: главное меню, экран, на котором крутят вступительные видеоролики, сама игра, наконец. В героях меча и магии, к примеру, одних только игровых экранов несколько: город, карта локации, поле боя. Везде есть свои правила и разный набор объектов для отрисовки.
Нужна была какая-то зона видимости, контекст, в рамках которого может крутиться game loop. Другими словами – сцена. Сцена может хранить информацию о всех содержащихся в ней игровых объектах, об их положении и прочих свойствах. Короче говоря, это хранилище данных с которыми может работать игра. Как кассета, которую крутит видеомагнитофон. Установив какую-либо сцену в качестве текущей, мы получаем доступ ко всем ее объектам, а значит, мы можем их читать, менять их свойства, удалять или же создавать новые. Другими словами, мы сможем заставить нашу игру жить. При участии игрока или же без него.