Level geometry must be within -65,535 to 65,535 units. Another way to say this would be that the map’s width, depth, and height can each be up to 65535 × 2 units. (Though I think I read there was collision issues far from origin?) For reference the player’s width is 30 units, so there could be 4300+ players standing side by side in a row.
Quake 3 does have other limits such as only 256 func_* entities (doors, platforms, buttons, rotating things, triggers for jumppads etc, func_static) and a total of 1024 in-game entities. In-game objects such as players, missiles, and temporary events (for missile impact, various sounds, etc) add to the total entity count. So I’ve read a map should have only have a max of 768 entities. Light entities and misc_models do not add to the in-game total entities.
The largest official Q3 map is probably Quake III: Team Arena’s mpterra2
map that has 653 in-game entities in CTF (as reported by the entityList
command). The world size is 12672 × 16768 × 2880 units. If the map was scaled to the max size a map can be (7.8 times larger) it would be pretty void of entities as there can only be 1.176 times as many entities.
Most default Q3 FFA maps are about 4k × 4k × 1k. I checked the entity count of some maps, it seemed to be approx. 200 entities per-map. So geometry-wise there could be 32 x 32 x 128 maps in a single map. Unless I’ve lost my mind, there could be 131,072 Q3 maps within the geometry bounds. Though, only the entities of about 4 maps could be present. So I think you’re more likely to run out of entities than to reach the map being too big.
In-game entity count can be reduced by Game VM mods that have ‘server-side entities’, entities that do not count toward the in-game limit of 1024 entities. Useful for things that are not sent to clients such as player starts, location names, and various triggering entities (func_timer, …). For some Q3 maps this might reduce in-game entities by 50% (I haven’t used a mod that does this or looked at it thoroughly).
Another thing to note, the client only gets sent a max of 256 entities. So if it’s a wide open 65,535 unit box with 1024 entities, the client will only see the first 256 entities. So there would need to be blocked off areas or doored-in areas (which would also improve frame rate).
There are other limits for number of map brushes, surfaces, shaders, lightmaps, etc. Most of the limits only exist in the map compiler (q3map2), so the map compiler could be modified if needed and the maps would still work with ioquake3. Max area bits (256) is used in ioquake3. Area bits are used to check if sections of the level are visible to each other. I don’t know how many area bits are typically used in a level though. So this might fail way before putting 131,072 Q3 FFA maps into a single map.