Or, how can I replicate only choosen array items? Someone said me, that this can be done via Delta Serialisation, but nothing more, and only tutorials I found about this are about how to optimise array replication
This cannot be done via TArray replication, if the array is replicated, all of its content is too.
You may have some luck doing this with FFastArraySerializer, but to be honest I don’t recommend it. It makes little sense to mix replicated items with non-replicated ones. If data needs to be replicated, store it separately and reconstruct the complete data-set client-side. This is a much better design.
TArray replication is already very performant. Individual items in the array will use delta replication, so an array which rarely changes in size will be fast and reasonably cheap even if you modify the elements. Removing elements however can be slow, unless you swap or remove them from the end.
FFastArraySerializer is generally better for larger data sets, where the elements are changed infrequently and/or you want to remove items from anywhere in the array. It does not preserve order/indices of elements however, and making changes can cost more (but not always, it depends).
Thanks for the clarification. Then, maybe you know how can I conditionaly replicate component? I have a chunk system and I need only certain chunk components to be visible to the client
Also not possible. Components are replicated through their owning actor, and only the actor can determine per-connection relevancy settings.