Known UT engine limits

Tutorials and discussions about Mapping - Introduce your own ones!
Post Reply
Buggie
Godlike
Posts: 2698
Joined: Sat Mar 21, 2020 5:32 am

Known UT engine limits

Post by Buggie »

If you want built really huge map you can face these limits:

1. Brushes - some limit exists, but impossible for reach because you face other limits before that.

2. Zones - 63 max. if you overflow - zone simple join: 64 zone share index with zone 0 and so on.
Can lead to lava/water instead of air or vice versa.

3. Polygons - same as Brushes.

4. Nodes - max 65535.
Consists from two parts - nodes from static brushes (visible in UnrealEd) and dynamic nodes from movers (not visible in UnrealEd).
Sum of both numbers must be lower from 65536. Dynamic part is variable during play. When you see more movers which not see before - this number increased.
If you overflow by static part - map can not be saved by UnrealEd.
If you overflow by total count, but not by static map - map saved, but in game some movers will be completely transparent, or without some planes.
UnrealEd able operate when limit overflowed.

5. Points - max 128000.
Same as Nodes - consist of two parts. All same about static and dynamic parts.
If you overflow limit, engine immediately crash, does not matter when and where, include 3D view UnrealEd.
UnrealEd can only operate in 2D views.

6. Paths - all NavigationPoints (include PathNodes) must be in close enough range. Exact value not known.
If you overflow limit, navigation network stop work.
Count of Paths possible limited, but this limit not reachable if you not doing very stupid things.

7. Network channels - 1023 max.
If you overflow this, bad things can happen on network play - lags, glitches, not update some info and so on.
Usually problem leads to bAlwaysRelevant actors.
Some of it eliminate easily, like Inventory which all bAlwaysRelevant after game start.
Some of it can not be eliminate at all - each Mover must use one channel in any time, so near 1000 movers is a big problem.
Last edited by Buggie on Mon Jun 14, 2021 7:03 pm, edited 3 times in total.
User avatar
TankBeef
Masterful
Posts: 585
Joined: Tue Apr 13, 2021 12:56 am

Re: Known UT engine limits

Post by TankBeef »

Yes, I suppose this is part of the reason why maps like the ones from the UTR pack 2 are so rare. Well, that and the fact that they lag on servers.
User avatar
sektor2111
Godlike
Posts: 6403
Joined: Sun May 09, 2010 6:15 pm
Location: On the roof.

Re: Known UT engine limits

Post by sektor2111 »

PathPoint is a KeyPoint not a NavigationPoint - I don't know if it's the same story here.
ALL paths searched are capped at 1000.

Code: Select all

		if ( n > 1000 )
		{
			debugf(NAME_DevPath, TEXT("1000 navigation nodes searched from %s!"), start->GetName() );
			return 0; //Nothing is here, dream on...
		}
and number of whatever PathsList are max 500 when "Breadth Path list overflow bla bla"

Code: Select all

							while ( nextnode->nextOrdered && (nextnode->nextOrdered->visitedWeight < startnode->visitedWeight) )
							{
								numList++;
								if ( numList > 500 )
								{
									debugf( TEXT("Breadth path list overflow from %s"), start->GetName() );
									return 0; //The same as above
								}
								nextnode = nextnode->nextOrdered;
							}
Already posted some of these...
viewtopic.php?f=68&t=1630&p=104040#p104040
UE1 is a "reactive" thingy. Spit on its limits and it will respond back by spitting on your work, just like that.

Edit:
You forgot to mention 32 bits logical boundary - memory access limitation by UE1. The higher is the resolution of textures used, the closer is the boundary and a crashed game - do check yourself.

String Limits = 1024 chars (or less ?)
Palettes = 256
Screenshots index = 256
ReachSpec max collision automated accepted 70 × 70 uu - unless you have your custom ones, guaranteed usable.
ReachSpec array in creating paths = 3000 - Expect sudden effects when map has more than that.
Etc
Last edited by sektor2111 on Mon Jun 14, 2021 8:05 pm, edited 3 times in total.
Buggie
Godlike
Posts: 2698
Joined: Sat Mar 21, 2020 5:32 am

Re: Known UT engine limits

Post by Buggie »

I mess PathPoint with PathNode. Fixed.
User avatar
sektor2111
Godlike
Posts: 6403
Joined: Sun May 09, 2010 6:15 pm
Location: On the roof.

Re: Known UT engine limits

Post by sektor2111 »

Okay... and then...
Max CHR(X) = 256.
Max key aliases 40.
Max NameHash 4096.
WorldSize

Code: Select all

FGlobalMath::FGlobalMath()
:	WorldMin			(-32700.0,-32700.0,-32700.0),
	WorldMax			(32700.0,32700.0,32700.0),
