Que legal acompanhar essa experiência.
Na questão do JSON, talvez fosse interessante usar a técnica de JSON streaming, pra carregar em blocos, daí não iria sobrecarregar muito o navegador, e a renderização começaria a partir do primeiro bloco, e não ficaria preso à esses 50 MB, algo parecido com o Chunk loading usado em jogos. Também seria possível quebrar a renderização em mais etapas, 1: tamanho e formato dos prédios, 2: janelas e luzes, 3: texturas e demais detalhes. Nesses jogos de mundo aberto, como Minecraft, a renderização é escalonada e direcionada de acordo com a posição da "câmera".