Hi Alex!
We actually managed to make our custom serializers work even when calling TickDemoRecordFrame during checkpoints (they’re heavily optimized and dependent on previous state) so it appears that might be the best path forward for us, so it might indeed only have been our own code causing issues and nothing inherent from Unreal. We’re investigating delta frames in parallel but for now the “allow recording during checkpoint generation” appears to work.
Somewhat of a tangent, but we’ve also been seeing some ensures from Unreals replication layer during replay playback. Any leads you can give us as to the cause of the below ensures? The first one is by far the most common, with the other two still seeing a few triggers per playtest:
- Ensure condition failed: OpenPacketId.First == INDEX_NONE && OpenPacketId.Last == INDEX_NONE [File:.\Runtime/Engine/Private/DataChannel.cpp] [Line: 980]
- Ensure condition failed: NetFieldExport.CompatibleChecksum != 0 [File:.\Runtime/Engine/Private/DataChannel.cpp] [Line: 5003]
- Ensure condition failed: Checksum != 0 [File:.\Runtime/Engine/Private/RepLayout.cpp] [Line: 3954]
Fair to say we have quite a lot of custom tech and optimizations around networking, not to mention replays themselves, so it is very likely we’ve broken some assumption the engine make. But it would help to have a little more background as to what the above ensures actually mean