Aqui estão apenas algumas palavras de informações e conselhos gerais, que posso dar como um modder Minecraft muito experiente (que pode, pelo menos em parte, fornecer algumas orientações).
O motivo pelo qual o Minecraft é lento tem muito a ver com algumas decisões questionáveis e de baixo nível de design - por exemplo, toda vez que um bloco é referenciado por posicionamento, o jogo valida as coordenadas com cerca de 7 se instruções para garantir que não esteja fora dos limites. . Além disso, não há como pegar um 'pedaço' (uma unidade de blocos de 16x16x256 com a qual o jogo trabalha) e, em seguida, referenciar blocos nele diretamente, a fim de ignorar pesquisas de cache e, erm, problemas de validação boba (ou seja, cada referência de bloco também envolve uma pesquisa de partes, entre outras coisas.) No meu mod, criei uma maneira de capturar e alterar diretamente a matriz de blocos, o que impulsionou a geração massiva de masmorras, de inegavelmente atrasada a inegavelmente rápida.
EDIT: Removida a alegação de que declarar variáveis em um escopo diferente resultou em ganhos de desempenho, na verdade, esse não parece ser o caso. Acredito que na época em que confluí esse resultado com outra coisa com a qual eu estava experimentando (especificamente, removendo elencos entre duplos e flutuadores em códigos relacionados a explosões, consolidando-os em duplos ... compreensivelmente, isso teve um enorme impacto!)
Além disso, embora não seja a área em que passo muito tempo, a maior parte do estrangulamento de desempenho no Minecraft é um problema com a renderização (cerca de 75% do tempo do jogo é dedicado a ela no meu sistema). Obviamente, você não se importa tanto se a preocupação for apoiar mais jogadores no modo multiplayer (o servidor não renderiza nada), mas isso importa na medida em que as máquinas de todos possam jogar.
Portanto, qualquer que seja o idioma que você escolher, tente ficar muito íntimo com os detalhes de implementação / baixo nível, porque mesmo um pequeno detalhe em um projeto como esse pode fazer toda a diferença (um exemplo para mim em C ++ foi "O compilador pode estaticamente inline funcionar?" ponteiros? "Sim, pode! Fez uma diferença incrível em um dos projetos em que eu estava trabalhando, pois tinha menos código e a vantagem de inlining.)
Eu realmente não gosto dessa resposta porque dificulta o design de alto nível, mas é a dolorosa verdade se o desempenho é uma preocupação. Espero que você tenha achado isso útil!
Além disso, a resposta de Gavin cobre alguns detalhes que eu não queria reiterar (e muito mais! Ele é claramente mais conhecedor do assunto do que eu), e eu concordo com ele em sua maior parte. Vou ter que experimentar o comentário dele sobre processadores e tamanhos variáveis mais curtos, nunca ouvi falar disso - gostaria de provar para mim mesmo que é verdade!