I'd like to suggest a solution to a problem that has been bothering me for quite a long time. Beware, bits theorycrafting and maths ahead, but really, it's much simpler than it might looks by the length of this post
![Wink ;)](./images/smilies/icon_e_wink.gif)
Basically, the pace of a Factorio game is mostly depending on two parameters :
1 - The player's ability to set up the factory (craft items, place them on the map, design automated setups, repel biters...) ;
2 - The research speed in the background that progressively unlock new things up to the rocket silo.
For an ideal game experience, both should progress at a similar speed:
- If the pace of the first is significantly higher than the second, you'll regularly have to wait idly for research to advance to continue progressing in the game, which is quite boring. If you have a bit of experience with Factorio, this is what you'd experience if you were limited to 1 lab.
- If the pace of the second is significantly higher than the first, you'll unlock new things too fast compared to how you can integrate them in your factory. This is what I experience now I'm a fair bit used to Factorio when I build 10-20 labs and beakers production lines accordingly (which isn't much more time consuming than designing a production line for a single lab): I usually research all red-beakers techs before I am able to produce green beakers, ditto for red/green techs before I am able to produce blue beakers. Which isn't good either because you get access to about everything you need far earlier than you're able to use it (with some exceptions in the very early game or with advanced oil processing
![Wink ;)](./images/smilies/icon_e_wink.gif)
In short, it makes research less interesting since there's no need to prioritize a research path, everything is unlocked early enough that research is almost never a constraint.
Now, the problem is, how to make those two parameters work well together ? Let's start with simple, but not ideal solutions :
- Increasing research speed. The reasoning here is, as players with a bit of experience fall in the second pitfall above, making research slower should resynchronize the two paces. That's not ideal for two reasons : first, it's detrimental to new players who build few labs in their first game(s) and will make Factorio less fun for them. Second, it's only shifting the problem : since building a bigger production line is only marginally more time consuming than a small production line, all you'd need to do is this time to build 30 or 50 or 100 labs instead of 10 and the beakers to supply them (a bit longer, but not 3/5/10 times longer) to fall again in the same issue of too fast research.
- Capping research speed. Say you're limited to one, or 10 labs and over that limit, adding more doesn't help. A bit better, but not very satisfying either, a cap that would be adapted to new players (who build slowly and not too many labs) would be too low for experienced players. And it goes a bit against the gameplay philosophy of Factorio where you are able to scale about everything.
So, what I'm suggesting is to implement a decreasing marginal efficiency of labs. It means that when a lab is researching a tech, each new lab that is also contributing will be less effective that the previous one.
Say you have a technology that requires 1000 research points, with a beaker giving 100 points in 1 minute in a single lab. You'd need 10 beakers and 10 minutes to research the technology with a single lab. With how things are working now, with two labs working together, you'd need 5 beakers in each lab (10 total), but only 5 minutes to research the tech.
The idea is to change this so that the second lab is no longer as efficient as the first - instead of giving 100 points, it'll only provide, say, 80 points per beaker in one minute when it's working at the same time as another one (or, for another way to see things, each lab only provides 90 points per beaker per minute when working in two). So, with two labs, you'll need 1000/90 = 11,1 beakers instead of 10, and the total duration will be 11,1/2 = 5,6 minutes instead of 5.
If you add a third lab, the penalty is multiplied : instead of 100 points, it'll only contribute to (0,8^2)*100 = 64 points (meaning that three labs together will provide (100 + 80 + 64)/3 = 81 points per beaker on average) ; when three labs are working together towards a research, that research will require 1000/81 = 12,3 beakers and the durationwill be 12,3/3 = 4,1 minutes (instead of 10/3 = 3,3 with the current system).
OK, you've understood the idea: more labs mean faster research, but not as fast as simply dividing research time by the number of labs (note that it's not the number of labs you've built that counts, but the number that are active simultaneously at a given time). If we call x the efficiency loss (the 80% in the example above), the global effectiveness of n labs working together is equal to (1-x^n)/(1-x).
This function has some interesting properties : it's always growing (your overall research won't slow down because you added labs) and converging towards a given value (1/(1-x)), meaning that research costs and durations can be set knowing that research speed will be in a specific frame no matter how many labs you have.
Say we have an efficiency loss of 80%, no matter how many labs a player builds, we know that research speed can't be increased by more than 5x, and nearing 5x will be prohibitely expensive (remember that beakers cost does remain scaled by number of labs, if you have 10 labs, you'll still eat 10 times as many beakers as 1 lab even if you're only going 4 times faster!) ; most players would likely push to 3x or 4x by building 5-10 labs.
If one doesn't want the function to converge (so you can increase the research speed to any level, but still the faster the research, the more additional labs/beakers you need to increase it further), I see interesting alternatives as:
- Overall research speed progress as n^y where n is the number of labs and y a parameter (y = 1 is the current behavior, y = 50% gives a speed progress as square root of number of labs, etc.) ; each lab is thus contributing as a n^(1/y-1) efficiency.
- Overall research speed progress as 1+log(n)/log(y) (logarithm base y of the number of labs) ; each lab is thus contributing as a (1+log(n)/log(y))/n efficiency.
Here's a comparison of the functions:
![Image](https://forums.factorio.com/images/ext/3cffec3c48cd9797aeaa2a7291c27c48.png)
Whichever function is considered best (I personally like logarithm base 2 the most), the result from a gameplay point of view is that having a low number of labs (say 1 or 2) won't be a big penalty to new players, while experienced players will be able to increase research speed to match their faster, more efficient building speed (though they'll have to find a balance with the growing beaker cost required to accelerate research) and it'll be much easier to balance research costs/speed so that the research not trivialized by simply duplicating labs and beakers production lines.