o_O
You attempt to load the object using path. If no object is found, you create package. You then pass the created package into factory function. You then call FAssetDatabase::AssetCreated and yourPackage->setDirtyFlag(). You can do that from within editor (or editor plugin), not sure about game runtime.
You should use ObjectTools::SanitizeObjectName and PackageTools::SanitizePackageName.
Dot is (apparently) used by unreal to separate package path from object name.