From 877b036f1db44a9c5ad4f2acb76fc7faf00cdbbd Mon Sep 17 00:00:00 2001 From: Andrew Brown Date: Fri, 28 Oct 2011 20:57:19 -0400 Subject: [PATCH] Wrote "assembling a chunk" section of the docs --- docs/design/cubepositionimgs/chunk_coords.png | Bin 0 -> 36120 bytes docs/design/cubepositionimgs/chunk_coords.svg | 2289 +++++++++++++++++ docs/design/designdoc.rst | 42 +- 3 files changed, 2328 insertions(+), 3 deletions(-) create mode 100644 docs/design/cubepositionimgs/chunk_coords.png create mode 100644 docs/design/cubepositionimgs/chunk_coords.svg diff --git a/docs/design/cubepositionimgs/chunk_coords.png b/docs/design/cubepositionimgs/chunk_coords.png new file mode 100644 index 0000000000000000000000000000000000000000..d682df341fec75cd5247472eca9317abbe260a38 GIT binary patch literal 36120 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 Q7#J8lUHx3vIVCg!0PYK_Jpcdz literal 0 HcmV?d00001 diff --git a/docs/design/cubepositionimgs/chunk_coords.svg b/docs/design/cubepositionimgs/chunk_coords.svg new file mode 100644 index 0000000..7fd69ac --- /dev/null +++ b/docs/design/cubepositionimgs/chunk_coords.svg @@ -0,0 +1,2289 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + X=0Z=0 + + X + + + Z + + + + Y + + X=15Z=15 + + X=0Z=15 + + X=15Z=0 + + + diff --git a/docs/design/designdoc.rst b/docs/design/designdoc.rst index 357ecd7..9f716ec 100644 --- a/docs/design/designdoc.rst +++ b/docs/design/designdoc.rst @@ -47,8 +47,8 @@ chunk a block is in, simply divide its X and Z coordinates by 16 and take the floor. Minecraft worlds are generated on-the-fly by the chunk. This means not all -chunks will exist. There is no pattern to chunk generation, the game simply -generates them as needed. +chunks will exist. There is no pattern to which chunks are generated, the game +generates them as needed as players explore the area. Chunks are stored on-disk in region files. A Minecraft region is a "region" of 32 by 32 chunks. Regions have their own address, and for a particular chunk one @@ -278,7 +278,7 @@ diagonally next to each other in the image? :alt: Cubes that are neighbors are offset by 12 on the X and 6 on the Y The cube outlined in green is offset on the horizontal axis by half the cube -width, or 12 pixels. It is offset on the vertical axis by half the width of the +width, or 12 pixels. It is offset on the vertical axis by half the height of the cube's top, or 6 pixels. For the other 3 directions this could go, the directions of the offsets are changed, but the amounts are the same. @@ -332,6 +332,42 @@ pixels to get the offset of the lowest green cube: 1704. So the total size of a chunk in pixels is 384 wide by 1728 tall. That's pretty tall! +Assembling a Chunk +------------------ +Now that we know how to place blocks, assembling the chunk is a relatively +simple process. Frist, create an image 384 by 1728 pixels. Then, paste the +blocks in order from back to front, bottom to top. This ensures that block +visually closer to the viewer are drawn on top, while blocks that should be +obstructed are drawn first and get hidden. + +From the data file on disk, block information in a chunk is a three-dimensional +array of bytes, each representing a `block id +`_. +The process of assembling a chunk is essentially reading these values, looking +up the appropriate pre-rendered image representing that block type, and pasting +it on the chunk image at the appropriate location. + +First, a bit about how blocks are addressed in a chunk. Consider this diagram of +the *bottom* layer of a chunk: Y=0. + +.. image:: cubepositionimgs/chunk_coords.png + :alt: Illustrating how cubes are addressed in a chunk + +The 16x128x16 array of block is iterated over. The inner loop iterates over the +Y axis from bottom to top, the middle loop iterates over the Z axis from 0 to +15, and the outer loop iterates over the X axis from 15 down to 0. + +.. note:: + + The iteration happens in ``iterate.c`` in the :c:func:`chunk_render` + function. In the code, the Y and Z axes are switched in name only. (oops) + +In other words, the column of blocks at X=15, Z=0 is drawn from bottom to top. +Then the next column over on the Z axis (X=15, Z=1) is drawn, and so fourth +until the entire plane of cubes at X=15 is drawn (the upper-right face). Then it +starts with the next plane at X=14, and so fourth until the entire chunk is +drawn. + Tile Rendering ============== .. Covers the placement of chunk images on a tile