RECRIEI O MINECRAFT EM 30 DIAS!

1.63M views3683 WordsCopy TextShare
Oda
Oi. Esse vídeo é especial pra mim, sempre quis refazer o Minecraft e finalmente aqui está o resul...
Video Transcript:
é você não leu errado eu tô aqui novamente para recriar mais um game só que como você viu no título dessa vez vai ser um pouquinho diferente todo game que eu faço aqui no canal eu sempre tento fazer o mais rápido possível alguns dias um dia uma hora mas como o jogo de hoje é especial demais para mim eu resolvi estender esse tempo para ver o quão longe eu iria o que daria para fazer em 30 dias quantos Mobs mecânicas quantos itens bem é bom você se ajeitar fica confortável porque hoje eu vou mostrar como
eu recriei o Minecraft em um mês [Música] Minecraft um dos jogos mais interessantes ainda hoje do conceito de um mundo infinito a ser explorado chama muita atenção de qualquer pessoa e Como dito no meu vídeo onde eu crio um vírus dentro do Minecraft esse joguinho aqui não utiliza de uma Engine para ser feito tudo é criado usando uma peixada Open GL E por que eu tô falando tudo isso bem diferente do Criador desse game maravilhoso eu tomei a horrenda decisão de usar uma Engine ay Unity é uma das famosinhas quando se trata do Mundo dos
Games ela não é tão poderosa graficamente contar um rio por exemplo porém eu tenho uma afinidade muito grande com a linguagem de programação fechar que é usada na ionitch e é por esse motivo que eu escolhi essa fofura aqui então sem mais falar aqui está o meu projeto nenhum foi nesse momento que eu criei um objeto que representa o Minecraft inteiro um cubo Ok como que eu vou transformar isso no Minecraft um mundo infinito no Minecraft só é possível por uma lógica procedural jogos que utilizam dessa lógica não são novidades só que como o Minecraft
faz isso quase que infinitamente ele divide essa geração que são áreas de 16 blocos por 16 e foi isso que eu fiz escrevi esse pequeno código que cria uma única Chang Ele é bem simples eu envio para essa função duas coordenadas a x e a z e o que ela faz é ir aumentando um por um nessas coordenadas e assim renderizando um novo bloco naquela nova posição Só que até para o Minecraft isso aqui tá meio quadrado nele existem Lagos morros e montanhas era necessário adicionar um tipo de relevo nesses blocos gerados pelo não algoritmo
era preciso implementar um ruído é uma função que basicamente cria ruídos esse ruído é gerado de forma pseudo aleatória O que significa que parece ser aleatório mas não é pois é gerado por uma conta matemática essa função é geralmente usada para definir a altura de uma geração de terreno e no caso do nosso Minecraft eu vou usar ela para definir a coordenada Y de um bloco só que no Minecraft não tem som uma camada de blocos ele também possui profundidade tem bloco em cima e embaixo dessa linha que você tá vendo aí então o que
eu fiz foi adaptar Essa função para ilhós e para criar blocos abaixo do que já era feito tá meio lagado e o motivo é o mais Óbvio possível para renderizar um bloco o nosso computador usa uma técnica muito interessante triângulos cada Face de um cubo é composta por dois triângulos como você pode ver essa Face possui quatro Quinas e são elas as vértices como um bloco tem seis lados então obviamente ele possui 24 dessas vértices Agora imagina isso aqui tudo multiplicado por 24 era tanto bloco mas tanto bloco ali que essa quantidade de vértices no
mapa era mais de 400.000 e é geralmente isso que causa mais problema em jogos quanto menor a quantidade de vértices melhor mas olha como é que o Minecraft funciona assim dá todo esse lag que a gente tá vendo simples o Minecraft renderiza apenas os blocos que o jogador Teoricamente pode ver um bloco de terra que está embaixo de um bloco de grama ele não precisa aparecer o jogador nunca vai ver ele ao menos que ele quebra esse bloco Então o que eu fiz foi ver ificar se existem blocos em volta de cada bloco a ser
renderizado e se tiver o algoritmo apaga aquela Face daquele bloco agora sinta melhor antes de continuar já era a hora de adicionar o player na Unity e sumiu que não vem pronto então tive que programar movimentação básica do jogador Mas como já tinha feito isso antes nem foi difícil uns minutinhos programando já era possível andar e também quebrar os blocos e por mais que isso daqui pareça ser complexo não foi o que eu fiz foi programar um request para ser disparado na direção que o player estivesse olhando esse recast é como se fosse uma linha
que sai da posição do jogador e colide com o objeto em sua direção essa função retorna a um bloco atingido e daí a única coisa que eu preciso fazer depois é deletar aquele bloco e criar os possíveis outros que estavam escondidos por ele o negócio funcionava muito bem e por isso eu dei início à parte mais difícil de todas o sistema de Trunks por mais que eu já tivesse sim criado uma Chunk isso claramente não era o suficiente no Minecraft quando o jogador anda mas tinha que quis muito distantes vão sendo deletadas enquanto outras vão
sendo criadas à frente Dele por mais que existam cerca de 14 trilhões de cheques exploráveis as únicas renderizadas são aquelas que estão em volta do jogador e foi esse o meu maior desafio inicialmente o que eu fiz foi calcular onde deveriam ser gerados esses novos blocos nada muito complexo apenas usei a posição do jogador e verifique constantemente se era necessário criar esses blocos em volta dele só que isso não funcionou muito bem dava muito leg fazendo uma conta básica uma única chance que possui mais de 98 mil blocos não dava para deixar assim tava dando
muito lag E é claro que o motivo disso tudo era muito ó tudo que era feito ali rodava unicamente na trading Man do game e não precisa se assustar com esse termo trading ela é como se fosse uma rua com vários carros passando os carros que estão atrás precisam esperar os da frente andar primeiro para que eles possam também andar no caso do meu Minecraft a indenização do player a movimentação a renderização das chanches usavam uma única tread para processar tudo isso é como se essa única Rua tivesse muitos carros para passar e gerasse uma
engarrafamento e Esse engarrafamento que causa esse leque estranho que você tá vendo Qual a solução para isso você me pergunta e eu te respondo multi tradings ou o que eu precisava fazer ali era renderizar as tanques em uma outra trag que seria basicamente Se existisse uma outra rua para os outros carros passarem Dessa forma não haveria em garrafamento e o jogo não sofreria esses travamentos e foi o que aconteceu depois de fazer essa parte lógica usando as fregues um desempenho melhorou muito e melhorou tanto que eu já comecei a definir ali mesmo o tipo de
cada bloco e o que eu fiz foi usar da altura de cada bloco pra decidir o que ele seria nesse ponto os bancos abaixo da camada 63 eram Terra os abaixo da 62 eram de pedra e acima disso tudo era grama é tô precisando de uma texturizada e se você me conhece bem então sabe que se tem algo que eu não sei fazer e desenhar então no caso eu peguei as texturas padrão do Minecraft mesmo pois já que o objetivo era fazer no mínimo parecido não ia fazer sentido usar uma textura muito diferente e isso
que você tá vendo aí foi uma das coisas mais chatas que eu fiz na minha vida eu até usei um molde que eu encontrei na internet mas ainda tinha muito problema como por exemplo essas listras estranhas aqui marcando os blocos meu eu nasci para fazer isso depois mais abundantes no Minecraft as coisas começaram a criar cura ali então eu comecei a pensar nos minérios se você já jogou Minecraft então sabe o que é passar horas caçando um diamante e também que não é possível encontrar ele muito perto da superfície por exemplo obviamente existe uma hierarquia
Aqui quanto mais fundo você cava mais rara é o minério que você pode encontrar como esses carinhas aqui também eu tive que pensar muito nessa parte era necessário pensar em um algoritmo que criasse esses minérios de forma aleatória mas que também não fosse eu falo isso porque como os minérios vão sendo criados juntamente com a Chunk se um bloco de carvão por exemplo for gerado em uma posição específica e o jogador resolveu ir comprar pão naquela Chan que vai sumir e quando ele voltar o carvão pode ter sido criado em outro lugar ou até mesmo
nem isso não é nem um pouco legal obviamente depois de muito tempo tentando criar um algoritmo que resolvesse esse problema eu acabei usando hashi e relaxa porque eu não vou entrar muito em detalhes sobre o que é uma hashi porque senão esse vídeo vai ficar mais nerdido que ele é mas basicamente eu criei uma numeração para cada bloco do mapa usando a sede dele um tipo de CPF eu verifico essa numeração para saber se pode ou não ter um minério ali nessa verificação fica cada vez mais rígida de acordo com a Raridade do bloco o
carvão eu deixei muito abundante no mapa parece praga de tanto que tem o ferro é quase a mesma coisa agora o ouro a Redstone e o diamante aí vai ficando bem mais difícil do jeito que a gente gosta e foi usando essa mesma lógica que eu criei o sistema de árvores que nitidamente é uma das coisas mais importantes do game Como você pode ver aqui elas estão bem espalhadas e de forma Digamos que aleatória daí para adicionar gramas e flores eu usei a mesma estratégia o negócio mudou mesmo para adicionar a água no jogo todo
mundo sabe que a água do Minecraft possui um tipo específico de física só que como eu tinha tanta coisa para fazer ainda eu simplesmente definir os blocos de água esses postos de terra aqui e deixei essa parte da física para uma próxima atualização não tem forma melhor de começar esse tópico do que essa imagem linda aqui o personagem Quadradão não poderia faltar então eu implementei um modelo padrão do Steve do Minecraft e já comecei a animar a movimentação dele no decorrer desse vídeo você vai perceber o quão ruim eu sou animado escreve que eu tô
te falando depois de programar as animações Eu também queria uma câmera em terceira pessoa e o bicho já tava todo doido andando pelo mapa e o mais legal de tudo isso é que como esse modelo aqui utiliza o mesmo mapeamento do Minecraft simplesmente dava para colocar qualquer Skin que eu quisesse olha só que mão na roda um pouco à frente eu comecei a programar a parte de colocar os blocos no mapa e nem doeu lembra de como eu quebrei os blocos então eu uso aquele mesmo raquete para encontrar a coordenada mais próxima do jogador daí
eu simplesmente renderiza um bloco nela e a partir daí eu me afundei mais nessa parte de construção mesmo se você reparar no Minecraft quando você Mira em um bloco ele fica de linha e volta dele um Contorno e foi usando uma libida e Unity kill rapidamente adicionei esse detalhe mas isso era só o começo obviamente eu tive que criar uma mira na tela e novamente fiquei umas boas horas animando esse bracinho aqui Eu também tive que programar a Progressão de quebra de cada bloco pois como a textura muda conforme você vai quebrando um bloco tinha
que programar essa mudança sincronizada com o tempo que o jogador levaria para isso e se você pensa que acabou tudo que tá ali é gerado por um algoritmo Mas o que você quer ou coloca não o que significa que se você colocar uma grama sair novamente para comprar pão e depois voltar aquela Chan que vai ser a recriada e aquela grama não vai estar mais Ali era necessário salvar esses blocos e foi o que eu fiz todo o bloco quebrado criado por um jogador é salvo em uma lista e sempre que essa chanque é recriada
ou algoritmo verifica se existe alguma coisa criada ou destruída pelo jogador então ele adiciona esses blocos o remove eles nossa eu falei muita palavra bloco nesse vídeo de nada adiantava quebrar blocos eu não conseguia pegar eles ali estava eu criando um inventário no Minecraft em Olha você me assistiu até aqui criando todo o sistema procedural mas isso fazer interface isso foi a coisa mais difícil que eu já fiz na minha vida o inventário no Minecraft tinha exatamente 27 Slots se você contar com a hotbar ele tem 36 desses espaços como jogador tem uma certa liberdade
para mexer esses itens da maneira que quiser eu tive que criar um botão para cada um desses lotes numa imagem e também um campo de texto para exibir a quantidade dos itens que ele tinha ali e até aí tudo bem Tudo tranquilo fiz os ícones dos primeiros blocos e também a atualização do inventário tudo funcionava legalzinho até eu começar de fato programar o inventário existe um leque de possibilidades pro jogador de carros que manusear os itens ali ele pode selecionar um item e trocar por outro pegar apenas metade itens adicionar apenas um deles em um
slot adicionar apenas um deles em vários Slots usar o shift promover todos eles de cima para baixo ou de baixo para cima e isso é só o que eu consegui lembrar agora problema disso tudo é que toda vez que é uma alteração é feita no inventário uma série de verificações devem ser feitas para evitar bugs fora que quando o jogador pega um item dropado no chão é preciso percorrer todos os Slots do inventário perguntando Oi você igual a mim não você igual a mim não você é igual a mim sim tem espaço sobrando aí não
um espaço vazio entendeu do que eu tô falando e eu poderia ficar aqui por mais 15 minutos falando disso mas é claro que eu vou pular pra parte que tudo tá funcionando perfeitamente chegou a hora de falar de uma das coisas que eu mais gostei de fazer como você já sabe no Minecraft Existem duas Abas de craft básico a do inventário do jogador e a bancada de trabalho para usar essa daqui é preciso usar antes o craft do inventário então eu não tinha outro caminho a não ser começar por ele e o sistema que eu
criei para verificar o item a ser craftado é bem simples toda vez que o jogador coloca um item nesses Slots é ativado uma verificação em uma lista essa verificação pega o tipo de cada item os Slots em que eles estão junto tudo em uma palavra e bom temos um código de craft Esse aí que você tá vendo é o código da crafting table toda vez que os itens do tipo 22 que obviamente são tapas estiver em posicionados exatamente assim é gerado uma crafting table agora só falta fazer o resto como a bancada de trabalho possui
um Craft mais complexo foi necessário um algoritmo só para ela eu comecei adicionando uma receita simples de um Stick e tem que ninguém conhece não é mesmo físicas avançadas e a partir daí basicamente a mesma coisa eu fazia o 3D de uma ferramenta e importava na uniticarita de madeira espada pá Machado e assim também para pedra ferro ouro e diamante o Craft foi praticamente a mesma coisa mas é claro que o tamanho desses códigos mudaram e depois de tudo fica bonitinho na rede e também game eu precisei criar os status de cada arma não é
tão simples assim não viu cada ferramenta possui um poder diferente de quebrar blocos específicos por exemplo quebra somente terra e Areia sem falar que a pedra só pode ser dropada utilizando uma picareta tudo isso teve que ser definido cuidadamente Para não acontecer isso A Fornalha Pode parecer um item simples mas só que não ela é interagível possui uma interface própria com 13 lotes Óbvio que eu tive que criar essa interface e usar uma lógica semelhante a do inventário para mover os itens para dentro dela aí você tá vendo um carvão queimando um minério de ferro
só que para isso acontecer foi necessário criar uma lista de blocos que podem ser Queimados uma dos que podem ser combustíveis também uma do tempo que cada um leva para queimar e só isso gera o suficiente para me sentir confiante em criar o sistema de baús do jogo como eu já havia criado todo o sistema de inventário foi preciso somente replicar ele para interface do bancada item ali dentro é guardado em uma lista vai ser carregada sempre com aquele baú específico for aberto [Música] se eu fiz essa Fornalha aqui é porque ela vai queimar uma
carninha tá na hora de criar o gerador de mobs eu já comecei com a ovelha que no Minecraft eu acredito que seja um dos Mobs mais importantes ela Dropa comida e também lã que é usada para fazer a cama e o modelo dessa fofura que eu tirei da Guia uma Lib que fornece modelos Vanilla texturizados prontinhos para serem usados E foi exatamente aí que eu decidi parar de animar na ionitch E usei o Blender para isso foi até bem rápido em alguns minutinhos eu já tinha uma ovelha andando pelas minhas terras procedurais obviamente eu criei
dessa ovelha ela faz quase tudo que uma ovelha original faz anda aleatoriamente de tempos em tempos sai correndo quando Toma uma porrada e berra e sim eu tive que programar também todo o sistema de Hits e dando a vida do homem e fora isso que nokback que eu fiz correndo aqui os drops também foram adicionados a carne da ovelha e também Alan da em diante eu fiz basicamente a mesma coisa para os outros Mobs como eles também andavam e corriam de lado para o outro quando atingidos que eu fiz foi só modificar o modelo sons
e drops só que aí eu tive a Brilhante ideia de perguntar no meu Twitter qual animal as pessoas gostariam de ver no Minecraft e dentre Respostas como eu ou sua mãe a maioria pediu incansavelmente por uma capivara vou dizer o quê Quem é que não gosta de Capivara e depois de montar a minha capivara passará horas texturizando ela porque eu não sou nenhum artista ali estava coisa mais fofa do meu Minecraft inteiro uma fofura que você poderia ter ajudado a criar se me seguisse no Twitter tá aqui no comentário fixado me segue no Twitter agora
eu tava comendo mais nem fome eu tinha coraçõezinhos e coxinhas de frango Sim eu sou muito ruim em design Mas até que ficou bom tudo era Sindicado com o que realmente acontecia no Game se eu tivesse fome comesse carne ela saciava o jogador e a mesma coisa acontecia para a vida os corações recuperavam de acordo com a fome é que eu esqueci de fazer os monstros né Como já se passavam sei lá mais de duas semanas em desenvolvimento eu optei por adicionar os dois mais icônicos monstros do jogo O clássicos zumbi e o Creeper não
foi muito difícil programar a hostilidade deles já que só o que eles faziam também era andar até o jogador e atacar ou explodir é esse daqui Precisou de um pouquinho de atenção o Creeper quando explode sempre quebra blocos da sua volta e aqui não poderia ser diferente resumido bem eu escrevi um código que quebra blocos em uma determinada área em volta do creeper os blocos quebrados são dropados E é claro jogador Ah agora sim faz sentido comer um bifinho espera não tá ficando de dia e é com essa manhã maravilhosa que eu inicio os ajustes
finais [Música] como você acabou de ver aí unit oferece uma gama de efeitos que tornam o jogo mais bonito como estamos falando do Minecraft inicialmente Eu apenas aumentei a saturação e adicionei um ambiente oclusion para criar essa sombrinhas aqui nas Quinas dos blocos só isso já era o suficiente Porém para que para por aí eu adicionei Sombras o icônico foge do Minecraft são os dos Passos e mais um montão de coisas que não deu para mostrar aqui senão você ficaria até segunda-feira assistindo esse vídeo então depois de muito muito tempo nessa jornada aqui está o
meu Minecraft em um mês é já deu para perceber que a sombra tá um pouquinho defeituosa mas relaxa que isso aqui é de propósito pro jogo ficar mais leve e olha só já tem um porquinho aqui esperando para ser sim toca música e é muito alto [Música] um baú e uma fornalha já posso chamar de lar [Música] hilha só finalmente ficou noite e vocês devem estar escutando o meu mouse teclado estralando de fundo peço desculpas né sim o zumbi Dropa pedra eu acho que não foi uma boa ideia fazer isso e bem eu poderia continuar
jogando o jogo e mostrando os vários bugs que eu encontrei só que se eu fizesse isso o vídeo teria mais de 30 minutos então eu vou estar Encerrando por aqui mesmo se você assistiu até aqui comenta aqui embaixo Minecraft 2 só para saber se você não dormiu no meio do vídeo aí se você ainda não se inscreveu no canal se inscreve vai não custa nada e vai me ajudar demais então é isso eu gosto de pudim até mais [Música]
Copyright © 2025. Made with ♥ in London by YTScribe.com