Neither persistent-but-unloaded sectors nor client-side logic evaluation are viable options.
I have a factory that can produce 1 hull every second.
I turn it on.
I log out. --> The game saves the logic blocks/factories and stores the time at which that chunk de-spawned.
I log in 1 hour later. ..> The game reads the time from when the chunk was despawned, and calculates how much time has passed (up to a server-configured maximum). It then multiplies the production of the factory by the number of ticks it was 'active but not loaded' and puts the output in the appropriate slot.
I check my output, and see 3600 hull (1 for every second I was gone).
This would only work for a single factory in a closed system. Several problems are raised by this system; of note:
- What happens if I build a factory system that doesn't have enough power?
- What happens if my factory is pulling raw materials from a storage container, and I run out of materials?
- How does the game simulate my factories in the correct order so that factories can correctly pull intermediate materials from other factories?
There's only one way to solve all of these problems, and it's the laggiest solution available: iteratively simulate each individual factory tick when the sector is re-loaded. The real kicker is that the game currently does these simulations all within one frame, which would mean that even with a relatively reasonable server maximum of an hour, it's pretty easy to build a factory system complicated enough to give everyone a "server not responding: 30 seconds" message every single time you log on. This would lead to most server admins disabling the feature or requiring players to turn off their factories before logging off, which would make the entire feature moot.
Persistent logic causes the same problem, except worse; imagine you build a 7 segment digital clock and leave it running when you log off. When you log back on, the game has to simulate
the entire clock, second by second, for an
entire hour of operation, from the 1 second clock pulse to the incrementor to whatever sort of base 2 to base 10 conversion is involved, and finally to the actual number display - 3600 times. "server not responding: 30 seconds" would be what you
wish you had.
Client-side logic evaluation is both impractical and insecure. First of all, the server needs to know the final state of all the logic blocks on your station (and all your ships!) in order to properly function. If you outsource this insane computation to the client, you're effectively letting the client set any logic state they want when they log in. If you throw in factories, then the client can just say that all of the factories are filled with infinite amounts of every material. You can't let that happen, because that's a massive security flaw, so the only reasonable solution is to make the server validate the client's result - and the only way to do that is to make the server do all the work itself, so there's no point in making the client do anything in the first place.
This is sometimes called "client controls inventory", and it's among the worst ways you can build a multiplayer game. Other favorites are "client controls position", where the client can teleport anywhere it wants.
The short version of all of this is that the only way to do this properly is to keep the sectors loaded all the time, and as already discussed, that's a giant invitation for lag trolling on a massive scale.