"[How To] Stop Clothing Copying"

It doesn’t have to be theft. The creator of the shirt may upload it to their account to test what it looks like in game, but it was actually contract work and they later give it to the contractor to sell on their account after it’s finalized. @blobmista4 has done this before with clothing he’s made for other people. Then, let’s say the clothing creator and contractor have a falling out, and the clothing creator wants to get back at the contractor. They report the article of clothing the contractor already paid for for being a copy and it gets taken down.

What then? Is it the contractor’s fault for having the clothing made by someone else? The amount of due diligence moderators would have to do would be insane. Clothing copy reporting isn’t feasible.

4 Likes

The only solution I heard of that I thought was good was adding an optional water mark to images when being viewed on the website.

2 Likes

What stops people taking texture and changing the hue slightly and reuploading?
What about things like suits where a lot look similar, will you end up with whoever is first getting all money?

1 Like

Apply to 585x559 ImageLabel, screenshot, make a couple modifications to get back transparency, and copied even with a watermark.

@pauljkl OP is calling for manual moderation

1 Like

In the end, the asset still gets downloaded to the client in games nonetheless. Nothing could be done, other than as you of said about manual moderation.

If you really wanted to get serious, a separate set of servers to compare two images based on similarity could ease moderation. For instance, we could display similar uploads to our moderators (since they bulk decline/accept images anyways). They can decided if an upload looks similar to an existing asset. This comparison would be done a new set of servers, and mostly automated. No hit on the performance of the site.

1 Like

While I don’t think manual moderation would work out, “it can be stolen so we might as well not make any attempt to stop it” is wrong. The client has to download the geometry of places but you don’t see level geometry getting stolen as often as clothing. If we can change clothing to where it gets stolen as often as level geometry, that’s certainly better than the present state. Whether or not it takes priority over other stuff is a call the staff have to make, but “can’t prevent all so might as well not make any attempt at all” is wrong.

5 Likes

My personal thought is to use a combination of social and technical means to attack this problem.

Technical means involve normal deduplication, watermarking, and perceptual hashing.

deduplication just generates a hash of the data of the asset. It prevents exact copies. This is very weak because it is easy to change the hash by modifying metadata. For example, when I used gmail to send myself a png, the original and email had a different md5. (which is weird…)

watermarking sprays the asset with ownership data hidden in the little things. things like rounding of floating point numbers, changes in the lsb of colors/alpha, etc… This stops attacks from users who haven’t seen this method.

perceptual hashing creates a signature for every asset to aid in identifying visually similar assets. This needs a bit of tuning though – it can generate comical false positives and false negatives. I worked on this for a hack week. I feel like it lends itself to machine learning. On a flight in 2014, I thought up a machine learning method to auto-tune it.

This is also actually a very hard problem, as perceptual differences don’t mean artistic differences. eg, a smiley face with a small difference on the smile is probably artistically different while a small change in the size or color of the smiley isn’t.

At this point, the social aspects come in. The idea that people can make decisions on if two items are essentially the same. The watermarking and perceptual hash can suggest probable copies to moderators. This reduces the workload on moderators as the number of times they are asked if a cat looks like a banana would be vastly reduced.

5 Likes

Would it be simpler to remove the ability to preview the -1 ID from the site, change clothing to a different format (when it is uploaded to ROBLOX servers it’s converted to a ROBLOX-Clothing format or something) and only allow that asset to be applied to Shirts/Pants (so someone can’t slap it onto a 585x559 ImageLabel and screenshot)? At that you might reach the level of difficulty of stealing level geometry. You can’t get a screenshot of the template anywhere on the site, if you try to download the asset through roblox.com/asset?id=id or capture it when its’ downloaded to your client you get a file type you can’t work with / upload to ROBLOX, and the only way to screenshot it in-game would be screenshotting a character which wouldn’t give you very good results. Some people could try to reverse-engineer the custom file format, but it would just end up at the same level as CSG reverse-engineering I assume (nothing practical).

3 Likes

I have a better idea.

Change the template to be twice the resolution of the current shirt/pants template.

Upload at full resolution.

When the client runs, it gets a 2x downsampled version.

When that version is stolen (re-uploaded), it is fuzzier than the original. So now clothing is impossible to perfectly copy.

18 Likes

