It\'s a bit confusing to new players the way the factories consume all their energy in a single burst every 5 seconds, meaning there\'s no benefit to having more than 20% of your maximum energy regenerated per second on a factory station (unless it also has to power turrets, obviously).
I made a game with a similar delayed-tick system for certain structures (in this case, the growth step for plants and trees in an evolving forest), and the way I got around the tick-burst was to set up a queue of all the structures that use delayed ticks and a counter variable. Once per game tick, you add the queue size * the time since the last tick to the counter, and then check the value of the counter to determine how many of those objects you should update. In pseudocode:
- Method partialUpdate ( Queue& objectQueue, float& updateCounter, float elapsedSeconds )
- updateCounter = updateCounter + objectQueue.size * elapsedSeconds
- Object tempObject
- While updateCounter > SECONDS_BETWEEN_PARTIAL_UPDATES
- tempObject = objectQueue.Dequeue()
- tempObject.Update()
- objectQueue.Enqueue( tempObject )
- updateCounter = updateCounter - SECONDS_BETWEEN_PARTIAL_UPDATES
- EndWhile
- EndMethod
This technique is quite useful for any game objects that don\'t require frequent discrete updates, as you can increase the time between object updates to far beyond that of the game\'s regular update frequency, saving a lot of processor power. With this method only some of the objects are updated each game tick, but each object is updated, on average, exactly once every N seconds.
In the case of Starmade\'s factory ticks, this would mean that you could run very large factories with a very low maximum power, as long as your power cores were generating enough energy per second to cover them.
That having been said... I am not the developer for this game, and I can\'t say for certain that Schema doesn\'t
want the factories to all update on a single, syrchronized five-second tick. There may be an engine or design reason I\'m not aware of preventing him from implementing this sort of gradual update system.