Tilebased worldmap - are there any boundaries?

Setup/idea:

I am currently designing a game engine where the maps will be dynamically generated from basetiles and combined into larger segments. Much like if you have some room and corridor templates and then throw these into a large map.

I have this 3rd person view on my character (our view is floating up behind the main figure) and the map scrolls into view by moving forward. Outside camera range, I dynamically add the next “tileset/room” based on whats next in this direction.

My problem/question:

What I can’t decide is, wheater is best approach to keep player and camera at “fixed positions” eg. around 0,0,0 worldcoords, and then scroll the tiles under the hero, or I should move the hero around on the tiles that will stay on fixed positions.

Every room is parented to an empty/axis/null gameobject, so its no problem to move a room smoothly. But when looking a particle animations, they can act kinda weird if they dont stay on the same position when animating (flames/rain/snow&smoke) - on the other hand, I dont know if there is any maximum/limiting boundary on how large my heros world coordinates may get before its too big.

My guess would be “unlimited” as its a floating value, but I need someone with largescale tilebased games to come up with some usefull arguements for A or B solution.

Currently I think moving the tiles, makes the camera etc. most logical, but if that makes particle animation troubled, it might be worth moving the hero as a hero actually does and then parent the camera to a moving setup including the hero.

If you’re talking about a reasonably sized project, don’t worry about it and go with option b. If it’s a large, detailed world that you move through at high speed (for instance a race car through a detailed city) I would combine both options.

To tackle both the floating point imprecision and avoid the huge processing overhead I would have the character freely walk around within certain range of the origin, say 1000 units. When the character get’s too far away (use, for instance, a trigger spherecollider to detect this) parent the entire world to your character, transform your character back to the origin and unparent everything again. No floating point imprecision and only a possible slight loading-like lag every few thousand units.

If you’re tiles have Colliders attached to them or you have objects with RigidBody components on them, moving the whole world around will take a lot of processing power. There might be other reasons why this is not a good idea (e.g. possible floating point imprecision problems), but I think option B is the way to go. Attach a camera to your hero and third person controller and you’re good to go.

If you treat game units as meters you’re going to have hundreds of thousands of kilometers worth of space in floating point numbers to work with. Don’t sweat it.