Anyone know how to create a collision trace channels without breaking everything using collision trace channels?

I’ve == checks and traces on channel that use these collision trace channels. However, every time I create a new one it completely breaks all of these assignments. They bump up or down a collision trace channel. It’s driving me bonkers having to correct these. Is there no way to stop it from doing this?

Edit: I am on UE 5.4 for reference.

Presets use names, not ids. So those don’t get bumped. Are you talking about the channel ids? Like ECC_GameTraceChannel1? You should never use those directly. In C++, you’re supposed to have a header with defines for each channel. Then when you update the project settings, you just update that one file with what’s in DefautEngine.ini.

You could also keep a backup of DefaultEngine.ini and restore the original values when you update the project settings and just use an unused channel for the new entry.

edit: Noticed this is in the Blueprint subsection. I don’t do collision in blueprints. I noticed the enums use the names in the project settings. Do these change if you modify the project settings? As in, does the value you selected from the dropdown change?

Sorry, yes I meant collision trace channels and have edited my post.

Within Project Settings > Collisions > Trace Channels if I add or delete a channel it completely breaks all assignments of trace channels in blueprint. So for example a simple == condition or in Trace by Line. They all lose their assignments because they all shift up or down a channel. I’ve no idea why it does this, but it causes massive headache having to fix all this.

WOW! I think I remember that actually. Probably why I moved all my collision logic to C++. Sorry, I have no real solution other than to keep a backup of your DefaultEngine.ini file and restore the original values after you modify the list. Then update the new entry. Something in the back of my mind tells me this may not work though. I’d have to test it, but I’d have to create a project. I don’t have time right this minute.

It would seem that blueprints store the actual numeric value, not the string name. And it’d make sense because it’s an enum.

Only other way is to keep a map between strings and enum. When you update your settings, update your map. But you’d need to refactor all your blueprints to use the map. And that map would need to be globally accessible (Game Instance maybe if it’s single player).

You could always file a bug report and see if they’d fix it, but I’m not sure how they would store a string instead of the value for an enum. BTW, this same problem happens when you add enum entry in C++ without an explicit value. Haven’t tried the BP enums.

Is this a UE v5.4 thing? :eyes:

It’s always been a thing. It’s why I moved all collision code to C++. I don’t remember if it was the exact same issue as the OP as it’s been a while, but it was related to DefaultEngine.ini reordering the trace channel ids.

edit: It even indirectly indicates this is an issue in the comments where the trace channels are defined.

// in order to use this custom channels
// we recommend to define in your local file
// - i.e. #define COLLISION_WEAPON		ECC_GameTraceChannel1
// and make sure you customize these it in INI file by
// 
// in DefaultEngine.ini
//
// [/Script/Engine.CollisionProfile]
// GameTraceChannel1="Weapon"

I’ve never tried naming a channel like that. I wonder how this can be used.

The problem is that the default responses aren’t by name, but by id like this in DefaultEngine.ini:

+DefaultChannelResponses=(Channel=ECC_GameTraceChannel2,DefaultResponse=ECR_Ignore,bTraceType=False,bStaticObject=False,Name="Enemy")

Can I replace the channel id with the name as indicated above?

The channel ids get reordered if you add or delete one. And it’s kind of random when it happens. So Enemy won’t be channel 2 anymore. It’ll be anything the editor picks. IIRC, it works fine at first, then out of the blue, the editor will reorder the ids. Maybe because one was deleted or something. I can’t remember.

And my guess is that when the ids get reordered, because they get assigned to a different name, the Blueprint stores the enum NUMBER, so the name changes and this would explain the OPs issue. I think this is the issue I was having over a year ago. But it’s been a while so I have difficulty remembering if it was this exact same issue, but I know I couldn’t keep track of the ids in BP.

Wait so if I add them in DefaultEngine.ini instead of through Project Settings > Collision I can avoid this? Jeez what a stupid bug. They should really fix this as it completely nukes your collision trace channels (and object channels if you adjust those) throughout your entire project and will brick your games collision checks. Absolutely bonkers this isn’t a critical issue to fix.

I’ve been around for 10 years and never experienced it, lucky me :person_shrugging: Do you have bug DB id?

I never looked if there was a bug report.

Ok, tried editing the INI directly. This works initially, but eventually breaks.

For the love of god Epic PLEASE fix this. Adding or removing trace channels or objects completely and utterly breaks variable assignments throughout blueprint. This requires going through and finding literally all assignments and manually fixing them. PLEASE fix this.

If you edit the ini, you have to keep a backup of that file. Then it will never break. You can never edit the channels in the editor. You must do it in the ini file. If it ever changes (I’ve never seen this happen), but if it does, then restore the collision settings and move on.

But yes, it should be fixed.

Me either. Been working with UE since the 2.0 days. Never have had issues like this and I make a lot of custom collisions.

I edited them in the INI they eventually broke. Restored them. They then eventually broke again. I suspect unreal engine is assigning them by array key id instead of enum byte? I’ve no idea, but it’s going to drive me nuts. So for now I’ve a record of every file where I’m doing Equal To ENUM and such so I remember to check them if I touch collision channels/objects.

Wait, the editor is updating the ini file? I’ve never had that happen unless I tried modifying the collision list in the editor. If there are any gaps in your saved ini file for the id’s, try adding dummy entries to prevent the engine from overwriting it. Also, when you replace the ini file, make sure the engine is closed or it’ll just overwrite it.

For example, if there’s no entry with “Channel=ECC_GameTraceChannel2”, copy another line and add in ECC_GameTraceChannel2 to fill in the gap in ids. In my experience, the reordering is usually because there are gaps.

Do you use the collision enums in your BPs or C++ though? If not, you’ll likely never notice they got reordered.

Occasionally I do on presets/profile. I try to code around the need to do conditionals on collisions.

All I’m doing is the following.

  1. Go to Edit > Project Settings > Collision
  2. Trace Channels > New Trace Channel

After creating the trace channel my Equal To ENUM checks against ETraceTypeQuery get completely messed up. Usually shifting down or up depending on where that new trace channel gets inserted (since they’re sorted).

I’m now having another insanely annoying issues where an actors Collision Preset resets every time I close the editor. I’m absolutely tired of this crap. Why is this such a pain to work with.

