在使用World Partition的关卡中,当包含NavigationDataChunkActor的Cell被流送加载时,导航系统会在单帧内同步加载该Chunk中的所有导航网格Tile,导致严重的帧率卡顿。
引擎没有提供任何帧预算控制或时间切片机制,出于何种考虑,未来是否打算加入,如果项目需要自行优化这部分应该注意哪些点?
[Image Removed]
[Attachment Removed]
在使用World Partition的关卡中,当包含NavigationDataChunkActor的Cell被流送加载时,导航系统会在单帧内同步加载该Chunk中的所有导航网格Tile,导致严重的帧率卡顿。
引擎没有提供任何帧预算控制或时间切片机制,出于何种考虑,未来是否打算加入,如果项目需要自行优化这部分应该注意哪些点?
[Image Removed]
[Attachment Removed]
重现步骤
设置参数生成导航数据并在大世界中测试(本次是PS5pro)
RuntimeGeneration: Static
WorldSettings :
Navigation Data Chunk Grid Size 6400, Navigation Data Builder Loading Cell Size 819200
RecastNavMesh :
{
“Agent”: {
“Radius”: 35.0,
“Height”: 144.0,
“MaxSlope”: 44.0,
“MaxStepHeight”: 35.0
},
“NavMesh”: {
“TileSizeUU”: 512.0,
“bFixedTilePoolSize”: false,
“TilePoolSize”: 1024,
“OriginOffset”: { “X”: 0.0, “Y”: 0.0, “Z”: 0.0 }
},
“Generation”: {
“NavMeshResolutionParams”: [
{ “CellSize”: 38.0, “CellHeight”: 10.0, “AgentMaxStepHeight”: 35.0 },
{ “CellSize”: 19.0, “CellHeight”: 10.0, “AgentMaxStepHeight”: 35.0 },
{ “CellSize”: 19.0, “CellHeight”: 10.0, “AgentMaxStepHeight”: 35.0 }
],
“RegionPartitioning”: “Watershed”,
“LayerPartitioning”: “Watershed”,
“RegionChunkSplits”: 2,
“LayerChunkSplits”: 2,
“MinRegionArea”: 0.0,
“MergeRegionSize”: 400.0,
“MaxSimplificationError”: 1.3,
“bPerformVoxelFiltering”: true,
“bSortNavigationAreasByCost”: true
},
“NavLink_JumpDownConfig”: {
“bEnabled”: true,
“JumpLength”: 150.0,
“JumpDistanceFromEdge”: 10.0,
“JumpMaxDepth”: 150.0,
“JumpHeight”: 50.0,
“JumpEndsHeightTolerance”: 80.0,
“FilterDistanceThreshold”: 80.0
},
“Advanced”: {
“MaxSimultaneousTileGenerationJobsCount”: 1024,
“TileNumberHardLimit”: 1048576,
“PolyRefBits”: { “Tile”: 20, “NavPoly”: 32, “Salt”: 12 }
}
}
[Attachment Removed]
你好,我觉得理论上可以将这部分逻辑通过分帧处理并确保未完成期间不会误用不完整的导航数据,只不过wp navigation streaming的相关功能和优化仍属于实验性阶段未来可能会进一步完善但短期我没有看到这方面的信息,目前据我所知主要精力在mass navigation相关功能上。
建议最简单的可以通过调整NavigationDataChunkGridSize等参数来缓解这种情况,如果需要更改引擎代码做分帧处理可能会对相关模块带来哪些副作用,由于这部分没有验证暂时没有比较好的建议。
[Attachment Removed]