Обычно вы не используете синглтон в самом классе, попробуйте изменить
if([[Game game].mapBuildingsLayer addPitAt:pt]) //app crashes here
до
if([self.mapBuildingsLayer addPitAt:pt]) //app crashes here
Вы должны использовать [Game game] вне класса, чтобы попасть в одноэлементный экземпляр вашего класса и вызывать его методы, но внутри класса вы бы просто называли его как self, как обычно.
Обычно, если вы собираетесь использовать игровой синглтон, это не то, как вы его используете. Попробуйте думать об этом так, используя гигантский конечный автомат. Создайте подкласс CCScene, который будет инициализировать все ваши соответствующие подклассы CCLayer и управлять ими. Затем из машины состояний вы можете загрузить соответствующую инициализирующую ее сцену, и это создаст все под ней.
В вашем методе applicationDidFinishLaunching вы просто используете свой одноэлементный объект для загрузки вашей первой сцены. Я бы действительно рекомендовал ознакомиться с Learning Cocos2d Book , так как он очень хорошо описывает этот движок синглтона, и я думаю, что проясню все ваши вопросы.
Итог: государственный двигатель загружает сцену, которая загружает слои.