Not sure if stupid or genius…

6 Likes

Did some testing, using the default free “Blue and Black Motorcycle Shirt”



From right to left

  1. The original shirt as uploaded
  2. Copying the -1 id image (I could’ve worked on it more to make properly fit)
  3. I used an image label scaled to 585x559, the shirt template size, then used screenshot software
  4. Used Paint.net to scale it down to 50%
  5. Upscaled the 50% by 200%, using bicubic in Paint.net
  6. Upscaled the 50% by 200%, using nearest neighbor

4-6 have some problems of fitting on the template right, but this could be fixed if I felt like it. I also didn’t realize that the neck was transparent, but that’s an easy fix.

Stacked:

  1. Original
  2. Bicubic
  3. Nearest Neighbor

I don’t think that this would help too much. Of course it isn’t a “perfect” copy, but it’s close enough to be sold with the right doctoring up.

1 Like

Sure you can touch up anything.

The goal is to stop automated mass copying by bots though right?

4 Likes

Problem is, if you’re authoring your original texture that way (nevermind it’s going to be 4x work), you’re going to make sure the texture looks good after being downsampled, because naturally you don’t want the texture to look ugly.

Once it looks good, all the “thieves” have to do is to upscale your texture prior to reuploading. It’s going to look the same in-game, because in-game, we’re really comparing one downscaled version to another, not the upscaled copy to the original.

4 Likes

Er did you reply to the wrong person?

I was under the impression bots weren’t the biggest problem. It’s as easy as pie to manually copy clothing (-1 from the ID, screenshot a 585x559 ImageLabel with the clothing applied, go to roblox.com/asset?id=id.png/jpg/etc), and as evident with NBC shirt creators, people will just copy the clothing and upload it to their account to avoid having to purchase it, or rip off other peoples’ clothing to make it appear as if they made it (i.e. so many Kestrel clothing copies being sold as “original” because the copy uploader wants to look cool)

2 Likes

I understand what you are saying about how even the originals will look fuzzy due to downsampling.

I don’t buy your upsampling argument though. Information gets destroyed on the downsample to the client. How does it get added back? Entrophy only increases as you repeat the cycle, assuming you are doing some texture impolation instead of just 2x pixel resize.

2 Likes

Not really. As long as you keep the spatial frequency of the image lower than one half of your sampling frequency (Nyqist frequency), no information is lost.

The extreme example to it is constant color: you can upscale/downscale a single pixel to any dimension without any loss of information.

1 Like

When user audio came out, it was insecure as in the asset was not protected, you could -1 the ID and save the audio file itself from Google Chrome or something by right clicking on it.

This has since been fixed, attempting to -1 a sound ID will just skip to a SolidModel ID or something not relevant, sound ID’s are secure.

I don’t know why clothing never followed this suit, since they clearly have the ability to block the asset.

3 Likes

I think if you examine the 1D 1-channel case with reasonable assumptions (bi-cubic or lanczos resample), that is not true.

I also think your Nyquist claim is wrong. For instance the bitmap [0 0 0 1 1 1 0 0 0 1 1 1 0 0 0] has lower frequency that 2/x but will exhibit aliasing under continued upsampling and downsampling.

2 Likes

If I’m not mistaken, it uses the Image asset type. The same kind used for decals.

2 Likes

I second this, as I think that with the removal of tickets, we really need to get rid of price floors to make up for it.

Price floors have not stopped people from being able to steal other people’s assets. All they have done is made it so that you are forced to monetize assets, stolen or not stolen. This is no solution to the problem. Anyone with BC is still able to steal another person’s assets. Bots can’t re-upload stolen shirts, simply because it has always required BC to upload shirts.

If you want to do something that has an actual effect, add a fee for uploading Shirts/Pants. As well as this, as mentioned in the OP, a system that allows the user to make a report, if they provide a link to a shirt that was made before the re-uploaded one, I think will be a great system which would require little moderation since it could mostly be automated. Automated warnings/bans could be put in place if the creator of an item sends a link of their original item, and they are significantly similar.

I think that it is desperately needed that the price floors be removed now that NBC players can no longer buy clothes (As they have no way of getting any income. Now, all we will see, are people in default colors and T-Shirts. That’s really lame and a big step downwards from the “IT’S FREEEE” roblox).

4 Likes