EDIT: I gave my code another read through and found that I had previously declared the constant con_Chunk_Size, which I have no remembrance of doing haha. Would be nice if the error message was a bit more descriptive.
I\'m working on chunk loading code for my game right now and have run into a problem, though I\'m not sure what it is. When I try to compile my code it provides the ever descriptive message of \"Compilation Failed (Syntax Errors)\". I wasn\'t having any problems before I worked on the chunk loading code, so I\'m guessing the problem lies somewhere in what I wrote recently. After scanning through all the new code twice looking for silly mistakes (which I did find) I\'m not able to narrow down what might be causing this error to appear. I\'ve posted all the code relating to chunk loading below in hopes that someone bored enough can help me figure out what I\'m doing wrong

Sadly you won\'t be able to run it since it refers to other pieces of code.
This is the first time I\'ve had to use any file commands, so it may very well be a problem in that. The first code section highlights my usage of these to make it easy for you to see if they\'re implemented correctly. Of note is that I\'m trying to use the SAVE/LOAD ARRAY commands with a 2d array without knowing if it\'s even possible.
Also, if you\'re seeing me do anything stupid in the code (optimization or otherwise) please feel free to let me know!
LOAD ARRAY var_ChunkX$ + \"_\" + var_ChunkY$ + \".arr\", arr_Chunk_Load(0)
arr_Chunk_Load(var_Array_Position, 0)
#CONSTANT con_Chunk_Size 32
`Chunk arrays.
DIM arr_World_Create_ChunkData()
DIM arr_Chunks_List_Previous()
DIM arr_Chunks_List_Current()
GLOBAL var_World_Name$
GLOBAL var_World_Width = 16000
GLOBAL var_World_Height = 8000
`-----------CHUNKS-----------
sub_Chunks:
var_Array_Position = 0
`Caluculate current chunk.
arr_Object_Player_Created(var_Array_Position).atr_ChunkX_Previous = arr_Object_Player_Created(var_Array_Position).atr_ChunkX_Current
arr_Object_Player_Created(var_Array_Position).atr_ChunkY_Previous = arr_Object_Player_Created(var_Array_Position).atr_ChunkY_Current
var_ChunkX = FLOOR (arr_Object_Player_Created(var_Array_Position).atr_PositionX_Current / con_Chunk_Size)
var_ChunkY = FLOOR (arr_Object_Player_Created(var_Array_Position).atr_PositionY_Current / con_Chunk_Size)
arr_Object_Player_Created(var_Array_Position).atr_ChunkX_Current = var_ChunkX
arr_Object_Player_Created(var_Array_Position).atr_ChunkY_Current = var_ChunkY
`Check if the player\'s current X chunk isn\'t the same as their previous chunk.
IF arr_Object_Player_Created(var_Array_Position).atr_ChunkX_Current <> arr_Object_Player_Created(var_Array_Position).atr_ChunkX_Previous OR arr_Object_Player_Created(var_Array_Position).atr_ChunkY_Current <> arr_Object_Player_Created(var_Array_Position).atr_ChunkY_Previous
`Make the current list of arrays the previous list and set flags to tell if the chunk needs to be loaded/unloaded.
FOR var_ArrayB_Position = 0 TO 8
arr_Chunks_List_Previous(var_ArrayB_Position, 0) = arr_Chunks_List_Current(var_ArrayB_Position, 0)
arr_Chunks_List_Previous(var_ArrayB_Position, 1) = arr_Chunks_List_Current(var_ArrayB_Position, 1)
arr_Chunks_List_Previous(var_ArrayB_Position, 2) = 1
arr_Chunks_List_Current(var_ArrayB_Position, 2) = 1
NEXT var_ArrayB_Position
`Create list of new chunks.
`1 2 3
`8 0 4
`7 6 5
arr_Chunks_List_Current(0, 0) = var_ChunkX
arr_Chunks_List_Current(0, 1) = var_ChunkY
arr_Chunks_List_Current(1, 0) = var_ChunkX - 1
arr_Chunks_List_Current(1, 1) = var_ChunkY + 1
arr_Chunks_List_Current(2, 0) = var_ChunkX
arr_Chunks_List_Current(2, 1) = var_ChunkY + 1
arr_Chunks_List_Current(3, 0) = var_ChunkX + 1
arr_Chunks_List_Current(3, 1) = var_ChunkY + 1
arr_Chunks_List_Current(4, 0) = var_ChunkX + 1
arr_Chunks_List_Current(4, 1) = var_ChunkY
arr_Chunks_List_Current(5, 0) = var_ChunkX + 1
arr_Chunks_List_Current(5, 1) = var_ChunkY - 1
arr_Chunks_List_Current(6, 0) = var_ChunkX
arr_Chunks_List_Current(6, 1) = var_ChunkY - 1
arr_Chunks_List_Current(7, 0) = var_ChunkX - 1
arr_Chunks_List_Current(7, 1) = var_ChunkY - 1
arr_Chunks_List_Current(8, 0) = var_ChunkX - 1
arr_Chunks_List_Current(8, 1) = var_ChunkY
`Compare list of previous chunks with list of current chunks.
FOR var_ArrayB_Position = 0 TO 8
FOR var_ArrayC_Position = 0 TO 8
`If the X and Y value of current chunks is the same as that of the previous chunks, set a flag.
IF arr_Chunks_List_Previous(var_ArrayB_Position, 0) = arr_Chunks_List_Current(var_ArrayC_Position, 0) AND arr_Chunks_List_Previous(var_ArrayB_Position, 1) = arr_Chunks_List_Current(var_ArrayC_Position, 1)
arr_Chunks_List_Previous(var_ArrayB_Position, 2) = 0
arr_Chunks_List_Current(var_ArrayC_Position, 2) = 0
ENDIF
NEXT var_ArrayC_Position
NEXT var_ArrayB_Position
`Unload chunks.
FOR var_ArrayB_Position = 0 TO 8
IF arr_Chunks_List_Previous(var_ArrayB_Position, 2) = 1
var_ChunkX = arr_Chunks_List_Previous(var_ArrayB_Position, 0)
var_ChunkY = arr_Chunks_List_Previous(var_ArrayB_Position, 1)
func_Chunk_Unload(var_ChunkX, var_ChunkY)
ENDIF
NEXT var_ArrayB_Position
`Load chunks.
FOR var_ArrayB_Position = 0 TO 8
IF arr_Chunks_List_Current(var_ArrayB_Position, 2) = 1
var_ChunkX = arr_Chunks_List_Current(var_ArrayB_Position, 0)
var_ChunkY = arr_Chunks_List_Current(var_ArrayB_Position, 1)
func_Chunk_Load(var_ChunkX, var_ChunkY)
ENDIF
NEXT var_ArrayB_Position
ENDIF
RETURN
`-----------CREATE WORLD-----------
FUNCTION func_World_Create(var_World_Type, var_World_Width, var_World_Height)
DIM arr_World_Create_AllData(var_World_Width, var_World_Height)
`Test world 1.
IF var_World_Type = 1
FOR var_Array_PositionX = 0 TO 100
FOR var_Array_PositionY = 20 TO 50
arr_World_Create(var_Array_PositionX, var_Array_PositionY) = 1000
NEXT var_Array_PositionY
NEXT var_Array_PositionX
ENDIF
`Test world 2.
IF var_World_Type = 2
var_Array_PositionY_Previous = 10
FOR var_Array_PositionX_Current = 1 TO var_Map_Width
var_Random = RND (4) - 2
var_Array_PositionY_Current = var_Array_PositionY_Previous + var_Random
var_Array_PositionY_Previous = var_Array_PositionY_Current
FOR var_Array_PositionY_Current = var_Array_PositionY_Current TO var_Map_Height
arr_World_Create(var_Array_PositionX_Current, var_Array_PositionY_Current) = 1000
NEXT var_Array_PositionY_Current
NEXT var_Array_PositionX_Current
ENDIF
`Break the World_Create array into regions/chunks and save the data in a file for retrieval.
var_ChunkX_Max = var_World_Width / con_Chunk_Size
var_ChunkY_Max = var_World_Height / con_Chunk_Size
CD var_World_Name$
MAKE DIRECTORY \"Chunks\\\"
CD var_World_Name$ + \"\\\" + \"Chunks\\\"
`For every chunk...
FOR var_ChunkX_Current = 0 TO var_ChunkX_Max
FOR var_ChunkY_Current = 0 TO var_ChunkY_Max
var_ChunkX_Current$ = STR$ (var_ChunkX_Current)
var_ChunkY_Current$ = STR$ (var_ChunkY_Current)
var_Tile_Count = -1
`For every object...
FOR var_TileX_Current = 0 TO con_Chunk_Size - 1
FOR var_TileY_Current = 0 TO con_Chunk_Size - 1
INC var_Tile_Count
var_Array_PositionX_Current = var_TileX_Current + (var_ChunkX_Current * con_Chunk_Size)
var_Array_PositionY_Current = var_TileY_Current + (var_ChunkY_Current * con_Chunk_Size)
`If it\'s not empty space, save the object type, X location and Y location to a new array.
IF arr_World_Create_AllData(var_Array_PositionX_Current, var_Array_PositionY_Current) > 0
arr_World_Create_ChunkData(var_Tile_Count, 0) = arr_World_Create_AllData(var_Array_PositionX_Current, var_Array_PositionY_Current)
arr_World_Create_ChunkData(var_Tile_Count, 1) = var_Array_PositionX_Current * 32
arr_World_Create_ChunkData(var_Tile_Count, 2) = var_Array_PositionY_Current * 32
ENDIF
NEXT var_TileY_Current
NEXT var_TileX_Current
SAVE ARRAY var_ChunkX_Current$ + \"_\" + var_ChunkY_Current$ + \".arr\", arr_World_Create_ChunkData(0)
UNDIM arr_World_Create_ChunkData(0)
NEXT var_ChunkY_Current
NEXT var_ChunkX_Current
UNDIM arr_World_Create_AllData()
ENDFUNCTION
`Unload chunks.
FUNCTION func_Chunk_Unload(var_ChunkX, var_ChunkY)
var_ChunkX_Min = var_ChunkX * var_Chunk_Size
var_ChunkX_Max = (var_ChunkX * var_Chunk_Size) + var_Chunk_Size - 1
var_ChunkY_Min = var_ChunkY * var_Chunk_Size
var_ChunkY_Max = (var_ChunkY * var_Chunk_Size) + var_Chunk_Size - 1
DIM arr_Chunk_Unload()
var_Array_Max = ARRAY COUNT (arr_Object_WorldBlock_Created())
var_ArrayB_Position = -1
FOR var_Array_Position = 0 TO var_Array_Max
IF arr_Object_WorldBlock_Created(var_Array_Position).atr_PositionX >= var_ChunkX_Min AND arr_Object_WorldBlock_Created(var_Array_Position).atr_PositionX <= var_ChunkX_Max AND arr_Object_WorldBlock_Created(var_Array_Position).atr_PositionY >= var_ChunkY_Min AND arr_Object_WorldBlock_Created(var_Array_Position).atr_PositionY <= var_ChunkY_Max
INC var_ArrayB_Position
arr_Chunk_Unload(var_ArrayB_Position, 0) = arr_Object_WorldBlock_Created(var_Array_Position).atr_ObjectID
arr_Chunk_Unload(var_ArrayB_Position, 1) = arr_Object_WorldBlock_Created(var_Array_Position).atr_PositionX
arr_Chunk_Unload(var_ArrayB_Position, 2) = arr_Object_WorldBlock_Created(var_Array_Position).atr_PositionY
func_Object_Delete(arr_Object_WorldBlock_Created(var_Array_Position).atr_InstanceID)
ENDIF
NEXT
var_ChunkX$ = STR$ (var_ChunkX)
var_ChunkY$ = STR$ (var_ChunkY)
SAVE ARRAY var_ChunkX$ + \"_\" + var_ChunkY$ + \".arr\", arr_Chunk_Unload(0)
UNDIM arr_Chunk_Unload()
ENDFUNCTION
`Load chunks.
FUNCTION func_Chunk_Load(var_ChunkX, var_ChunkY)
var_ChunkX$ = STR$ (var_ChunkX)
var_ChunkY$ = STR$ (var_ChunkY)
DIM arr_Chunk_Load()
LOAD ARRAY var_ChunkX$ + \"_\" + var_ChunkY$ + \".arr\", arr_Chunk_Load(0)
var_Array_Max = ARRAY COUNT (arr_Chunk_Load())
FOR var_Array_Position = 0 TO var_Array_Max
func_Object_Create(arr_Chunk_Load(var_Array_Position, 0), arr_Chunk_Load(var_Array_Position, 1), arr_Chunk_Load(var_Array_Position, 2))
NEXT var_Array_Position
UNDIM arr_Chunk_Load()
ENDFUNCTION