Using the A* path finding algorithm, this is a civilian AI system using empty object needs as each checkpoint. Every 5 seconds after the end of the civilians path, a new path is created for it to go to.
I have also implemented object avoidance for the civilians themselves, if there is an object in the way, it will use vector raycasts pointing outwards to find its way around the object automatically.