Como é que se desenvolve um jogo como o Minecraft?
O primeiro passo foi a inspiração do Ininiminer :
Das origens do Minecraft (As origens do Minecraft ) :
Mas depois encontrei o Infiniminer. Meu Deus, eu percebi que esse era o jogo que eu queria fazer. Joguei-o em multiplayer por um tempo e me diverti muito, mas achei que tinha falhas.
O segundo passo foi a implementação de um simples motor de blocos com Java e OpenGL. Lembro-me de ter jogado um dos primeiros betas no browser. Não havia inimigos, uma variação limitada de blocos (sem portas, escadas, ...), a única coisa a fazer era colocar e destruir blocos. A abordagem ingénua seria enviar todos os cubos que estão perto do jogador para a GPU. Uma abordagem melhor é tentar agrupar os cubos com as mesmas texturas ou usar atlas de textura. Em outras palavras, uma GPU prefere lotes de objetos ao invés de objetos individuais. Dez lotes de 1000 objetos é melhor que 10000 chamadas de desenho de um único objeto.
A partir deste simples início novos blocos e recursos foram adicionados. Por exemplo, as notas de lançamento para a versão Alpha 1.0.0 simplesmente declaram:
Adicionadas escadas de madeira e paralelepípedos
Daqui em diante em cada recurso segue logicamente, junto com seus requisitos:
- Física baseada em blocos: Coloque um bloco de água em algum lugar e a água será distribuída para seus blocos vizinhos. Isto é regido pelo princípio do Tick que irá atualizar os blocos próximos ao jogador de várias maneiras (Tick - Minecraft Wiki ).
- Monsters: comportamento de monstros (path finding and simple AI to avoid falling damage, water, ...). Para os aldeões isto foi estendido com uma funcionalidade de troca.
- Redstone: Circuitos simples no início, seguidos mais tarde por blocos lógicos redstone específicos que podem ser usados para emular um computador (Construindo um 6502 em Minecraft )
- Criação do Mundo: A criação do mundo utiliza o ruído Perlin (o ruído simplex é muito melhor hoje em dia), mas não é fácil criar um mundo interessante apenas com o ruído Perlin. Assim, regras determinísticas foram adicionadas para criar aldeias, abismos, fortalezas, rios, ... Biomas também são gerados proceduralmente e fora do curso também são determinísticos.
Isto é tudo uma enorme quantidade de trabalho fora do curso. Características que parecem simples de implementar podem exigir muito trabalho para a equipe Minecraft. Realisticamente, você precisaria de meio semestre (eu sou um professor, então eu acho que em semestres) para ter um mundo básico baseado em blocos e muito trabalho extra para codificar em qualquer quantidade de jogo.