Support large maps up to 8192x8192 tiles
Raise hard map size cap from 4096 to 8192 via MAX_MAP_SIZE constant. Replace fixed 16 KB fgets buffer with dynamic line reader that handles arbitrarily long tile rows. Check calloc returns for tile layer allocation. Add entity distance culling: skip updates for entities beyond 2x screen width from camera, skip rendering beyond 64 px margin. Dead entities bypass culling so cleanup callbacks always run. Player, spacecraft, drone, and moving platforms set ENTITY_ALWAYS_UPDATE to opt out. Replace naive 4-neighbor flood fill with scanline algorithm (O(height) stack instead of O(area)) for safe use on large maps. Raise MAX_ENTITY_SPAWNS from 128 to 512 and MAX_EXIT_ZONES from 8 to 16 to support populated large levels.
This commit is contained in:
@@ -19,13 +19,14 @@
|
||||
/* ── Tiles ──────────────────────────────────────────── */
|
||||
#define TILE_SIZE 16 /* pixels per tile */
|
||||
#define MAX_TILE_DEFS 256 /* unique tile types */
|
||||
#define MAX_MAP_SIZE 8192 /* max width or height in tiles */
|
||||
|
||||
/* ── Entities ───────────────────────────────────────── */
|
||||
#define MAX_ENTITIES 512
|
||||
#define MAX_ENTITY_SPAWNS 128 /* max entity spawns per level */
|
||||
#define MAX_ENTITY_SPAWNS 512 /* max entity spawns per level */
|
||||
|
||||
/* ── Level transitions ─────────────────────────────── */
|
||||
#define MAX_EXIT_ZONES 8 /* max exit zones per level */
|
||||
#define MAX_EXIT_ZONES 16 /* max exit zones per level */
|
||||
|
||||
/* ── Rendering ──────────────────────────────────────── */
|
||||
#define MAX_SPRITES 2048 /* max queued sprites per frame */
|
||||
|
||||
Reference in New Issue
Block a user