... lol.
A lot of data is just hardcoded and not that dynamic as said "the faster is machine, the better is for UT". Actually machines from now days are with ages in front of UE1 and UE1 breaks HARD-CODED and nothing as performance terms - not on 32 bits.

More strawberries preserving some dumb coding lags and lock-downs...

Code: Select all

#define RUNAWAY_LIMIT 10000000
#define RECURSE_LIMIT 250
Either way this is interesting....

Code: Select all

#define CHECK_RUNAWAY {if( ++Runaway > RUNAWAY_LIMIT ) {if(!ParseParam(appCmdLine(),TEXT("norunaway"))) Stack.Logf( NAME_Critical, TEXT("Runaway loop detected (over %i iterations)"), RUNAWAY_LIMIT ); Runaway=0;}}
Did anybody tested parameter "norunaway" ? I think this is what I need in Editor for some "long-time" checks in UScript... Huh ?
If this "norunaway" it's really working then I think I'll change my plans with my paths worker toy... :mrgreen:
User avatar
sektor2111
Godlike
Posts: 6403
Joined: Sun May 09, 2010 6:15 pm
Location: On the roof.

Re: Known UT engine limits

Post by sektor2111 »

Bump... Completion
Title: Boundary hypocrisy
While headers are happily explaining:

Code: Select all

#define MAXCOMMONRADIUS 70 //max radius to consider in building paths
#define MAXCOMMONHEIGHT 70
The reality from DevPath works against boundaries because... they are working over boundaries when decent values are used...

Code: Select all

			if ( node->IsA(ATeleporter::StaticClass()) )
			{
				if ( Actor && Actor->IsA(ATeleporter::StaticClass()) && (Actor != node) ) 
					bFoundMatch = (((ATeleporter *)node)->URL==*Actor->Tag);
			}
			else if ( Actor && Actor->IsA(AWarpZoneMarker::StaticClass()) && (Actor != node) )
				bFoundMatch = (((AWarpZoneMarker *)node)->markedWarpZone->OtherSideURL==*((AWarpZoneMarker *)Actor)->markedWarpZone->ThisTag);

			if ( bFoundMatch )
			{
				newSpec.Init();
				newSpec.CollisionRadius = 150; //70 Huh ? Anything else ?
				newSpec.CollisionHeight = 150;
				newSpec.reachFlags = R_SPECIAL;
				newSpec.Start = node;
				newSpec.End = Actor;
				newSpec.distance = 100;
				int pos = insertReachSpec(node->Paths, newSpec);
				... blah, blah
In other hand, my little tiny crap delegated to do paths will work under 150 × 150 and so we are normal - Teleporters are demonstrating that they work - those good ones not "Deck16" ones.
User avatar
OjitroC
Godlike
Posts: 3605
Joined: Sat Sep 12, 2015 8:46 pm

Re: Known UT engine limits

Post by OjitroC »

"ALL paths searched are capped at 1000. " Isn't this now 2000 with 469c?

At least that's my impression from the "2000 navigation nodes searched from pathnode..." message that I got after pathing a very large map.
User avatar
sektor2111
Godlike
Posts: 6403
Joined: Sun May 09, 2010 6:15 pm
Location: On the roof.

Re: Known UT engine limits

Post by sektor2111 »

Probably several "constants" - limits were increased... even my rig can deal with 2000 nodes in a few nanoseconds... But, as a note: I did not see any map that needs 2000 Nodes, usually there is not a good game flow, or perhaps is complex, buildings, streets, etc. and there 1000 nodes might not be enough for full coverage. If some dudes are using over 2000 nodes where 700-900 are connecting things normally, it's their problem. Such overcrowded useless load is not for me. In addition, you can point me privately if spirits will warm up in public, which map is about. Also I adjusted pathing tool done by Buggie because in Editor certain operations are not like in Run-Time, and I tested long routes - they work more or less with small helpers (if are needed).
User avatar
OjitroC
Godlike
Posts: 3605
Joined: Sat Sep 12, 2015 8:46 pm

Re: Known UT engine limits

Post by OjitroC »

sektor2111 wrote: Sun Feb 05, 2023 2:13 pm In addition, you can point me privately if spirits will warm up in public, which map is about.
It's a very large, open terrain map originally made for a weird form of Assault and for use with the original XVehicles ('made' by 'He Who Shall Not Be Named'). I removed as much of the weirdness as I could and use it as a DM map with MonsterSpawn - hence the desire for as many pathnodes and paths as possible whilst keeping within Engine limits. Not your kind of map I think (and, TBH, not a map worth discussing really).
Post Reply