Skip to content

Conversation

@Doprez
Copy link
Contributor

@Doprez Doprez commented Dec 30, 2025

PR Details

Updates to the latest DotRecast version.

Related Issue

None.

Types of changes

  • Docs change / refactoring / dependency upgrade
  • Bug fix (non-breaking change which fixes an issue)
  • New feature (non-breaking change which adds functionality)
  • Breaking change (fix or feature that would cause existing functionality to change)

Checklist

  • My change requires a change to the documentation.
  • I have added tests to cover my changes.
  • All new and existing tests passed.
  • I have built and run the editor to try this change out.

@Doprez
Copy link
Contributor Author

Doprez commented Dec 30, 2025

Getting a weird error from the compiler about a missing field exception. Im not too sure why at this point but it keeps coming up from the Stride.Navigation.DtMeshDataSerializer.WriteDtMeshDetailMeshes and seems to not be able to serialize DotRecast.Detour.DtPolyDetail.vertCount. The only change I can see from 2024.1.1 is that it was changed to a byte but my changes should reflect that if Im not mistaken so I dont know why this would throw an error.

2>EXEC : error 10.330s: [AssetCompiler] Exception in command [NavigationMesh] NavigationMeshAsset: 13a86647-35fd-4e40-8fa2-5645c8931c5e: System.MissingFieldException: Field not found: 'DotRecast.Detour.DtPolyDetail.vertCount'.
2>     at Stride.Navigation.DtMeshDataSerializer.WriteDtMeshDetailMeshes(DtPolyDetail[] dataDetailMeshes)
2>     at Stride.Navigation.DtMeshDataSerializer.WriteDtMeshDetailMeshes(DtPolyDetail[] dataDetailMeshes)
2>     at Stride.Navigation.NavigationMeshTile.NavigationMeshTileSerializer.Serialize(NavigationMeshTile& tile, ArchiveMode mode, SerializationStream stream) in E:\dev\GitControlledProjects\stride\sources\engine\Stride.Navigation\NavigationMeshTile.cs:line 108
2>     at Stride.Core.Serialization.MemberNonSealedSerializer`1.Serialize(T& obj, ArchiveMode mode, SerializationStream stream) in E:\dev\GitControlledProjects\stride\sources\core\Stride.Core\Serialization\MemberSerializerGenerated.cs:line 546
2>     at Stride.Core.Serialization.Serializers.DictionarySerializer`2.Serialize(Dictionary`2& obj, ArchiveMode mode, SerializationStream stream) in E:\dev\GitControlledProjects\stride\sources\core\Stride.Core\Serialization\Serializers\CollectionSerializers.cs:line 432
2>     at Stride.Navigation.NavigationMeshLayer.NavigationMeshLayerSerializer.Serialize(NavigationMeshLayer& obj, ArchiveMode mode, SerializationStream stream) in E:\dev\GitControlledProjects\stride\sources\engine\Stride.Navigation\NavigationMeshLayer.cs:line 61
2>     at Stride.Core.Serialization.MemberNonSealedSerializer`1.Serialize(T& obj, ArchiveMode mode, SerializationStream stream) in E:\dev\GitControlledProjects\stride\sources\core\Stride.Core\Serialization\MemberSerializerGenerated.cs:line 546
2>     at Stride.Core.Serialization.Serializers.DictionarySerializer`2.Serialize(Dictionary`2& obj, ArchiveMode mode, SerializationStream stream) in E:\dev\GitControlledProjects\stride\sources\core\Stride.Core\Serialization\Serializers\CollectionSerializers.cs:line 432
2>     at Stride.Navigation.NavigationMesh.NavigationMeshSerializer.Serialize(NavigationMesh& obj, ArchiveMode mode, SerializationStream stream) in E:\dev\GitControlledProjects\stride\sources\engine\Stride.Navigation\NavigationMesh.cs:line 67
2>     at Stride.Assets.Navigation.NavigationMeshAssetCompiler.NavmeshBuildCommand.SaveIntermediateData(ObjectId objectId, NavigationMesh build) in E:\dev\GitControlledProjects\stride\sources\engine\Stride.Assets\Navigation\NavigationMeshAssetCompiler.cs:line 251
2>     at Stride.Assets.Navigation.NavigationMeshAssetCompiler.NavmeshBuildCommand.DoCommandOverride(ICommandContext commandContext) in E:\dev\GitControlledProjects\stride\sources\engine\Stride.Assets\Navigation\NavigationMeshAssetCompiler.cs:line 184
2>     at Stride.Core.BuildEngine.Command.DoCommand(ICommandContext commandContext) in E:\dev\GitControlledProjects\stride\sources\buildengine\Stride.Core.BuildEngine.Common\Command.cs:line 60
2>     at Stride.Core.BuildEngine.CommandBuildStep.StartCommand(IExecuteContext executeContext, ListStore`1 commandResultEntries, BuilderContext builderContext) in E:\dev\GitControlledProjects\stride\sources\buildengine\Stride.Core.BuildEngine.Common\CommandBuildStep.cs:line 299
2>EXEC : error 10.330s: [AssetCompiler] BuildStep [NavigationMesh] NavigationMeshAsset: 13a86647-35fd-4e40-8fa2-5645c8931c5e failed.
2>EXEC : error 10.330s: [AssetCompiler] Exception in command [NavigationMesh] NavigationMeshAsset: 13a86647-35fd-4e40-8fa2-5645c8931c5e: System.MissingFieldException: Field not found: 'DotRecast.Detour.DtPolyDetail.vertCount'.
2>     at Stride.Navigation.DtMeshDataSerializer.WriteDtMeshDetailMeshes(DtPolyDetail[] dataDetailMeshes)
2>     at Stride.Navigation.DtMeshDataSerializer.WriteDtMeshDetailMeshes(DtPolyDetail[] dataDetailMeshes)
2>     at Stride.Navigation.NavigationMeshTile.NavigationMeshTileSerializer.Serialize(NavigationMeshTile& tile, ArchiveMode mode, SerializationStream stream) in E:\dev\GitControlledProjects\stride\sources\engine\Stride.Navigation\NavigationMeshTile.cs:line 108
2>     at Stride.Core.Serialization.MemberNonSealedSerializer`1.Serialize(T& obj, ArchiveMode mode, SerializationStream stream) in E:\dev\GitControlledProjects\stride\sources\core\Stride.Core\Serialization\MemberSerializerGenerated.cs:line 546
2>     at Stride.Core.Serialization.Serializers.DictionarySerializer`2.Serialize(Dictionary`2& obj, ArchiveMode mode, SerializationStream stream) in E:\dev\GitControlledProjects\stride\sources\core\Stride.Core\Serialization\Serializers\CollectionSerializers.cs:line 432
2>     at Stride.Navigation.NavigationMeshLayer.NavigationMeshLayerSerializer.Serialize(NavigationMeshLayer& obj, ArchiveMode mode, SerializationStream stream) in E:\dev\GitControlledProjects\stride\sources\engine\Stride.Navigation\NavigationMeshLayer.cs:line 61
2>     at Stride.Core.Serialization.MemberNonSealedSerializer`1.Serialize(T& obj, ArchiveMode mode, SerializationStream stream) in E:\dev\GitControlledProjects\stride\sources\core\Stride.Core\Serialization\MemberSerializerGenerated.cs:line 546
2>     at Stride.Core.Serialization.Serializers.DictionarySerializer`2.Serialize(Dictionary`2& obj, ArchiveMode mode, SerializationStream stream) in E:\dev\GitControlledProjects\stride\sources\core\Stride.Core\Serialization\Serializers\CollectionSerializers.cs:line 432
2>     at Stride.Navigation.NavigationMesh.NavigationMeshSerializer.Serialize(NavigationMesh& obj, ArchiveMode mode, SerializationStream stream) in E:\dev\GitControlledProjects\stride\sources\engine\Stride.Navigation\NavigationMesh.cs:line 67
2>     at Stride.Assets.Navigation.NavigationMeshAssetCompiler.NavmeshBuildCommand.SaveIntermediateData(ObjectId objectId, NavigationMesh build) in E:\dev\GitControlledProjects\stride\sources\engine\Stride.Assets\Navigation\NavigationMeshAssetCompiler.cs:line 251
2>     at Stride.Assets.Navigation.NavigationMeshAssetCompiler.NavmeshBuildCommand.DoCommandOverride(ICommandContext commandContext) in E:\dev\GitControlledProjects\stride\sources\engine\Stride.Assets\Navigation\NavigationMeshAssetCompiler.cs:line 184
2>     at Stride.Core.BuildEngine.Command.DoCommand(ICommandContext commandContext) in E:\dev\GitControlledProjects\stride\sources\buildengine\Stride.Core.BuildEngine.Common\Command.cs:line 60
2>     at Stride.Core.BuildEngine.CommandBuildStep.StartCommand(IExecuteContext executeContext, ListStore`1 commandResultEntries, BuilderContext builderContext) in E:\dev\GitControlledProjects\stride\sources\buildengine\Stride.Core.BuildEngine.Common\CommandBuildStep.cs:line 299
2>EXEC : error 10.330s: [AssetCompiler] BuildStep [NavigationMesh] NavigationMeshAsset: 13a86647-35fd-4e40-8fa2-5645c8931c5e failed.
2>EXEC(1,1): error 10.330s: [AssetCompiler] Asset [NavigationMesh] failed to compile
2>EXEC : error 10.331s: [AssetCompiler] BuildStep Asset build steps [NavigationMeshAsset:'NavigationMesh'] (1 items) failed.

Everything still works in the GameStudio editor as well it is only when I try to compile the game that the above error occurs.

@Kryptos-FR
Copy link
Member

Kryptos-FR commented Dec 30, 2025

Regarding your issue, could it be possible it is using an older version of the AssetCompiler where it still expects the field to be int instead of byte? Can you try to cleanup your clone as well as cleaning up the nuget cache and then rebuild? Maybe also cleanup the game project your are using for your test.

@Doprez
Copy link
Contributor Author

Doprez commented Dec 30, 2025

Thank you! I had to go into the nuget cache and delete everything there manually. I can actually get past the compiler stage now and build.

@Doprez Doprez marked this pull request as ready for review December 31, 2025 22:13
@Doprez
Copy link
Contributor Author

Doprez commented Dec 31, 2025

This one should be good to look at now. There are some type changes but I dont think they would make this a breaking change?

@Kryptos-FR
Copy link
Member

The only breaking change is that the AssetCompiler needs to rebuild affected assets. I'm not sure if that happens automatically when a newer version is used. We should add a point to the release note once it's merged. cc @VaclavElias

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants