Chunks

Um chunk é um segmento 16×16 de um mundo. Os chunks são o método usado pelo jogo para dividir mapas em peças gerenciáveis. Eles são divididos em "seções" de 16 blocos de altura, que também são frequentemente chamadas de "subchunks".
Descrição
[editar | editar código-fonte]Os chunks têm 16 blocos de largura e 16 blocos de comprimento. Eles se estendem desde o vazio inferior do mundo até o céu superior. Na Superfície, a altura de construção é de 384 blocos e eles têm 98.304 blocos no total. No Nether e o End, a altura dos edifícios é de 256 blocos.
Os chunks são gerados em torno dos jogadores quando eles entram no mundo pela primeira vez. O progresso de geração e carregamento é exibido na tela de carregamento do mundo[Edição Java apenas]. À medida que os jogadores andam pelo mundo, novos chunks são gerados conforme necessário.
Os chunks são gerados com a ajuda do mapa de semente, o que significa que os chunks são sempre os mesmos se você usar a mesma semente novamente, desde que o gerador de mapa e o número da versão permanecem os mesmos.
Carregamento de chunks
[editar | editar código-fonte]Como os mundos do Minecraft têm 30 milhões de blocos em cada ponto cardeal e contêm um número extremo de chunks, o jogo carrega apenas alguns chunks para torná-lo chunks. Os chunks descarregados não são processados pelo jogo e não processam nenhum dos aspectos do jogo.
O jogo sempre carrega o chunk inteiro quando decide que um chunk precisa ser processado. A divisão em seções é usada apenas para fins de exibição (por exemplo, para limitar a quantidade de dados a serem transferidos para o cliente do jogo) e certas mecânicas de jogo (por exemplo, mecânica da vila).
Na Edição Java, os chunks do ponto de nascimento são sempre carregados. Os chunks do ponto de nascimento formam um quadrado, centrado na geração do mundo, que se estende por um certo número de chunks nas 4 direções cardeais. Este número é chamado de raio do chunk do ponto de nascimento e pode ser definido usando a regra do jogo spawnChunkRadius. O raio padrão do chunk do ponto de nascimento é 2 chunks. Os chunks do ponto de nascimento podem ser usados de várias maneiras, como para fazer fazendas automáticas.
Carregamento de chunks da Edição Java
[editar | editar código-fonte]Ticket
[editar | editar código-fonte]O carregamento começa quando um chunk recebe um ticket. Todos os chunks carregados são originados do ticket. Cada ticket de carga possui três propriedades: Nível, Tipo de Ticket e (opcional) Time to Live.
Nível e tipo de carga
[editar | editar código-fonte]Níveis são números que determinam em que tipo de carga o chunk está. Um nível mais baixo representa um tipo de carga mais alto. Para um determinado chunk, ele pode obter níveis diferentes a partir de tickets diferentes, mas apenas o nível mais baixo é importante.
Os níveis de carregamento variam de 22 a 44 no jogo normal, enquanto apenas 22 a 33 são relevantes para carregamento de blocos. Níveis de carga inferiores a 22 são válidos, mas só são possíveis com um jogo modificado. Níveis de carga acima de 44 são descarregados instantaneamente no vanilla.
Existem quatro tipos de carregamento de blocos; cada tipo de carga possui propriedades diferentes. Isso exclui chunks descarregados.
| Tipo de carga | Nível | Propriedades | |
|---|---|---|---|
| Marcação de entidade | 31 e abaixo | Todos os aspectos do jogo estão disponíveis. | |
| Marcação de bloco | 32 | Todos os aspectos do jogo estão disponíveis, exceto que as entidades não são geradas naturalmente e não são processadas (mas ainda são acessíveis) e tick de chunk também não. | |
| Fronteira | 33 | Nenhum aspecto do jogo está disponível, mas entidades e blocos ainda estão acessíveis (podem ser detectados ou modificados). | |
| Inacessível | 34 e acima | Nenhum aspecto do jogo está disponível ou acessível, mas a geração de mundo ocorre aqui. | |
Propagação de nível
[editar | editar código-fonte]Os níveis de carga "propagam-se" ou fluem do bloco de origem com um ticket para os blocos vizinhos, mas cada vez aumenta seu nível em 1 até o máximo de 44.
Os chunks que obtêm o nível de carga da propagação de nível ativam o tipo de carga atribuído.
| 34 | 34 | 34 | 34 | 34 | 34 | 34 |
| 34 | 33 | 33 | 33 | 33 | 33 | 34 |
| 34 | 33 | 32 | 32 | 32 | 33 | 34 |
| 34 | 33 | 32 | 31 | 32 | 33 | 34 |
| 34 | 33 | 32 | 32 | 32 | 33 | 34 |
| 34 | 33 | 33 | 33 | 33 | 33 | 34 |
| 34 | 34 | 34 | 34 | 34 | 34 | 34 |
| IN | IN | IN | IN | IN | IN | IN |
| IN | FR | FR | FR | FR | FR | IN |
| IN | FR | MB | MB | MB | FR | IN |
| IN | FR | MB | ME | MB | FR | IN |
| IN | FR | MB | MB | MB | FR | IN |
| IN | FR | FR | FR | FR | FR | IN |
| IN | IN | IN | IN | IN | IN | IN |
Tipos de tickets
[editar | editar código-fonte]Existem diferentes tipos de tickets, provenientes de diversas fontes.
- Ticket do jogador
Este ticket é causado pelo jogador e recebe o nível 31. Um ticket de jogador é dado a cada chunk dentro de uma região quadrada ao redor do chunk onde o jogador está localizado, conforme definido pelas fórmulas descritas abaixo, e se propaga conforme descrito na tabela acima.
No modo singleplayer, "Alcance visual" em opções decide o comprimento lateral do quadrado. Segue a fórmula , onde r é a distância de renderização selecionada e l é o comprimento lateral (em chunks) do quadrado.
No modo multijogador, o"alcance visual" configurado em server.properties decide o comprimento lateral do quadrado. Também segue a mesma fórmula onde r é a "distância de visualização" configurada e l é o comprimento lateral da região quadrada.
Por exemplo, em um jogo single-player com um "alcance visual" de 5 chunks, uma região de 11x11 chunks centrada em torno do jogador tem um tipo de carga de entity ticking (nível 31). A faixa de chunks na borda externa de um perímetro 13×13 ao redor do jogador tem block ticking (nível 32), e os próximos chunks envolventes (perímetro 15×15) são chunks de borda (nível 33 ).
- Ticket forçado
Um ticket também pode ser criado usando o comando /forceload. Possui nível 31, portanto sua propagação pode ser vista na tabela acima.
Os chunks permanecem carregados à força mesmo depois de sair e entrar novamente no nível.
- Ticket inicial
Ticket criado pela geração do mundo para o chunk em que ele está localizado, carregando uma área de chunks de 23 por 23 conhecida como "chunk do ponto de nascimento". Sua posição pode ser alterada por um comando /setworldspawn. Possui nível 22, o mais baixo do jogo.
- Ticket de portal
Ticket criado quando uma entidade é teletransportada através de um portal do nether, entregue ao chunk do outro lado do portal. Tem um nível de 30, por isso é mais forte que o ticket carregado pelo jogador/forçado.
Ele expira após 300 ticks do jogo (equivalente a 15 segundos). Por serem criados cada vez que uma entidade passa pelo portal, é possível criar um “chunk loader”. Manter chunks carregados perpetuamente sem que o jogador esteja por perto, o que pode ser usado para várias mecânicas do jogo, como fazendas, mas pode criar atraso.
- Ticket de dragão
Ticket criado no início da batalha com o dragão ender e é dado ao chunk 0,0. Tem um nível de 24.
Ele expira se não houver jogadores a uma distância euclidiana de 192 blocos de (0,0, 128, 0,0) ou se o dragão morrer.
- Ticket de pós-teletransporte
Ticket criado quando a entidade é teletransportada passando pelo portal do end ou usando os comandos /teleport ou /spreadplayers. O comando /spreadplayers e /teleport tem nível 32, enquanto, para o portal final, tem nível 33.
Ele expira após 5 ticks do jogo.
- Ticket desconhecido
Quando o jogo precisa usar imediatamente os dados de um chunk, mas o chunk ainda não foi criado ou gerado na etapa necessária, o jogo fornece automaticamente um ticket denominado "desconhecido" para o chunk. Ele expira após 1 tick do jogo (0,05 segundos). O nível de carga depende da etapa em que o jogo precisa que o chunk seja gerado e é sempre maior que 32. Está em vários cálculos do jogo, como IA de criatura, geração de criatura, etc.
Ele expira após 1 tick do jogo.
Por exemplo, quando uma IA errante de criatura genérica está em execução, ela pergunta se um determinado bloco tem uma superfície superior sólida. Como parte dessa verificação, esse chunk possui um ticket “desconhecido” com nível 33 colocado nele. Da mesma forma, comandos como /clone, /data, /execute (if|unless) (block|blocks|predicate), /fill e /setblock geram um ticket desconhecido ao ler ou gravar dados em um bloco carregado anteriormente; se executados a cada tick, eles podem impedir que o chunk seja descarregado até que o mundo seja recarregado.[1]
- Ticket de luz
O ticket de luz é usado apenas para geração de mundo e tem nível 33. Um chunk recebe um ticket de luz ao iniciar a etapa de luz de geração do chunk, para garantir que esteja acessível para calcular a luz. Após a conclusão do cálculo da luz, este ticket é removido.
Limitações
[editar | editar código-fonte]Marcando
[editar | editar código-fonte]Embora os respectivos aspectos do jogo estejam disponíveis se um chunk for carregado até um determinado nível, o processamento desses aspectos do jogo não depende apenas do carregamento do chunk. Também está sujeito a algumas outras restrições.
O carregamento de chunks causado por um ticket de jogador permite que as entidades sejam marcadas apenas se o chunk estiver em um quadrado ao redor do chunk que contém o ticket do jogador, conforme definido pelas fórmulas descritas abaixo. O desaparecimento da entidade não é afetado por isso.
No modo singleplayer, "Distância de Simulação" em opções decide o comprimento do lado do quadrado. Segue a fórmula , onde s é a distância de simulação selecionada e l é o comprimento lateral (em chunks) do quadrado.
No modo multijogador, a "distância de simulação" configurada em server.properties decide o comprimento lateral do quadrado. Também segue a mesma fórmula onde s é a "distância de simulação" configurada e l é o comprimento do lado do quadrado região.
O carregamento de chunks causado por um ticket de jogador permite que entidades de bloco sejam marcadas e tick agendado e tick de chunk (sem geração de criatura) sejam processados apenas se o chunk estiver no região quadrada acima mencionada, juntamente com uma moldura quadrada de um chunk de espessura em torno desta região. Ou seja, uma região quadrada com comprimento lateral de .
Por exemplo,
- Com uma distância de simulação de 5 e uma distância de renderização de 10, as entidades se movem normalmente dentro de uma coluna de chunks 11×11 ao redor do chunk do jogador. Mais um chunk, dentro de uma moldura quadrada de um chunk de espessura em torno desta região, redstone e blocos de comando ainda funcionam, os fluidos fluem e as colheitas crescem. Os zumbis param de desaparecer naturalmente além dos chunks 21×21.
- Com uma distância de simulação de 5 e uma distância de renderização de 5, as entidades se movem normalmente dentro de uma coluna de chunks 11×11 ao redor do chunk do jogador. Mais um chunks, dentro de uma moldura quadrada de um chunk de espessura em torno desta região, redstone e blocos de comando ainda funcionam e os fluidos ainda fluem, mas as colheitas param de crescer. Os zumbis não desaparecem porque são descarregados antes de estarem a 128 blocos de distância do jogador.
- Com uma distância de simulação de 5 e uma distância de renderização de 2, as entidades se movem normalmente dentro de uma coluna de chunks 5×5 ao redor do chunk do jogador. Mais um chunk, dentro de uma moldura quadrada de um chunk de espessura em torno desta região, redstone e blocos de comando ainda funcionam e os fluidos ainda fluem, mas as colheitas param de crescer. Os zumbis não desaparecerão.
Tecnicamente, os aspectos do jogo acima são controlados por outro sistema de tickets diferente denominado ticking ticket.
Tempo limite de inatividade
[editar | editar código-fonte]Cada dimensão tem seu próprio tempo limite de inatividade. Aumenta 1 a cada tick do jogo. Se houver jogadores ou chunks carregados à força na dimensão, o tempo limite será redefinido para 0 e desabilitado. Quando a entidade sai ou entra nesta dimensão, o tempo limite é redefinido para 0.
Se o tempo limite atingir 300 tick do jogo, a dimensão para de processar determinadas ações. Isso inclui ticking de entidade e bloco, luta com dragão ender e entidades globais (relâmpago).
Outros
[editar | editar código-fonte]Alguns aspectos do jogo nem sempre são processados nos blocos de carregamento porque pode haver outras condições para seu progresso, que incluem o seguinte:
- Tick de chunk (incluindo geração de criatura)
- Apenas blocos com centros dentro de 128 blocos de um jogador são marcados em cada tick do jogo. Consulte também Tick.
- Entidades
- As criaturas hostis desaparecem instantaneamente se gerarem mais de 128 blocos de todos os jogadores.
- Isso inclui piglin-zumbis em portais do nether e bruxas em cabanas do pântano.
- As criaturas passivas não aparecem naturalmente fora de uma área de 240 blocos X 240 blocos ao redor de um jogador.
- O limite de geração de criaturas passivas é limitada pelo número de criaturas passivas carregadas na memória, o que significa que quaisquer criaturas passivas presentes nos blocos de geração contam para o limite de criaturas e geralmente evita que criaturas passivas surjam naturalmente em qualquer outro lugar do mundo. A única exceção é quando criaturas passivas aparecem como parte de um chunk recém-gerado.
- Veja também Geração.
- As criaturas hostis desaparecem instantaneamente se gerarem mais de 128 blocos de todos os jogadores.
Exceções
[editar | editar código-fonte]Os eventos em um bloco podem afetar blocos em blocos externos. Se o chunk externo estiver inativo, os efeitos serão suspensos na maioria dos casos. Especificamente,
- A mudança de bloco na borda de um bloco pode espalhar atualizações para blocos fora do bloco e fazê-los responder adequadamente. A atualização pode ser propagada bloco por bloco até fora dos chunks de fronteira, momento em que cria um ticket desconhecido para continuar a propagação.
- O bloco em um bloco com nível 33 pode solicitar um tick agendado, mas não é processado até que o bloco obtenha um nível de carga de 32 ou inferior.
- A água corrente ou a lava podem se espalhar para o primeiro bloco adjacente fora de um chunk de bloco, mas o fluxo fica suspenso ali até que o chunk de borda tenha um nível de carga maior.
- O fogo pode se espalhar para o primeiro bloco inflamável adjacente fora do bloco. Assim como a água e a lava, ela fica suspensa ali. Ele não pode se espalhar ainda mais até que o chunk externo atinja um nível 32 ou inferior.
- A grama e o micélio podem se espalhar para o primeiro bloco adjacente fora de um chunk de entidade.
- O caule de abóbora e melancia crescendo na borda de um chunk de entidade pode colocar seus frutos em um bloco adjacente fora do chunk de entidade.
- Uma entidade (criatura, carrinho de mina, flecha, etc.) que tenta se mover para um chunk de bloco a partir de um chunk de entidade é suspensa assim que sai do chunk de entidade. Quando o chunk de marcação do bloco atinge um nível maior, a entidade retoma o movimento.
- Explodir dinamite em chunks de entidade pode danificar ou destruir blocos em um chunk que não seja de entidade.
Carregamento de chunks da Edição Bedrock
[editar | editar código-fonte]Todos os aspectos do jogo estão ativos no carregamento de chunks, incluindo chunks dentro da distância de simulação de um jogador e chunks carregados por Comandos/tickingarea. Os chunks descarregados não são processados pelo jogo e não processam nenhum dos aspectos do jogo.

