We have no idea why, but support has recently been bombarded by requests for the limits of various systems in the Iron Engine. Thus, I have taken the time to compile a list of as many as a I could within my breakfast and lunch timeframe. I will add more as requested as this is certainly not comprehensive. I hope it helps
enum { MaxNumWeaponBanks = 4 };enum { MAX_NUM_MESHES = 400 };enum { MAX_NUM_FILE_TEXTURES = 1000 };enum { MAX_NUM_FILE_CUBE_TEXTURES = 10 };
enum { MAX_SOUNDDATA = 2000 };enum { MAX_SOUNDIDS_PER_TYPE = 6 };
static const int MAXNUMALTERNATES = 4; //sound alternates
enum { MAX_NUM_ICONS = 2000 };
enum { MaxNumSegments = 20 }; //exhaust trailsenum { MaxNumTrails = 4 }; //exhaust trails
struct MaxNumLinearPathEffects{enum {Value = 1000};};struct MaxNumBeamEffects{enum {Value = 1000};};struct MaxNumAttachedWeaponFireEffects{enum {Value = 2000};};struct MaxNumAttachedWeaponHitEffects{enum {Value = 2000};};struct MaxNumAttachedWeaponCriticalEffects{enum {Value = 200};};struct MaxNumAttachedPersistentDamageEffects{enum {Value = 200};};struct MaxNumAttachedBuffEffects{enum {Value = 1000};};struct MaxNumAttachedExhaustEffects{enum {Value = 1000};};struct MaxNumAttachedExplosionEffects{enum {Value = 200};};struct MaxNumShieldEffects{enum {Value = 1000};};struct MaxNumMissileEffects{enum {Value = 1000};};struct MaxNumTrailEffects{enum {Value = 250};};
enum { MAX_NUM_PARTICLES = 6000 };enum { MAX_NUM_PARTICLE_SIMULATIONS = 2000 };enum { MAX_NUM_EMITTERS_PER_SIMULATION = 10 };enum { MAX_NUM_AFFECTORS_PER_SIMULATION = 15 };
enum { MAX_NUM_RESEARCH_TIERS = 8 };enum { MAX_NUM_RESEARCH_TRACK_SIZE = 8 };enum { MAX_NUM_BUFF_LEVELS = 3 };enum { MAX_NUM_EXPERIENCE_LEVELS = 10 };
enum { CapitalShipMaxFlairEffectCount = 10 };enum { FrigateMaxFlairEffectCount = 10 };enum { PlanetModuleOrbitMaxFlairEffectCount = 10 };enum { StarBaseMaxFlairEffectCount = 25 };enum { CannonShellMaxFlairEffectCount = 1 };enum { StarMaxFlairEffectCount = 1 };enum { PlanetMaxFlairEffectCount = 10 };enum { SpaceMineMaxFlairEffectCount = 1 };
enum {MaxNumWeapons = 3};enum {MaxWeaponPointCount = 20}; //per weapon per bank (so 3 * 4 * 20 = 240 total)
enum {MaxNumPersistentDamageEffectDefinitions = 6};
enum {MaxBuffEffectMeshPointsPerAttachPoint = 25};
enum {MaxStageCount = 10}; (Starbase Upgrades)enum {MaxStageCount = 10}; (Planet Upgrades)
enum{MaxNumAbilities = 5};enum{MaxBombEffectPointCount = 10};enum{MaxNumBuffInstantActions = 5};enum{MaxNumBuffPeriodicActions = 2};enum{MaxMeshNames = 12};enum{MaxNumSpecificDebris = 2};enum{MaxNumPersistentDamageEffectsPerDef = 10};enum{MaxNumSquadTypes = 4};enum{MaxNumHangarPoints = 10};enum{MaxSkyboxMeshNames = 10};enum{MaxNumUpgrades = 9}; //starbase upgradesenum{MaxSpawnShipsRandomEntityCount = 5};enum{MaxNormalPlayerCount = 10};enum{MaxAvailablePlayerColorCount = MaxNormalPlayerCount};enum{MaxFleetSubjectLevels = 9};enum{MaxPlanetAsteroidCount = 500};enum{MaxTextures = 4}; //dust cloudsenum{MaxParticlesPerTexture = 200}; //dust cloudsenum{MaxNumFarStarPointGroups = 3};enum{MaxNumFarStarPoints = 40};enum{MaxNumHalos = 10};enum{MaxNumPlanetElevatorConnections = 5};enum{MaxNumClusters = 50}; //planet elevatorsenum{MaxNumElevators = MaxNumClusters * NumElevatorsPerCluster};enum{MaxNumStars = 50}; //background starsenum{MaxNumStarTextures = 10}; //background starsenum{MaxNumExhaustPoints = 10}; //exhaust trailsenum{MaxNumEffects = 200}; //exhaust trailsenum{MaxNumUniqueTextures = 2}; //exhaust trailsenum{MaxSubExplosionCount = 12};
Thanks!
yay, a lot of help to modding community
Awesome. Very useful.
Now the only other list I hope for is a list of unused modifiers. I'd be surprised if there's none, and I don't think there's a way to get at them short of guess and check.
Ones that I'd personally like to see increased:
enum { MAX_NUM_RESEARCH_TIERS = 8 };enum { MAX_NUM_RESEARCH_TRACK_SIZE = 8 };enum { MAX_NUM_BUFF_LEVELS = 3 };enum { MAX_NUM_EXPERIENCE_LEVELS = 10 };enum {MaxNumWeapons = 3};enum{MaxNumAbilities = 5};enum{MaxSpawnShipsRandomEntityCount = 5};
"enum { MaxNumTrails = 4 }; //exhaust trails"
I ran into that
does these indicate the max number of discrete files that are loaded at load? (IE all ten races have 40 ships/structures or some combination thereof?) or does it represent some other limit? same with textures?
enum { MAX_NUM_MESHES = 400 };enum { MAX_NUM_FILE_TEXTURES = 1000 };
now I know this one is simply a stability and performance issue, I've grossly exceeded it on some occasions
enum {MaxWeaponPointCount = 20};
enum { MAX_NUM_MESHES = 400 };
Max total meshes.
enum { MAX_NUM_FILE_TEXTURES = 1000 };
Max total textures.
Per ship. If you exceed it the excess data is thrown out.
Thank you Blair, this is very very cool!!
-Teal
I'm puzzled by limits like this in games. Why do they get hardcoded? Why are they present at all?
Excluding modders, don't the developers have control over the content? If so, why do they need to include limits to the number of research tiers? Why not simply let the engine use all the research tiers it's given. You get the same effect, 8 research tiers, but now you can increase that if necessary by simply adding some tier 9 research and the engine accommodates that.
I've only been a programmer for a short time, so forgive my ignorance if this is something obvious.
I always thought it was to stop those pesky artists from going over 2gigs and crashing your 32 bit programs lol.
Obviously some are because thats all the engines supports and more would result in mega failure. However some I don't really understand the a limit for like Draz. (After all theres a producer to tell artists to stop using so mamy of the bytes and things like that). Maybe its a case of thats it was done back then and the thought of changing some of them sends programmers in to convulsions?
Is it 20 by weapons type ( total 60 ) or 20 for all weapons types combined ???
Seem that the model that i have now almost finish will never be in sins... 60 weapons point : 10 weapons type1, 20 weapons type2, 30 weapons type3 ( these, i can change because it is a "texture" weapons, not one made of poly )
Except you can't exclude modders. An engine needs to be stable regardless of whether it's running modded content or not. Sins has always clashed with the 2gb-per-process addressing limit, and the hardcodes set the boundries to make sure the essential components of the game always have enough memory, whether it's vanilla or a mod.
I'm actually curious about this one as well, since I've made ships before that have over 20 weapons in total (though no more then 11 of any given type), and as far as I could ever tell when play testing them, all the weapons worked. Albeit, I doubt any more then 20 were ever firing at the same time, the ships were never surrounded with enough enemies for that. (And *if* they actually were, I certainly didn't wanna leave it that way!) The playtesting would lend me to believe it's just 20 per type, OR 20 firing at once. But I'm still curious as to what it actually is.
Well the modder has control over the content then, just as if he puts bad data in a mesh and crashes the game for anyone who runs it, someone always has responsibility for that. The 2gb argument dosn't make sense though. Lets say I need lots of something, like exhaust trails. Baring an egnine design limitations (I don't know) why limit me on them?
The limits make sense if you didn't write the engine to support it (thus go over the limit and it dies). However plenty of limits in sins seem to not be critical like that.
It further dosn't make sense since you can hit 2GB pretty easily now anyway (right?) so there must be some other - actualy good - reason. Im not sure what it is.
Sins have not a 2gb limit... it is a OS problem... a original non tuned XP 32 bit can only address 4 gb where 2 are for application and 2 for the system... a simple edit from the boot.ini and adding the "/3GB" will allow to use 3 gb for application... on 64 bits windows OS, the WOW64 mode for 32 bits application allow a full 4 gb by application... so, it is not something hardcoded in sins... test with other 64 bits OS have allow me to reach game taken around a max of 11 gb... always crash between 11 and 12 gb ( these is maybe a sins limit )...
A other engine hardcoded limit is the max poly of a model... something around the 50k triangles... 50k can seem heavy for the engine but it is far to be true... like everything, you need some balance... fleet with a lot of carrier and fighter/bomber will use more poly globaly that a fleet of 10 capital with high poly model...
By the way, it is our problem if mod break the engine... don't need limit for stop us... recently, i have start to make model who share a identical texture... it is my way for spare memory... and these memory spared can be used for something other, like more poly, more particule, etc...
Sins was annouce to be a game for modder but Stardarck have keep us in the Dark until these topic, we was hitting limit after limit... since mod are a big part of the sins communauty, early support, release of updated tool in the same time that a patch/expension ( have need to cry for have the dev.exe )... modding is what who will keep sins alive for a very long time, and allow Stardock to sell his game for the next 10 year... or more...
Edit: Gah. I'm slow.
Thanks for the answer, I'm still not convinced that hardcoded limits are the best way to deal with this, but thank you for explaining the rationale.
Well basically if you don't place limits then sooner or later you will start getting buffer overflows unless you have a way of capping/pruning the data going into the graphics pipeline.
Personally I think Sins over does the number of objects without adding anything to the gameplay i.e. once you get to 200 - 300 units to manage what does any more actually achieve? '...and now we zoom into this other battle on the other side of the galaxy...' ok great lots of big battles but is battle A any more interesting than battle B? Hence does my game engine need to track and render so many objects?
well, even though the limit for meshes is 400, that's not always 400 DIFFERENT units. It could be that it is set up so that different units have a visually upgrading mesh.
But IMO, a game engine with hardcodes isn't bad. It's when those hardcodes are too restrictive on the really huge mods (like 7 Deadly Sins).
Not *entirely* sure of that myself.. I've watched a number of explosions going off in a system I'm not currently viewing (nothing in that system revealing it, and messing with stuff in an entirely different system). I just happen to have the camera pointed that way. Although I suppose you could pretty easily argue that that IS viewing it. It's also only the explosions I see, so it could just be something in the way the volumetric ones were set up.
Oh, and Thoumsin, I threw those ships I made that I commented on earlier back into a mod and more or less ran them into a huge battle to be surrounded (barely managed to get it back out too!), but as far as I could tell, ALL the weapons still worked. So I'm really thinking that limit is 20 of a given weapon type, and not total. Although it could also be 20 weapons all together on one side of the ship too. (Just thought of that possibility.)
I've editted the value with a comment to explain it better:
enum {MaxWeaponPointCount = 20}; //per weapon per bank (so 3 * 4 * 20 = 240 total).
Thank for the reply... the limit is a huge number, not more a problem now...
hmmm, maybe you wish modify your previous post... to my knowledge, 3 * 4 * 20 is 240 and not 120
Fixed
HOLY CRAP!!!!!!! THAT'S A LOT OF GUNS!!!!!!!!
blair, thank you for this information
harpo
There are many great features available to you once you register, including:
Sign in or Create Account