Not directly. You can have a pretty large amount of groups. This does have an effect on catalog size, as each group is registered in there, and depending on the packing method (everything in one bundle, or one bundle per entry).
The 255 characterlimit is a limit only on Windows. You can enable it to use larger file names. Alternatively, you can adjust the naming scheme of groups to limit the name of the built bundles, e.g. ‘Use Hash of Filename’ will create names that are all equally long.
Depends on the packing again, but generally, it’s best to group items that logically belong together.
If you put 100 different swords in a single group and they are packed in a single bundle, then it will download this whole bundle. Loading in memory is a different matter and depends on the compression algorithm being used. Using no compression or LZ4 compression will allow to extract just the single items that are required. Using LZMA uses better compression (better for downloads) but will need to load the whole file into memory to decompress it and extract the items. So it’s a trade-off between download/disk size versus memory usage.
So I would create one group per sword (including prefab, materials, textures, etc.).
I have question on download. When the client’s unity app download a bundle (using Addressables.InstantiateAsync() ), does it permanently stores it somewhere? Or it’s one time download and it’s automacally deleted on client’s storage?
I haven’t used remote loading of bundles yet, but as far as I understand, it’s placed in cache location. So the bundle file keeps existing for a while. Depending on where this cache folder is located, it might get cleared if storage space on the device is running low, or a cleanup task on the system is started.