Chunks carregados pelo jogador
[editar | editar código-fonte]Os chunks são carregados ao redor do jogador em um círculo com um raio de distância de táxi igual a um mais a distância de simulação, exceto para as bordas nas direções cardeais, onde o raio é igual à distância de simulação (ver imagem).
Se a distância da sua simulação for definida como 4, os chunks ao redor do jogador serão carregados em um "círculo" de táxi com um raio de 5 centrado no chunk ocupado pelo jogador, mas as bordas norte, leste, sul e oeste serão cortadas desligado e tenha um raio de táxi de 4.
Os chunks carregados também podem ser criados com o comando /tickingarea.
Limite
[editar | editar código-fonte]- Entidades
- A geração de criaturas é avaliada para cada chunk dentro de um raio cilíndrico de 6 chunks do jogador que está carregado.
Exceções
[editar | editar código-fonte]Eventos em uma área marcada podem afetar blocos em blocos externos. Se o chunk externo estiver inativo, os efeitos serão suspensos na maioria dos casos. Especificamente,
- A mudança de bloco na borda de uma área de marcação pode espalhar atualizações para blocos fora da área de marcação e responder adequadamente.
- Água corrente ou lava pode se espalhar para o primeiro bloco adjacente em um bloco externo, mas o fluxo fica suspenso ali até que o bloco externo se torne ativo.
- O fogo pode se espalhar para o primeiro bloco inflamável adjacente fora da área de marcação. Como a água e a lava, fica suspenso ali; embora visível, sua animação não é executada e não pode se espalhar até que o chunk externo se torne ativo.
- A grama e o micélio podem se espalhar para o primeiro bloco adjacente em um chunk externo, mas o bloco afetado não muda de fato sua aparência até que seu chunk se torne ativo; então muda instantaneamente. A grama e o micélio não podem se espalhar além do primeiro bloco, nem de tal bloco para a área de marcação até que o chunk externo se torne ativo.
- Caule de abóbora e melancia crescendo na borda de uma área marcada pode colocar seus frutos em um bloco adjacente em um chunk externo.
- Uma entidade (criatura, carrinho de mina, flecha, etc.) que tenta se mover para um chunk externo fica suspensa assim que sai da área marcada. Permanece visível, mas imóvel. Quando o bloco externo se torna ativo, a entidade retoma o movimento.
- Explodir dinamite pode danificar ou destruir blocos em um chunk inativo e, diferentemente de outros eventos, seus efeitos não se limitam a blocos adjacentes. No entanto, os efeitos secundários no bloco externo são suspensos até que o bloco se torne ativo. Por exemplo, se uma explosão destrói um bloco que sustentava areia ou cascalho, a areia ou cascalho não cai imediatamente. O mesmo acontece com itens que foram anexados a blocos destruídos, como molduras de itens e tochas redstone; eles não caem até que o chunk seja ativado.
- Uma dinamite carregada lançada em um chunk é suspensa no ar no primeiro bloco externo em que entra. Ela desaparece até que o chunk externo se torne ativo, momento em que retoma seu vôo e contagem regressiva.
Encontrando bordas de chunks
[editar | editar código-fonte]
As coordenadas X e Z divisíveis por 16 representam os limites entre os chunks. EG: (96, -32) é um canto onde quatro chunks se encontram. Um desses chunks está entre as coordenadas X 80 a 96 e as coordenadas Z -48 a -32. Outra está entre as coordenadas X 96 a 112 e as coordenadas Z -32 a -16 e assim por diante. Quando X ou Z cruza um múltiplo de 16, o jogador está se movendo pelos chunks.
Essencialmente, o jogador está no canto superior esquerdo (noroeste) de um chunk quando as coordenadas X e Z são divisíveis por 16.
Além disso, o jogador pode saber em que chunk está usando esta fórmula:
O X de um chunk é floor(coordenada X / 16)
O Z de um chunk é floor(coordenada Z / 16)
Onde floor é o maior número inteiro anterior. Por exemplo. O floor(27.9561) é 27
Em outras palavras, se X era 27, Z era −15, o chunk é chunk (Floor(27/16), Floor(−15/16)), o que significa que o jogador está no chunk (1, −1).
Além disso, as coordenadas de um bloco dentro de um chunk podem ser encontradas tomando a coordenada mod 16.
Na Edição Java, a combinação de teclas F3 + G pode ser usada para exibir o limite dos chunks. Alternativamente, pressionar o botão "F3" abre a tela de depuração que mostra as coordenadas X, Y e Z do jogador, além da variável "chunk". Essas coordenadas mudam conforme o jogador se move. O jogador pode saber em que chunk está pela variável "chunk".
Na Edição Bedrock, ao alternar gráficos sofisticados, o mundo é renderizado novamente, carregando apenas o chunk em que o jogador está por uma fração de segundo, mostrando brevemente os limites dos chunks. Quando o jogador altera a distância de renderização rapidamente, as bordas de chunks aparecem como uma linha azul.
Além disso, se estiver no ar e fazendo ponte com blocos completos, o próximo bloco colocado desaparece quando uma borda do chunk é cruzada, mostrando a borda do chunk. Às vezes, isso não é confiável e acontece apenas nas bordas dos chunks. Isto não acontece no subsolo ou quando o bloco colocado está próximo de mais de um bloco.
Chunks de slime
[editar | editar código-fonte]Cada chunk tem 1⁄10 de chance de gerar um chunk de slime, um chunk que slimes são capazes de gerar abaixo de Y=40 e independentemente de nível de luz. Esses chunks são idêntico a chunks normais.
Na Edição Java, se um chunk em um determinado conjunto de coordenadas se torna um chunk de slime é determinado pela semente do mundo. Na Edição Bedrock, no entanto, eles são gerados nas mesmas coordenadas em todos os mundos.
Histórico
[editar | editar código-fonte]| Edição Java pre-Classic | |||||||
|---|---|---|---|---|---|---|---|
| rd-131655 | Os precursores dos chunks são apresentados. | ||||||
| Edição Java Infdev | |||||||
| 20100227-1 | A altura do mapa não é mais personalizada. A altura do chunk foi alterada para 128. | ||||||
| Edição Java | |||||||
| 1.2.1 | 12w07a | A altura do chunk foi aumentada para 256, como parte da transição de Região para Anvil (formato de arquivo). | |||||
| 1.4.2 | 12w39a | A tela de depuração agora mostra as coordenadas do chunk em que o jogador está, e as coordenadas do jogador nesse chunk. | |||||
| 1.10 | 16w20a | F3 + G agora alterna as bordas visíveis dos chunks ao redor do jogador. | |||||
| 1.14 | ? | O método de carregamento de blocos mudou. | |||||
| 1.17 | 20w49a | A altura do mapa agora é personalizada novamente. | |||||
| 21w06a | A altura máxima de construção na Superfície foi aumentada para 320 e a altura mínima foi reduzida para -64, totalizando 384 blocos de altura. | ||||||
| 21w15a | As alterações na altura do chunk foram revertidas. | ||||||
| 1.18 | Experimental Snapshot 1 | Os chunks na Superfície têm novamente 384 blocos de altura. | |||||
| 21w37a | A distância de renderização agora faz com que chunks sejam carregados em forma de cilindro ao redor do jogador em vez de um quadrado. | ||||||
| 21w38a | A distância de simulação foi adicionada, que afeta o tick da entidade. | ||||||
| 1.20.5 | 24w03a | /gamerule spawnChunkRadius foi adicionado. O raio padrão do chunk de geração foi reduzido para 2 (de 10). | |||||
Curiosidades
[editar | editar código-fonte]- Se um jogador estiver em um chunk que ainda não foi gerado, o mundo imediatamente se tornará invisível até que ele esteja em um chunk válido. Isso não acontece se as coordenadas Y estiverem além dos limites do bloco.
- Na Edição Bedrock, se uma das dezesseis seções 16×16×16 de um chunk não tiver nenhum bloco, colocar um bloco lá mostra a mesma animação que o carregamento de um chunk. Este erros faz com que o bloco que o jogador colocou fique com a mesma cor do céu na direção que o jogador está olhando por cerca de 1 segundo e comece a desaparecer na textura normal do bloco. Se a hora for nascer ou pôr do sol e o jogador colocar um bloco lá, ele mudará de cor constantemente por 1 segundo se o jogador continuar balançando a cabeça para cima e para baixo. O bloco também faz com que os blocos atrás dele pareçam invisíveis.
Veja também
[editar | editar código-fonte]Referências
[editar | editar código-fonte]Atribuído a: The triple g (discussão)
Navegação
[editar | editar código-fonte]| Geografia | |||||||
|---|---|---|---|---|---|---|---|
| O céu e neblina | |||||||
| Dimensões | |||||||
| Tipo de mundo |
| ||||||
| Construções do jogador |
|||||||
| Matéria | |||||||
| Som | |||||||
| Clima | |||||||
| Recursos removidos |
| ||||||