The game is probably programmed in C or C++.
Not sure about it since sins relay a lot on .NET for several thing... maybe they use C#...
Both of these languages are strictly and statically-typed. In general, sizes and dimensions of things like arrays must be known at compile-time. There are exceptions (you can dynamically allocate an array), but you certainly don't want to ever exceed the array boundary (this would result in a nasty memory access violation, segmentation fault, crash, etc.), thus you code a limit.
About dynamic array : http://www.uow.edu.au/~lukes/TEXTBOOK/notes-cpp/newdelete/50dynamalloc.html
But more interesting is the dynamic change of the array boundary : http://www.uow.edu.au/~lukes/TEXTBOOK/notes-cpp/newdelete/55dynexample.html
Only problem with dynamic array is that it make the code more complex and with time some memory fragmentation can appear... one dynamic array is not a problem but hundred of them lead to problem with time...
But if C# is used, you have
Hardcode limit is not a problem for the original sins game... my first version of sins was without mod button... so, i think that modding is a option added later and limit are mainly problem for mod... due to the success of sins and the numerous mod for it, i am almost sure that the code for a Sins II will somehow build in a different way... never forget that sins was out 2 year ago, and that the dev stage have long time before the release... a lot of thing are possible now who was not possible several year ago...
You cannot ask a programmer to change million of code line for a patch or expension... yes, multicore is possible... yes, 64 bits is possible... yes, dynamic array is possible... but it will ask a fully remake from scratch for the game engine... not really a job for a patch or cheap expension at a few $$$...
By the way, if really needed, there is some work around for the texture limit... the limit of texture is related to the number of them, not the size... frigate/cruiser use texture who are 1024*1024... nothing stop you to put 4 1024*1024 texture in one single 2048*2048 texture... UV will need to be remake but the result will be 4 mesh using one single texture... by the way, i can certify that these method work... for the Evil Tesla mod, i have made two different mesh ( one fighter and one bomber ) using the same map ( 512*512 )... for the B5 mod, i plan to use one single texture ( 2048*2048 ) for all ship...it is simply a other way for create model, XSI will complain that some poly share the same zone of the texture but on screen, the result will be good...
Hey, long time ago, some genious guy have found a method for make moving part on ship via the particule system... it was something never plan by Stardock/Ironclad but it work...
For huge mod, a work around is possible too... unfortunaly, i am not a good enough programmer for make it... what about a dynamic mod with a piece of software who is run before launch Sins... having a "seed" directory with hundred of race... the pre-launch software allow you to choice some of them for a game ( max 10 player/race ) and create a mod in a dynamic way before launch sins itself and enable the mod with the selected race... all data from the non used race will never be loaded since it will never be in the dynamic mod... i know that so piece of software will not be simple, that it can be slow ( need to make in a automatic way what modder make manually when they merge two race in a single mod )... until now, modder have always work inside sins, never think about add a layer around it...
Yes, i know, i have crazy idea but these grazy idea are usually possible ( not easy but possible )... it is already some time that i think create so launcher with a scripting language... unfortunaly, my coding knowledge in sins is very limited and my scripting knowledge is limited to Linux system...