Identifiers internaly are always used as hash.
Converting String to hash is not case sensitive (it’s why all your identifiers are lowercase for not confusing you).
We exposed this to you because it allow :
– Easyer copy past
– Storing ID at low memory cost.
For the Element part of an ElementID there is no limitation.
But an elementID contain an archiveID which have limitation.
Because it is a path to a file, there is a problem if all of these following situations match :
– There is no setting for this archive in the master at build time.
– Archive was saved with a named ID.
– Game restarted (new settings lost).
– You try to get this archive with a hashed Identifier.
If one situation above is false, then it’s ok.
You can even save an archive as hash, the archive will have an int as name, and if somewhere you try to access this archive with a named identifier, the file will be moved, all settings updated.
(Nothing is handle currently)
Do not use hash if the instance is not a PreMadeInstance.
Or always use hashed ID and never named ID for a particular one.
We plan to expose a pre compiler option for each identifier allowing you to build your game with hashed identifiers, it’s realy important for element because you’ll have a lot of and these are curently using some memory. Named elementID are only for editor part.
DtArchives was made with this in mind, our biggest problem is that UPROPERTY cannot be used inside a #if CUSTOM, it can only with #if WITH_EDITOR (UE build-in) precompiler define.