Yeah. Already said to not do that. If you use the editor to change your collisions, you’ll mess up the ordering. Just edit the ini file. Also, did you make sure there are no gaps in ids? If there are no gaps in ids, then you can try editing in the collision settings in the editor. In my experience, it reorders because there are gaps. Like I mentioned before, if you’re not using ECC_GameTraceChannel2 and you add a channel, then it’ll reorder all the channels ids so there is no gap and add your new one at the end. So just go in the ini file and fill in dummy values for any missing ids. There’s no guarantees, but this has almost always fixed any issues I’ve had.

I tried editing the INI file and that doesn’t work. It eventually caused the same issue after a open/close. Below is the collision profiles in my INI file.

[/Script/Engine.CollisionProfile]
-Profiles=(Name="NoCollision",CollisionEnabled=NoCollision,ObjectTypeName="WorldStatic",CustomResponses=((Channel="Visibility",Response=ECR_Ignore),(Channel="Camera",Response=ECR_Ignore)),HelpMessage="No collision",bCanModify=False)
-Profiles=(Name="BlockAll",CollisionEnabled=QueryAndPhysics,ObjectTypeName="WorldStatic",CustomResponses=,HelpMessage="WorldStatic object that blocks all actors by default. All new custom channels will use its own default response. ",bCanModify=False)
-Profiles=(Name="OverlapAll",CollisionEnabled=QueryOnly,ObjectTypeName="WorldStatic",CustomResponses=((Channel="WorldStatic",Response=ECR_Overlap),(Channel="Pawn",Response=ECR_Overlap),(Channel="Visibility",Response=ECR_Overlap),(Channel="WorldDynamic",Response=ECR_Overlap),(Channel="Camera",Response=ECR_Overlap),(Channel="PhysicsBody",Response=ECR_Overlap),(Channel="Vehicle",Response=ECR_Overlap),(Channel="Destructible",Response=ECR_Overlap)),HelpMessage="WorldStatic object that overlaps all actors by default. All new custom channels will use its own default response. ",bCanModify=False)
-Profiles=(Name="BlockAllDynamic",CollisionEnabled=QueryAndPhysics,ObjectTypeName="WorldDynamic",CustomResponses=,HelpMessage="WorldDynamic object that blocks all actors by default. All new custom channels will use its own default response. ",bCanModify=False)
-Profiles=(Name="OverlapAllDynamic",CollisionEnabled=QueryOnly,ObjectTypeName="WorldDynamic",CustomResponses=((Channel="WorldStatic",Response=ECR_Overlap),(Channel="Pawn",Response=ECR_Overlap),(Channel="Visibility",Response=ECR_Overlap),(Channel="WorldDynamic",Response=ECR_Overlap),(Channel="Camera",Response=ECR_Overlap),(Channel="PhysicsBody",Response=ECR_Overlap),(Channel="Vehicle",Response=ECR_Overlap),(Channel="Destructible",Response=ECR_Overlap)),HelpMessage="WorldDynamic object that overlaps all actors by default. All new custom channels will use its own default response. ",bCanModify=False)
-Profiles=(Name="IgnoreOnlyPawn",CollisionEnabled=QueryOnly,ObjectTypeName="WorldDynamic",CustomResponses=((Channel="Pawn",Response=ECR_Ignore),(Channel="Vehicle",Response=ECR_Ignore)),HelpMessage="WorldDynamic object that ignores Pawn and Vehicle. All other channels will be set to default.",bCanModify=False)
-Profiles=(Name="OverlapOnlyPawn",CollisionEnabled=QueryOnly,ObjectTypeName="WorldDynamic",CustomResponses=((Channel="Pawn",Response=ECR_Overlap),(Channel="Vehicle",Response=ECR_Overlap),(Channel="Camera",Response=ECR_Ignore)),HelpMessage="WorldDynamic object that overlaps Pawn, Camera, and Vehicle. All other channels will be set to default. ",bCanModify=False)
-Profiles=(Name="Pawn",CollisionEnabled=QueryAndPhysics,ObjectTypeName="Pawn",CustomResponses=((Channel="Visibility",Response=ECR_Ignore)),HelpMessage="Pawn object. Can be used for capsule of any playerable character or AI. ",bCanModify=False)
-Profiles=(Name="Spectator",CollisionEnabled=QueryOnly,ObjectTypeName="Pawn",CustomResponses=((Channel="WorldStatic",Response=ECR_Block),(Channel="Pawn",Response=ECR_Ignore),(Channel="Visibility",Response=ECR_Ignore),(Channel="WorldDynamic",Response=ECR_Ignore),(Channel="Camera",Response=ECR_Ignore),(Channel="PhysicsBody",Response=ECR_Ignore),(Channel="Vehicle",Response=ECR_Ignore),(Channel="Destructible",Response=ECR_Ignore)),HelpMessage="Pawn object that ignores all other actors except WorldStatic.",bCanModify=False)
-Profiles=(Name="CharacterMesh",CollisionEnabled=QueryOnly,ObjectTypeName="Pawn",CustomResponses=((Channel="Pawn",Response=ECR_Ignore),(Channel="Vehicle",Response=ECR_Ignore),(Channel="Visibility",Response=ECR_Ignore)),HelpMessage="Pawn object that is used for Character Mesh. All other channels will be set to default.",bCanModify=False)
-Profiles=(Name="PhysicsActor",CollisionEnabled=QueryAndPhysics,ObjectTypeName="PhysicsBody",CustomResponses=,HelpMessage="Simulating actors",bCanModify=False)
-Profiles=(Name="Destructible",CollisionEnabled=QueryAndPhysics,ObjectTypeName="Destructible",CustomResponses=,HelpMessage="Destructible actors",bCanModify=False)
-Profiles=(Name="InvisibleWall",CollisionEnabled=QueryAndPhysics,ObjectTypeName="WorldStatic",CustomResponses=((Channel="Visibility",Response=ECR_Ignore)),HelpMessage="WorldStatic object that is invisible.",bCanModify=False)
-Profiles=(Name="InvisibleWallDynamic",CollisionEnabled=QueryAndPhysics,ObjectTypeName="WorldDynamic",CustomResponses=((Channel="Visibility",Response=ECR_Ignore)),HelpMessage="WorldDynamic object that is invisible.",bCanModify=False)
-Profiles=(Name="Trigger",CollisionEnabled=QueryOnly,ObjectTypeName="WorldDynamic",CustomResponses=((Channel="WorldStatic",Response=ECR_Overlap),(Channel="Pawn",Response=ECR_Overlap),(Channel="Visibility",Response=ECR_Ignore),(Channel="WorldDynamic",Response=ECR_Overlap),(Channel="Camera",Response=ECR_Overlap),(Channel="PhysicsBody",Response=ECR_Overlap),(Channel="Vehicle",Response=ECR_Overlap),(Channel="Destructible",Response=ECR_Overlap)),HelpMessage="WorldDynamic object that is used for trigger. All other channels will be set to default.",bCanModify=False)
-Profiles=(Name="Ragdoll",CollisionEnabled=QueryAndPhysics,ObjectTypeName="PhysicsBody",CustomResponses=((Channel="Pawn",Response=ECR_Ignore),(Channel="Visibility",Response=ECR_Ignore)),HelpMessage="Simulating Skeletal Mesh Component. All other channels will be set to default.",bCanModify=False)
-Profiles=(Name="Vehicle",CollisionEnabled=QueryAndPhysics,ObjectTypeName="Vehicle",CustomResponses=,HelpMessage="Vehicle object that blocks Vehicle, WorldStatic, and WorldDynamic. All other channels will be set to default.",bCanModify=False)
-Profiles=(Name="UI",CollisionEnabled=QueryOnly,ObjectTypeName="WorldDynamic",CustomResponses=((Channel="WorldStatic",Response=ECR_Overlap),(Channel="Pawn",Response=ECR_Overlap),(Channel="Visibility",Response=ECR_Block),(Channel="WorldDynamic",Response=ECR_Overlap),(Channel="Camera",Response=ECR_Overlap),(Channel="PhysicsBody",Response=ECR_Overlap),(Channel="Vehicle",Response=ECR_Overlap),(Channel="Destructible",Response=ECR_Overlap)),HelpMessage="WorldStatic object that overlaps all actors by default. All new custom channels will use its own default response. ",bCanModify=False)
+Profiles=(Name="NoCollision",CollisionEnabled=NoCollision,bCanModify=False,ObjectTypeName="WorldStatic",CustomResponses=((Channel="WorldStatic",Response=ECR_Ignore),(Channel="WorldDynamic",Response=ECR_Ignore),(Channel="Pawn",Response=ECR_Ignore),(Channel="Visibility",Response=ECR_Ignore),(Channel="Camera",Response=ECR_Ignore),(Channel="PhysicsBody",Response=ECR_Ignore),(Channel="Vehicle",Response=ECR_Ignore),(Channel="Destructible",Response=ECR_Ignore),(Channel="PlayerProjectile",Response=ECR_Ignore),(Channel="Player",Response=ECR_Ignore),(Channel="Monster",Response=ECR_Ignore),(Channel="Trap",Response=ECR_Ignore),(Channel="TrapProjectile",Response=ECR_Ignore),(Channel="MonsterProjectile",Response=ECR_Ignore),(Channel="Trigger",Response=ECR_Ignore),(Channel="OutOfBounds",Response=ECR_Ignore)),HelpMessage="No collision")
+Profiles=(Name="BlockAll",CollisionEnabled=QueryAndPhysics,bCanModify=False,ObjectTypeName="WorldStatic",CustomResponses=((Channel="Trap"),(Channel="Trigger"),(Channel="Projectile.Monster",Response=ECR_Overlap),(Channel="Projectile.Player",Response=ECR_Overlap),(Channel="Projectile.Other",Response=ECR_Overlap)),HelpMessage="WorldStatic object that blocks all actors by default. All new custom channels will use its own default response. ")
+Profiles=(Name="OverlapAll",CollisionEnabled=QueryOnly,bCanModify=False,ObjectTypeName="WorldStatic",CustomResponses=((Channel="WorldStatic",Response=ECR_Overlap),(Channel="WorldDynamic",Response=ECR_Overlap),(Channel="Pawn",Response=ECR_Overlap),(Channel="Visibility",Response=ECR_Overlap),(Channel="Camera",Response=ECR_Overlap),(Channel="PhysicsBody",Response=ECR_Overlap),(Channel="Vehicle",Response=ECR_Overlap),(Channel="Destructible",Response=ECR_Overlap),(Channel="PlayerProjectile",Response=ECR_Overlap),(Channel="Player",Response=ECR_Overlap),(Channel="Monster",Response=ECR_Overlap),(Channel="TrapProjectile",Response=ECR_Overlap),(Channel="MonsterProjectile",Response=ECR_Overlap),(Channel="OutOfBounds",Response=ECR_Overlap)),HelpMessage="WorldStatic object that overlaps all actors by default. All new custom channels will use its own default response. ")
+Profiles=(Name="BlockAllDynamic",CollisionEnabled=QueryAndPhysics,bCanModify=False,ObjectTypeName="WorldDynamic",CustomResponses=((Channel="Trap"),(Channel="Trigger"),(Channel="Projectile.Monster",Response=ECR_Overlap),(Channel="Projectile.Player",Response=ECR_Overlap),(Channel="Projectile.Other",Response=ECR_Overlap)),HelpMessage="WorldDynamic object that blocks all actors by default. All new custom channels will use its own default response. ")
+Profiles=(Name="OverlapAllDynamic",CollisionEnabled=QueryOnly,bCanModify=False,ObjectTypeName="WorldDynamic",CustomResponses=((Channel="WorldStatic",Response=ECR_Overlap),(Channel="WorldDynamic",Response=ECR_Overlap),(Channel="Pawn",Response=ECR_Overlap),(Channel="Visibility",Response=ECR_Overlap),(Channel="Camera",Response=ECR_Overlap),(Channel="PhysicsBody",Response=ECR_Overlap),(Channel="Vehicle",Response=ECR_Overlap),(Channel="Destructible",Response=ECR_Overlap),(Channel="PlayerProjectile",Response=ECR_Overlap),(Channel="Player",Response=ECR_Overlap),(Channel="Monster",Response=ECR_Overlap),(Channel="TrapProjectile",Response=ECR_Overlap),(Channel="MonsterProjectile",Response=ECR_Overlap),(Channel="OutOfBounds",Response=ECR_Overlap)),HelpMessage="WorldDynamic object that overlaps all actors by default. All new custom channels will use its own default response. ")
+Profiles=(Name="IgnoreOnlyPawn",CollisionEnabled=QueryOnly,bCanModify=False,ObjectTypeName="WorldDynamic",CustomResponses=((Channel="Pawn",Response=ECR_Ignore),(Channel="Camera",Response=ECR_Ignore),(Channel="Vehicle",Response=ECR_Ignore)),HelpMessage="WorldDynamic object that ignores Pawn and Vehicle. All other channels will be set to default.")
+Profiles=(Name="OverlapOnlyPawn",CollisionEnabled=QueryOnly,bCanModify=False,ObjectTypeName="WorldDynamic",CustomResponses=((Channel="Pawn",Response=ECR_Overlap),(Channel="Camera",Response=ECR_Ignore),(Channel="Vehicle",Response=ECR_Overlap)),HelpMessage="WorldDynamic object that overlaps Pawn, Camera, and Vehicle. All other channels will be set to default. ")
+Profiles=(Name="Pawn",CollisionEnabled=QueryAndPhysics,bCanModify=False,ObjectTypeName="Pawn",CustomResponses=((Channel="Visibility",Response=ECR_Ignore),(Channel="Camera",Response=ECR_Ignore)),HelpMessage="Pawn object. Can be used for capsule of any playerable character or AI. ")
+Profiles=(Name="Spectator",CollisionEnabled=QueryOnly,bCanModify=False,ObjectTypeName="Pawn",CustomResponses=((Channel="WorldDynamic",Response=ECR_Ignore),(Channel="Pawn",Response=ECR_Ignore),(Channel="Visibility",Response=ECR_Ignore),(Channel="Camera",Response=ECR_Ignore),(Channel="PhysicsBody",Response=ECR_Ignore),(Channel="Vehicle",Response=ECR_Ignore),(Channel="Destructible",Response=ECR_Ignore)),HelpMessage="Pawn object that ignores all other actors except WorldStatic.")
+Profiles=(Name="CharacterMesh",CollisionEnabled=NoCollision,bCanModify=False,ObjectTypeName="Pawn",CustomResponses=((Channel="Pawn",Response=ECR_Ignore),(Channel="Visibility",Response=ECR_Ignore),(Channel="Camera",Response=ECR_Ignore),(Channel="Vehicle",Response=ECR_Ignore)),HelpMessage="Pawn object that is used for Character Mesh. All other channels will be set to default.")
+Profiles=(Name="PhysicsActor",CollisionEnabled=QueryAndPhysics,bCanModify=False,ObjectTypeName="PhysicsBody",CustomResponses=((Channel="Camera",Response=ECR_Ignore)),HelpMessage="Simulating actors")
+Profiles=(Name="Destructible",CollisionEnabled=QueryOnly,bCanModify=False,ObjectTypeName="Destructible",CustomResponses=((Channel="WorldStatic",Response=ECR_Ignore),(Channel="WorldDynamic",Response=ECR_Ignore),(Channel="Pawn",Response=ECR_Ignore),(Channel="Visibility",Response=ECR_Ignore),(Channel="Camera",Response=ECR_Ignore),(Channel="PhysicsBody",Response=ECR_Ignore),(Channel="Vehicle",Response=ECR_Ignore),(Channel="Destructible",Response=ECR_Ignore),(Channel="Player",Response=ECR_Ignore),(Channel="Monster",Response=ECR_Ignore),(Channel="Damage.Monster"),(Channel="Damage.All"),(Channel="Damage.Player"),(Channel="Trap",Response=ECR_Ignore),(Channel="TrapProjectile",Response=ECR_Ignore),(Channel="MonsterProjectile",Response=ECR_Ignore),(Channel="Trigger",Response=ECR_Ignore),(Channel="OutOfBounds",Response=ECR_Ignore)),HelpMessage="Destructible actors")
+Profiles=(Name="InvisibleWall",CollisionEnabled=QueryOnly,bCanModify=False,ObjectTypeName="WorldStatic",CustomResponses=((Channel="Visibility",Response=ECR_Ignore),(Channel="Trap"),(Channel="Trigger")),HelpMessage="WorldStatic object that is invisible.")
+Profiles=(Name="InvisibleWallDynamic",CollisionEnabled=QueryOnly,bCanModify=False,ObjectTypeName="WorldDynamic",CustomResponses=((Channel="Visibility",Response=ECR_Ignore),(Channel="Trap"),(Channel="Trigger")),HelpMessage="WorldDynamic object that is invisible.")
+Profiles=(Name="Trigger",CollisionEnabled=QueryOnly,bCanModify=False,ObjectTypeName="Trigger",CustomResponses=((Channel="WorldStatic",Response=ECR_Ignore),(Channel="WorldDynamic",Response=ECR_Ignore),(Channel="Pawn",Response=ECR_Ignore),(Channel="Visibility",Response=ECR_Ignore),(Channel="Camera",Response=ECR_Ignore),(Channel="PhysicsBody",Response=ECR_Ignore),(Channel="Vehicle",Response=ECR_Ignore),(Channel="Destructible",Response=ECR_Ignore),(Channel="PlayerProjectile",Response=ECR_Ignore),(Channel="Player",Response=ECR_Overlap),(Channel="Monster",Response=ECR_Ignore),(Channel="Trap",Response=ECR_Ignore),(Channel="TrapProjectile",Response=ECR_Ignore),(Channel="MonsterProjectile",Response=ECR_Ignore),(Channel="Trigger",Response=ECR_Ignore),(Channel="OutOfBounds",Response=ECR_Ignore)),HelpMessage="WorldDynamic object that is used for trigger. All other channels will be set to default.")
+Profiles=(Name="Ragdoll",CollisionEnabled=PhysicsOnly,bCanModify=False,ObjectTypeName="Pawn",CustomResponses=((Channel="WorldDynamic",Response=ECR_Ignore),(Channel="Pawn",Response=ECR_Ignore),(Channel="Visibility",Response=ECR_Ignore),(Channel="Camera",Response=ECR_Ignore),(Channel="PhysicsBody",Response=ECR_Ignore),(Channel="Vehicle",Response=ECR_Ignore),(Channel="Destructible",Response=ECR_Ignore),(Channel="PlayerProjectile",Response=ECR_Ignore),(Channel="Player",Response=ECR_Ignore),(Channel="Monster",Response=ECR_Ignore),(Channel="Trap",Response=ECR_Ignore),(Channel="TrapProjectile",Response=ECR_Ignore),(Channel="MonsterProjectile",Response=ECR_Ignore),(Channel="Trigger",Response=ECR_Ignore),(Channel="OutOfBounds",Response=ECR_Ignore)),HelpMessage="Simulating Skeletal Mesh Component. All other channels will be set to default.")
+Profiles=(Name="Vehicle",CollisionEnabled=QueryOnly,bCanModify=False,ObjectTypeName="Vehicle",CustomResponses=((Channel="Camera",Response=ECR_Ignore)),HelpMessage="Vehicle object that blocks Vehicle, WorldStatic, and WorldDynamic. All other channels will be set to default.")
+Profiles=(Name="UI",CollisionEnabled=QueryOnly,bCanModify=False,ObjectTypeName="WorldDynamic",CustomResponses=((Channel="WorldStatic",Response=ECR_Overlap),(Channel="WorldDynamic",Response=ECR_Overlap),(Channel="Pawn",Response=ECR_Overlap),(Channel="Camera",Response=ECR_Overlap),(Channel="PhysicsBody",Response=ECR_Overlap),(Channel="Vehicle",Response=ECR_Overlap),(Channel="Destructible",Response=ECR_Overlap)),HelpMessage="WorldStatic object that overlaps all actors by default. All new custom channels will use its own default response. ")
+Profiles=(Name="Player",CollisionEnabled=QueryOnly,bCanModify=True,ObjectTypeName="Player",CustomResponses=((Channel="Pawn",Response=ECR_Ignore),(Channel="Visibility",Response=ECR_Ignore),(Channel="Camera",Response=ECR_Ignore),(Channel="PhysicsBody",Response=ECR_Ignore),(Channel="Vehicle",Response=ECR_Ignore),(Channel="Destructible",Response=ECR_Ignore),(Channel="Player",Response=ECR_Ignore),(Channel="Damage.All",Response=ECR_Overlap),(Channel="Damage.Player",Response=ECR_Overlap),(Channel="TrapProjectile",Response=ECR_Overlap),(Channel="Projectile.Monster",Response=ECR_Overlap),(Channel="Projectile.Other",Response=ECR_Overlap)),HelpMessage="Needs description")
+Profiles=(Name="Monster",CollisionEnabled=QueryOnly,bCanModify=True,ObjectTypeName="Monster",CustomResponses=((Channel="Pawn",Response=ECR_Ignore),(Channel="Visibility",Response=ECR_Ignore),(Channel="Camera",Response=ECR_Ignore),(Channel="PhysicsBody",Response=ECR_Ignore),(Channel="Vehicle",Response=ECR_Ignore),(Channel="Destructible",Response=ECR_Ignore),(Channel="Damage.Monster",Response=ECR_Overlap),(Channel="Damage.All",Response=ECR_Overlap),(Channel="TrapProjectile",Response=ECR_Overlap),(Channel="Projectile.Player",Response=ECR_Overlap),(Channel="Projectile.Other",Response=ECR_Overlap)),HelpMessage="Needs description")
+Profiles=(Name="Trap",CollisionEnabled=QueryOnly,bCanModify=True,ObjectTypeName="Trap",CustomResponses=((Channel="WorldStatic",Response=ECR_Ignore),(Channel="WorldDynamic",Response=ECR_Ignore),(Channel="Pawn",Response=ECR_Ignore),(Channel="Visibility",Response=ECR_Ignore),(Channel="Camera",Response=ECR_Ignore),(Channel="PhysicsBody",Response=ECR_Ignore),(Channel="Vehicle",Response=ECR_Ignore),(Channel="Destructible",Response=ECR_Ignore),(Channel="PlayerProjectile",Response=ECR_Ignore),(Channel="Player",Response=ECR_Overlap),(Channel="Monster",Response=ECR_Overlap),(Channel="Trap",Response=ECR_Ignore),(Channel="TrapProjectile",Response=ECR_Ignore),(Channel="MonsterProjectile",Response=ECR_Ignore),(Channel="Trigger",Response=ECR_Ignore),(Channel="OutOfBounds",Response=ECR_Ignore)),HelpMessage="Needs description")
+Profiles=(Name="TrapProjectile",CollisionEnabled=QueryOnly,bCanModify=True,ObjectTypeName="TrapProjectile",CustomResponses=((Channel="WorldDynamic",Response=ECR_Ignore),(Channel="Pawn",Response=ECR_Ignore),(Channel="Visibility",Response=ECR_Ignore),(Channel="Camera",Response=ECR_Ignore),(Channel="PhysicsBody",Response=ECR_Ignore),(Channel="Vehicle",Response=ECR_Ignore),(Channel="Destructible",Response=ECR_Ignore),(Channel="PlayerProjectile",Response=ECR_Ignore),(Channel="Player",Response=ECR_Overlap),(Channel="Monster",Response=ECR_Overlap),(Channel="Trap",Response=ECR_Ignore),(Channel="TrapProjectile",Response=ECR_Ignore),(Channel="MonsterProjectile",Response=ECR_Ignore),(Channel="Trigger",Response=ECR_Ignore)),HelpMessage="Needs description")
+Profiles=(Name="OutOfBounds",CollisionEnabled=QueryAndPhysics,bCanModify=True,ObjectTypeName="OutOfBounds",CustomResponses=((Channel="WorldStatic",Response=ECR_Ignore),(Channel="WorldDynamic",Response=ECR_Ignore),(Channel="Pawn",Response=ECR_Ignore),(Channel="Visibility",Response=ECR_Ignore),(Channel="Camera",Response=ECR_Ignore),(Channel="PhysicsBody",Response=ECR_Ignore),(Channel="Vehicle",Response=ECR_Ignore),(Channel="Destructible",Response=ECR_Ignore),(Channel="Trap",Response=ECR_Ignore),(Channel="Trigger",Response=ECR_Ignore),(Channel="Projectile.Monster"),(Channel="Projectile.Player"),(Channel="Projectile.Other"),(Channel="OutOfBounds",Response=ECR_Ignore)),HelpMessage="Needs description")
+Profiles=(Name="Corpse",CollisionEnabled=QueryOnly,bCanModify=True,ObjectTypeName="Pawn",CustomResponses=((Channel="WorldDynamic",Response=ECR_Ignore),(Channel="Pawn",Response=ECR_Ignore),(Channel="Visibility",Response=ECR_Ignore),(Channel="Camera",Response=ECR_Ignore),(Channel="PhysicsBody",Response=ECR_Ignore),(Channel="Vehicle",Response=ECR_Ignore),(Channel="Destructible",Response=ECR_Ignore),(Channel="Corpse",Response=ECR_Overlap),(Channel="Player",Response=ECR_Ignore),(Channel="Monster",Response=ECR_Ignore),(Channel="Trap",Response=ECR_Ignore),(Channel="TrapProjectile",Response=ECR_Ignore),(Channel="Trigger",Response=ECR_Ignore),(Channel="OutOfBounds",Response=ECR_Ignore)),HelpMessage="Needs description")
+DefaultChannelResponses=(Channel=ECC_GameTraceChannel1,DefaultResponse=ECR_Ignore,bTraceType=True,bStaticObject=False,Name="Corpse")
+DefaultChannelResponses=(Channel=ECC_GameTraceChannel2,DefaultResponse=ECR_Block,bTraceType=False,bStaticObject=False,Name="Player")
+DefaultChannelResponses=(Channel=ECC_GameTraceChannel3,DefaultResponse=ECR_Block,bTraceType=False,bStaticObject=False,Name="Monster")
+DefaultChannelResponses=(Channel=ECC_GameTraceChannel4,DefaultResponse=ECR_Ignore,bTraceType=True,bStaticObject=False,Name="Damage.Monster")
+DefaultChannelResponses=(Channel=ECC_GameTraceChannel5,DefaultResponse=ECR_Ignore,bTraceType=True,bStaticObject=False,Name="Damage.All")
+DefaultChannelResponses=(Channel=ECC_GameTraceChannel7,DefaultResponse=ECR_Ignore,bTraceType=True,bStaticObject=False,Name="Damage.Player")
+DefaultChannelResponses=(Channel=ECC_GameTraceChannel8,DefaultResponse=ECR_Overlap,bTraceType=False,bStaticObject=False,Name="Trap")
+DefaultChannelResponses=(Channel=ECC_GameTraceChannel9,DefaultResponse=ECR_Block,bTraceType=False,bStaticObject=False,Name="TrapProjectile")
+DefaultChannelResponses=(Channel=ECC_GameTraceChannel11,DefaultResponse=ECR_Overlap,bTraceType=False,bStaticObject=False,Name="Trigger")
+DefaultChannelResponses=(Channel=ECC_GameTraceChannel12,DefaultResponse=ECR_Ignore,bTraceType=True,bStaticObject=False,Name="Projectile.Monster")
+DefaultChannelResponses=(Channel=ECC_GameTraceChannel13,DefaultResponse=ECR_Ignore,bTraceType=True,bStaticObject=False,Name="Projectile.Player")
+DefaultChannelResponses=(Channel=ECC_GameTraceChannel14,DefaultResponse=ECR_Ignore,bTraceType=True,bStaticObject=False,Name="Projectile.Other")
+DefaultChannelResponses=(Channel=ECC_GameTraceChannel15,DefaultResponse=ECR_Block,bTraceType=False,bStaticObject=False,Name="OutOfBounds")
+EditProfiles=(Name="Ragdoll",CustomResponses=((Channel="WorldStatic"),(Channel="WorldDynamic",Response=ECR_Ignore),(Channel="Camera",Response=ECR_Ignore),(Channel="PhysicsBody",Response=ECR_Ignore),(Channel="Vehicle",Response=ECR_Ignore),(Channel="Destructible",Response=ECR_Ignore),(Channel="EngineTraceChannel2",Response=ECR_Ignore),(Channel="EngineTraceChannel3",Response=ECR_Ignore),(Channel="EngineTraceChannel4",Response=ECR_Ignore),(Channel="EngineTraceChannel5",Response=ECR_Ignore),(Channel="EngineTraceChannel6",Response=ECR_Ignore),(Channel="PlayerProjectile",Response=ECR_Ignore),(Channel="Player",Response=ECR_Ignore),(Channel="Monster",Response=ECR_Ignore),(Channel="Pickup",Response=ECR_Ignore),(Channel="Trap",Response=ECR_Ignore),(Channel="TrapProjectile",Response=ECR_Ignore),(Channel="MonsterProjectile",Response=ECR_Ignore),(Channel="Trigger",Response=ECR_Ignore),(Channel="OutOfBounds",Response=ECR_Ignore),(Channel="GameTraceChannel16",Response=ECR_Ignore),(Channel="GameTraceChannel17",Response=ECR_Ignore),(Channel="GameTraceChannel18",Response=ECR_Ignore),(Channel="Decor",Response=ECR_Ignore),(Channel="Corpse",Response=ECR_Ignore)))
+EditProfiles=(Name="NoCollision",CustomResponses=((Channel="WorldStatic",Response=ECR_Ignore),(Channel="WorldDynamic",Response=ECR_Ignore),(Channel="Pawn",Response=ECR_Ignore),(Channel="PhysicsBody",Response=ECR_Ignore),(Channel="Vehicle",Response=ECR_Ignore),(Channel="Destructible",Response=ECR_Ignore),(Channel="EngineTraceChannel2",Response=ECR_Ignore),(Channel="EngineTraceChannel3",Response=ECR_Ignore),(Channel="EngineTraceChannel4",Response=ECR_Ignore),(Channel="EngineTraceChannel5",Response=ECR_Ignore),(Channel="EngineTraceChannel6",Response=ECR_Ignore),(Channel="PlayerProjectile",Response=ECR_Ignore),(Channel="Player",Response=ECR_Ignore),(Channel="Monster",Response=ECR_Ignore),(Channel="Wall",Response=ECR_Ignore),(Channel="Floor",Response=ECR_Ignore),(Channel="Pickup",Response=ECR_Ignore),(Channel="Trap",Response=ECR_Ignore),(Channel="TrapProjectile",Response=ECR_Ignore),(Channel="MonsterProjectile",Response=ECR_Ignore),(Channel="Trigger",Response=ECR_Ignore),(Channel="OutOfBounds",Response=ECR_Ignore),(Channel="GameTraceChannel17",Response=ECR_Ignore),(Channel="GameTraceChannel18",Response=ECR_Ignore),(Channel="Decor",Response=ECR_Ignore)))
+EditProfiles=(Name="BlockAll",CustomResponses=((Channel="EngineTraceChannel1"),(Channel="Screen"),(Channel="Pickup"),(Channel="Trap"),(Channel="Trigger"),(Channel="PlayerAttack"),(Channel="MonsterAttack"),(Channel="Breakable"),(Channel="Ragdoll"),(Channel="Camera"),(Channel="Damage.Monster",Response=ECR_Ignore),(Channel="Damage.All",Response=ECR_Ignore),(Channel="Damage.Player",Response=ECR_Ignore),(Channel="Projectile.Monster"),(Channel="Projectile.Player"),(Channel="Projectile.Other"),(Channel="Projectile.Thrown",Response=ECR_Overlap)))
+EditProfiles=(Name="OverlapAll",CustomResponses=((Channel="EngineTraceChannel1",Response=ECR_Overlap),(Channel="EngineTraceChannel2",Response=ECR_Overlap),(Channel="EngineTraceChannel3",Response=ECR_Overlap),(Channel="EngineTraceChannel4",Response=ECR_Overlap),(Channel="EngineTraceChannel5",Response=ECR_Overlap),(Channel="EngineTraceChannel6",Response=ECR_Overlap),(Channel="PlayerProjectile",Response=ECR_Overlap),(Channel="Player",Response=ECR_Overlap),(Channel="Monster",Response=ECR_Overlap),(Channel="Wall",Response=ECR_Overlap),(Channel="Screen",Response=ECR_Overlap),(Channel="Floor",Response=ECR_Overlap),(Channel="TrapProjectile",Response=ECR_Overlap),(Channel="MonsterProjectile",Response=ECR_Overlap),(Channel="PlayerAttack",Response=ECR_Overlap),(Channel="MonsterAttack",Response=ECR_Overlap),(Channel="Breakable",Response=ECR_Overlap),(Channel="OutOfBounds",Response=ECR_Overlap),(Channel="Ragdoll",Response=ECR_Overlap),(Channel="GameTraceChannel17",Response=ECR_Overlap),(Channel="GameTraceChannel18",Response=ECR_Overlap),(Channel="Decor",Response=ECR_Overlap),(Channel="Camera",Response=ECR_Overlap),(Channel="Damage.Monster",Response=ECR_Ignore),(Channel="Damage.All",Response=ECR_Ignore),(Channel="Damage.Player",Response=ECR_Ignore)))
+EditProfiles=(Name="OverlapAllDynamic",CustomResponses=((Channel="EngineTraceChannel1",Response=ECR_Overlap),(Channel="EngineTraceChannel2",Response=ECR_Overlap),(Channel="EngineTraceChannel3",Response=ECR_Overlap),(Channel="EngineTraceChannel4",Response=ECR_Overlap),(Channel="EngineTraceChannel5",Response=ECR_Overlap),(Channel="EngineTraceChannel6",Response=ECR_Overlap),(Channel="PlayerProjectile",Response=ECR_Overlap),(Channel="Player",Response=ECR_Overlap),(Channel="Monster",Response=ECR_Overlap),(Channel="Wall",Response=ECR_Overlap),(Channel="Screen",Response=ECR_Overlap),(Channel="Floor",Response=ECR_Overlap),(Channel="TrapProjectile",Response=ECR_Overlap),(Channel="MonsterProjectile",Response=ECR_Overlap),(Channel="PlayerAttack",Response=ECR_Overlap),(Channel="MonsterAttack",Response=ECR_Overlap),(Channel="Breakable",Response=ECR_Overlap),(Channel="OutOfBounds",Response=ECR_Overlap),(Channel="Ragdoll",Response=ECR_Overlap),(Channel="GameTraceChannel17",Response=ECR_Overlap),(Channel="GameTraceChannel18",Response=ECR_Overlap),(Channel="Decor",Response=ECR_Overlap),(Channel="Camera",Response=ECR_Overlap),(Channel="Damage.Monster",Response=ECR_Ignore),(Channel="Damage.All",Response=ECR_Ignore),(Channel="Damage.Player",Response=ECR_Ignore)))
+EditProfiles=(Name="BlockAllDynamic",CustomResponses=((Channel="EngineTraceChannel1"),(Channel="Screen"),(Channel="Pickup"),(Channel="Trap"),(Channel="Trigger"),(Channel="PlayerAttack"),(Channel="MonsterAttack"),(Channel="Breakable"),(Channel="Ragdoll"),(Channel="Camera"),(Channel="Damage.Monster",Response=ECR_Ignore),(Channel="Damage.All",Response=ECR_Ignore),(Channel="Damage.Player",Response=ECR_Ignore),(Channel="Projectile.Monster"),(Channel="Projectile.Player"),(Channel="Projectile.Other")))
+EditProfiles=(Name="InvisibleWall",CustomResponses=((Channel="EngineTraceChannel1"),(Channel="Screen"),(Channel="Pickup"),(Channel="Trap"),(Channel="Trigger"),(Channel="PlayerAttack"),(Channel="MonsterAttack"),(Channel="Breakable"),(Channel="Ragdoll"),(Channel="Camera")))
+EditProfiles=(Name="InvisibleWallDynamic",CustomResponses=((Channel="EngineTraceChannel1"),(Channel="Screen"),(Channel="Pickup"),(Channel="Trap"),(Channel="Trigger"),(Channel="PlayerAttack"),(Channel="MonsterAttack"),(Channel="Breakable"),(Channel="Ragdoll")))
+EditProfiles=(Name="IgnoreOnlyPawn",CustomResponses=((Channel="Camera",Response=ECR_Ignore)))
+EditProfiles=(Name="Pawn",CustomResponses=((Channel="Camera",Response=ECR_Ignore)))
+EditProfiles=(Name="CharacterMesh",CustomResponses=((Channel="Camera",Response=ECR_Ignore),(Channel="WorldStatic",Response=ECR_Ignore),(Channel="WorldDynamic",Response=ECR_Ignore),(Channel="PhysicsBody",Response=ECR_Ignore),(Channel="Destructible",Response=ECR_Ignore),(Channel="EngineTraceChannel2",Response=ECR_Ignore),(Channel="EngineTraceChannel3",Response=ECR_Ignore),(Channel="EngineTraceChannel4",Response=ECR_Ignore),(Channel="EngineTraceChannel5",Response=ECR_Ignore),(Channel="EngineTraceChannel6",Response=ECR_Ignore),(Channel="Player",Response=ECR_Ignore),(Channel="Monster",Response=ECR_Ignore),(Channel="GameTraceChannel6",Response=ECR_Ignore),(Channel="Trap",Response=ECR_Ignore),(Channel="TrapProjectile",Response=ECR_Ignore),(Channel="GameTraceChannel10",Response=ECR_Ignore),(Channel="Trigger",Response=ECR_Ignore),(Channel="OutOfBounds",Response=ECR_Ignore),(Channel="GameTraceChannel16",Response=ECR_Ignore),(Channel="GameTraceChannel17",Response=ECR_Ignore),(Channel="GameTraceChannel18",Response=ECR_Ignore)))
+EditProfiles=(Name="PhysicsActor",CustomResponses=((Channel="Camera",Response=ECR_Ignore)))
+EditProfiles=(Name="Destructible",CustomResponses=((Channel="Camera",Response=ECR_Ignore),(Channel="WorldStatic",Response=ECR_Ignore),(Channel="WorldDynamic",Response=ECR_Ignore),(Channel="Pawn",Response=ECR_Ignore),(Channel="Visibility",Response=ECR_Ignore),(Channel="PhysicsBody",Response=ECR_Ignore),(Channel="Vehicle",Response=ECR_Ignore),(Channel="Destructible",Response=ECR_Ignore),(Channel="EngineTraceChannel2",Response=ECR_Ignore),(Channel="EngineTraceChannel3",Response=ECR_Ignore),(Channel="EngineTraceChannel4",Response=ECR_Ignore),(Channel="EngineTraceChannel5",Response=ECR_Ignore),(Channel="EngineTraceChannel6",Response=ECR_Ignore),(Channel="Player",Response=ECR_Ignore),(Channel="Monster",Response=ECR_Ignore),(Channel="Damage.Monster",Response=ECR_Overlap),(Channel="GameTraceChannel5",Response=ECR_Ignore),(Channel="GameTraceChannel7",Response=ECR_Ignore),(Channel="Trap",Response=ECR_Ignore),(Channel="TrapProjectile",Response=ECR_Ignore),(Channel="MonsterProjectile",Response=ECR_Ignore),(Channel="Trigger",Response=ECR_Overlap),(Channel="GameTraceChannel12",Response=ECR_Ignore),(Channel="GameTraceChannel13",Response=ECR_Ignore),(Channel="OutOfBounds",Response=ECR_Ignore),(Channel="GameTraceChannel17",Response=ECR_Ignore),(Channel="GameTraceChannel18",Response=ECR_Ignore),(Channel="Damage.All",Response=ECR_Ignore),(Channel="Damage.Player",Response=ECR_Ignore),(Channel="Projectile.Player",Response=ECR_Overlap),(Channel="Projectile.Monster",Response=ECR_Ignore),(Channel="Projectile.Other",Response=ECR_Ignore),(Channel="PlayerProjectile",Response=ECR_Ignore)))
+EditProfiles=(Name="Trigger",CustomResponses=((Channel="Camera",Response=ECR_Ignore),(Channel="WorldStatic",Response=ECR_Ignore),(Channel="WorldDynamic",Response=ECR_Ignore),(Channel="Pawn",Response=ECR_Ignore),(Channel="PhysicsBody",Response=ECR_Ignore),(Channel="Vehicle",Response=ECR_Ignore),(Channel="Destructible",Response=ECR_Ignore),(Channel="EngineTraceChannel2",Response=ECR_Ignore),(Channel="EngineTraceChannel3",Response=ECR_Ignore),(Channel="EngineTraceChannel4",Response=ECR_Ignore),(Channel="EngineTraceChannel5",Response=ECR_Ignore),(Channel="EngineTraceChannel6",Response=ECR_Ignore),(Channel="PlayerProjectile",Response=ECR_Ignore),(Channel="Player",Response=ECR_Overlap),(Channel="Monster",Response=ECR_Ignore),(Channel="GameTraceChannel5",Response=ECR_Ignore),(Channel="GameTraceChannel7",Response=ECR_Ignore),(Channel="Trap",Response=ECR_Ignore),(Channel="TrapProjectile",Response=ECR_Ignore),(Channel="MonsterProjectile",Response=ECR_Ignore),(Channel="Trigger",Response=ECR_Ignore),(Channel="GameTraceChannel12",Response=ECR_Ignore),(Channel="GameTraceChannel13",Response=ECR_Ignore),(Channel="GameTraceChannel14",Response=ECR_Ignore),(Channel="OutOfBounds",Response=ECR_Ignore),(Channel="GameTraceChannel16",Response=ECR_Ignore),(Channel="GameTraceChannel17",Response=ECR_Ignore),(Channel="GameTraceChannel18",Response=ECR_Ignore)))
+EditProfiles=(Name="Vehicle",CustomResponses=((Channel="Camera",Response=ECR_Ignore)))
-ProfileRedirects=(OldName="BlockingVolume",NewName="InvisibleWall")
-ProfileRedirects=(OldName="InterpActor",NewName="IgnoreOnlyPawn")
-ProfileRedirects=(OldName="StaticMeshComponent",NewName="BlockAllDynamic")
-ProfileRedirects=(OldName="SkeletalMeshActor",NewName="PhysicsActor")
-ProfileRedirects=(OldName="InvisibleActor",NewName="InvisibleWallDynamic")
+ProfileRedirects=(OldName="BlockingVolume",NewName="InvisibleWall")
+ProfileRedirects=(OldName="InterpActor",NewName="IgnoreOnlyPawn")
+ProfileRedirects=(OldName="StaticMeshComponent",NewName="BlockAllDynamic")
+ProfileRedirects=(OldName="SkeletalMeshActor",NewName="PhysicsActor")
+ProfileRedirects=(OldName="InvisibleActor",NewName="InvisibleWallDynamic")
-CollisionChannelRedirects=(OldName="Static",NewName="WorldStatic")
-CollisionChannelRedirects=(OldName="Dynamic",NewName="WorldDynamic")
-CollisionChannelRedirects=(OldName="VehicleMovement",NewName="Vehicle")
-CollisionChannelRedirects=(OldName="PawnMovement",NewName="Pawn")
+CollisionChannelRedirects=(OldName="Static",NewName="WorldStatic")
+CollisionChannelRedirects=(OldName="Dynamic",NewName="WorldDynamic")
+CollisionChannelRedirects=(OldName="VehicleMovement",NewName="Vehicle")
+CollisionChannelRedirects=(OldName="PawnMovement",NewName="Pawn")
+CollisionChannelRedirects=(OldName="Projectile",NewName="PlayerProjectile")
+CollisionChannelRedirects=(OldName="CanDamage",NewName="Enemy")
+CollisionChannelRedirects=(OldName="PlayerTrigger",NewName="Trigger")
+CollisionChannelRedirects=(OldName="Damage",NewName="Damage.Monster")
+CollisionChannelRedirects=(OldName="Projectile.All",NewName="Projectile.Other")

It does look like I’m missing ECC_GameTraceChannel10. So re-creating it you believe would solve my issue?

Ok, I understand. So when editing the INI file I should place my new object channels into the gaps and once gaps are filled I should place them at the end incrementing up. This avoids re-indexing them.