I know what you mean, that's why I focus on pathfinding part. Current AI do not support complex commandng, during field battle, most time we only have several big clusters of units before final charge(and fight normally end fast after that, or number of units on field reduced greatly after that, and during the fight we do not need complex pathfinding but simply find the closest enemy), so if pathfinding for units of a single cluster is computed as a whole, computational burden would be reduced greatly.Yes, each troop in Bannerlord has it's own independent AI. Total War Games may look impressive, but there's a reason they don't let you actually fight, and that's because it's all visual simulation to make it look like a massive battle when infact there's not a whole lot actually happening behind the scenes. It looks great for sure, but you wouldn't actually be able to interact with those soldiers if you was down there with them.
AI in Bannerlord need to be able to fight dynamically, having freedom of movement, selecting the closest target, accessing that targets blocking direction, choosing it's own, predicting it's movement to correctly throw javelins or fire projectiles at. None of this would work with the Total War Style of AI implementation and all of these calculations can add up to be very intensive with a large amount of troops.
We are talking about PC, not console, common sense: select game setting with respect to your machine when playing on PC, the game can support something does not mean your machine can also support the same thing. Simple examples: DLSS/4k. Why can people understand that common sense when talking about graphical issues but cant understand when talking about battlesize? Recall Warband when we do not have such upper cap, will you further increase battlesize when you have already been suffering from significant performance loss? Your logic is really weird. DO NOT TREAT PLAYERS AS IGNORANT MONKEYS.The reason they limit the troops is so the product they release is stable, if they increased the cap to 10,000, and advertised it as such, there would be a lot of backlash when people realise their machine can't handle it. There may also be some engine limitation in there, so they decided to cap it at what they thought was the highest acceptable value.
Then at least allow players do the choice themselves. Not like hard-coded this way.It's just more efficient to hardcode a number than to do various calculations related to your settings, size of the modules, available resources, etc every time the game runs.
That may be an explanation, but it is still weird since the limitation you described also need to be manually implemented(since this is not the upper cap of binary number machine can accept and understand). And if it were simply an allocation space issue, then it is suppsoed to be simple to alternate.(As far as i can image, like simply increase to a much larger number that no machine can actually reach, then game will crash with respect to capability of corresponding machine)Maybe because every trooper might be described in the code with a number which will be translated as a binary symbol combination of I and 0 which seems to be 10 bits big so: 0000000001 is Trooper #1 for the engine and 1111111111 is trooper #2048. For another one you would need to make the engine understand that there are numbers greater than "10 binary digits". Might be engine-related. But it is indeed a power of 2 which might make one guess this could be an allocation thing or something hard-coded. I mean, you must explain to the program what to do with the input it gets and if it is like "there are 2048 troopers possible" because it only accepts a 10-digit number as denominator we cannot simply make it 4096 by adding another digit because then the program will be confused. Maybe something like that. Maybe they thought when making the game years ago "well, we cannot imagine that PCs will be able to handle a larger number than roughly 2000, so we use the 10-digit solution as denominator. I do not know. Maybe I just had a bad coffee and am seeing things.
That might be the case, algorithm complexity may increase exponentially. But still, at least allow players to alternate the setting themselves, at least through mod. Common sense: modify product, which is Bannerlord under this context, at your own risk. DO NOT TREAT PLAYERS AS IGNORANT MONKEYS.My guess is that doubling the hardcoded maximum from 2048 to 4096 (i.e. adding a bit, the smallest possible increase) would cause a significant performance drop that would make *all* battles run worse on *all* systems, raising the minimum and recommended requirements on the CPU side.
They probably already took a hit from going for 2048 instead of 1024, but did it because they didn't want to lock themselves out of offering sizes over 1000 in the future without a refactor.
That's what I'm trying to ask: why and how is such cap implemented in the lower level code?Anyway, with a mod you can increase the battle size to whatever you want (in the .NET code) but the underlaying (low level/rendering) module crashes above 2k when it gets this number, suggesting that there is a hardcoded buffer/list with that maximum size, and if you give a bigger number, it overrides and corrupts memory - and crashes the whole game.