Whatever you plan should take account of how it will actually be displayed in the game window.
Presentation, and therefore usability, are significantly different from how you might imagine them in a fully 3D environment.
While this limits simulation of the real world, it also creates possibilities of its own.
Active Chunks[]
The server only maintains as many chunks of the world as are necessary for players to experience the world as a connected whole.
The active area is larger than that directly involved in creating the visual scene but is mentioned in case there are implications of interest for design.
For example, travelling by road over longer distances increases the chance that some users will encounter unloaded chunks because of lag. There are also visual artifacts that appear on first render but disappear when updated for as long as the chunk is loaded.
Projection[]
The 3D game world is projected onto the 2D game window:
- Centered on the player character
- At a fixed angle to the world coordinate axes that is:
- perpendicular to the x axis, so that world x is parallel with screen x
- halfway between the y and z axes, so that world y and z are both parallel to screen y
In particular, if we take all coordinates relative to the player character, then
screen( x, y ) = world( x, y-z )
The main consequence of which is that changing both y and z by the same amount does not change the screen position.
- Higher Y+Z values are closer to the viewer and determine which objects appear in front of others.
- Lengths along different axes are not distorted by perspective due to different angles, but are displayed at full scale.For example, a whole block is actually an exact cube in the game world, even though it looks too tall.
More info: 90° Cavalier Projection
Clipping[]
Rendering Bounds[]
The part of the game world used to decide what is visible in the game window is based on world coordinates, not window coordinates. This avoids a lot of usually redundant computation.
There are however cases in which clipping has a noticeable effect:
- If you are north of a very high structure, it will appear cut off to the south.
- If you climb to a reasonable height, the world and structures to the north will appear cut off against an empty background.
- (unconfirmed) In principle, shadows from high structures to the north/west could be omitted.
Clipping also occurs in the other directions too, but doesn't have to deal with the same issues and doesn't show.
Overhead clipping[]
Z-clipping also occurs based on any tile above the player character's head, so that nothing above that height is shown.
This is employed as an efficient partial solution to remaining visible inside structures.
Effects[]
Atmospheric fade[]
As you get higher, features below you become less distinct.
- At 4 steps difference a semi-transparent fog appears, becoming more opaque at greater heights (fancy graphics only)
- At 8 steps difference outlining disappears.
Light and Shadow[]
World illumination is uniform and constant, but shadows are used to emphasise 3D relationships.
Shadows are projected halfway between world x and y displaced by the full height difference along both axes.
Seeing in 3D[]
Unless you are building something very regular, with a shape you can easily see or remember, there will be occasions when you have to figure out how things are related in space from less obvious clues.
Visual Cues[]
- Shadows (if enabled) provide a general sense of shape, but can be difficult to interpret in detail.
- Outlining occurs where the top or side edge of a block does not connect with another.
Note: Visual details are not always updated immediately after a change. Waving an equipped tile over the area will clear old detailing and redraw outlining, although shadows won't be redrawn until scheduled.
- Equipped tiles obey occlusion rules, so you can move a Z-locked tile over the area to quickly see whether it is in front, behind, or at the same height as a placed block.
Kinesthetic Testing[]
- Use your character's body to walk over structures to detect gaps, steps, and walls.
- Drop from a high point to see where you land and what you pass on the way down.
Height Masking[]
- Use overhead clipping to examine hidden areas by standing beneath blocks just above the height you are interested in. Building a nearby staircase for this purpose allows you to move the view up and down easily.
Temporary Guides[]
- Building an unambiguous connection between blocks tells you exactly how they relate.
Un/Re-Placement[]
- In the most awkward cases, it might be easiest to remove part of a structure and rebuild it to be sure. If it ever comes to this, you should probably work out a strategy to help you keep track.