Files
Emil c7e86663d8
MVP checks / mvp (push) Canceled after 0s
Expand voxel gameplay, lighting, full-height streaming and world imports
Add shared Rust/WASM physics, worker meshing and diagnostics, 64-chunk full-height streaming, atlas texture support, and baseline world import. Document the current implementation and include the supplied in-game lobby screenshot.
2026-09-17 02:10:53 +03:00

31 lines
1.5 KiB
JavaScript

export const MIN_VIEW_DISTANCE = 2;
export const DEFAULT_VIEW_DISTANCE = 3;
export const MAX_VIEW_DISTANCE = 64;
export const WORLD_MIN_Y = -64;
export const WORLD_MAX_Y = 319;
export const VIEW_HEIGHT = WORLD_MAX_Y - WORLD_MIN_Y + 1;
export const VIEW_BUFFER = 1;
export const MAX_VIEW_WIDTH = ((MAX_VIEW_DISTANCE + VIEW_BUFFER) * 2 + 1) * 16;
export const MAX_VIEW_CELLS = MAX_VIEW_WIDTH ** 2 * VIEW_HEIGHT;
// Lighting uses local windows; raising render distance must not allocate a
// multi-gigabyte dense light volume.
export const MAX_LIGHT_CELLS = 304 ** 2 * 80;
export const MAX_VIEW_COORDINATE = 30_000_000 + (MAX_VIEW_DISTANCE + VIEW_BUFFER) * 16;
export function normalizeViewDistance(value) {
const distance = Number(value);
return Number.isInteger(distance) && distance >= MIN_VIEW_DISTANCE && distance <= MAX_VIEW_DISTANCE
? distance : DEFAULT_VIEW_DISTANCE;
}
export function viewDistanceProfile(value) {
const chunks = normalizeViewDistance(value), width = (chunks * 2 + 1) * 16;
const drawRadius = Math.SQRT2 * chunks * 16 + 24;
const verticalSections = VIEW_HEIGHT / 16;
return { chunks, radius: chunks * 16, width, sections: (chunks * 2 + 1) ** 2 * verticalSections,
voxelBytes: width * width * VIEW_HEIGHT * 4,
streamWidth: width + VIEW_BUFFER * 32, streamSections: (chunks * 2 + 1 + VIEW_BUFFER * 2) ** 2 * verticalSections,
streamVoxelBytes: (width + VIEW_BUFFER * 32) ** 2 * VIEW_HEIGHT * 4, drawRadius,
farClip: Math.max(190, drawRadius + 60), fogDistance: 78 * chunks / DEFAULT_VIEW_DISTANCE };
}