You can use Chunked Terrain. But this is also very limited.

Currently I'm working on real unlimited terrain. And by unlimited I mean unlimited (the only limiting factor would be HDD space, but that's not a problem on modern PCs).

My trick is, the whole world (terrain) is splitted into tiles. Each tile is saved on HDD in a custom file format where vertex position data (only Z position) is saved and maybe the normals too. And the texture as external file.

Now I create only a bunch of unique terrain tiles on level loading via ent_clone. These unique terrain tiles will be updated with the tile data saved on HDD. For example: you have a really huge world consist of 10,000 terrain tiles. If you would load them all via ent_create or ent_morph into the engine, the nexus limit would be reached very quickly. Instead there are just, for example, 32 unique terrain tiles, as much as the camera clipping distance allows to show.

Now, if the player moves forwad, the tiles behind the camera, which moves away from the player, are "freed". This means the texture will be remove from video memory via ent_purge, and the ENTITY* of this unique tile will be available for the tile which comes closer to the player. Now this tile will be filled with the vertex data which we saved on HDD and load the new texture on this terrain tile entity.

The BIG advantage by reading vertex data from HDD is, no new Nexus memory is needed. So you can do unlimited terrain.

The biggest disadvantage is, that filling the terrain tile with the vertex data consums processor speed and therfore FPS. But this can be reduced to a minimum by using small tile sizes and by filling the vertex data of a tile not in a whole frame, instead splittng the vertex data reading into several frames. This will keep the FPS high and the player won't notice the loading.

Another problem is the "var" limit of -999.999 to 999.999. For this problem I don't have tested any solution yet. But one approach would be, to define zones of your world, if the player walks into a new zone, the whole level will be shifted in X and Y direction (this should be really fast, maybe the user will only notice a framerate drop for less than a second).

I hope this was understandable wink