So I was thinking of an interesting effect, like an anti video recording. So like what if there is an effect on-screen that is almost unnoticeable when playing, but if you recorded it, then the video would be completely unintelligible. Is this possible?
In order to destroy the bitrate of a video you need lots of unpredictable moving information on the screen that can’t be easily packed into patterns. So you want to generate lots of 2D random noise on the user screen. The hard part is obviously making it not noticeable during gameplay, I would start by playing with the transparency and position of the random noise within the user screen.
Although keep in mind that if a user has experience on recording videos they will likely figure out ways to bypass your anti-recording system. For example by hiding the part of the screen causing the bitrate issue, making the recording software not detect movements that are way too unnoticeable(in case the pixels moving are way too transparent) or increasing the bitrate during the recording and figuring out ways of decreasing it without causing issues afterwards. If they stream your content(instead of just recording it) it might be a little bit harder for them to bypass said system.
I would start by using the new EditableImage class on an image label that takes up the whole screen, and on a specific interval run code that randomizes all the pixels on said image label to random things.
I have been trying to figure out the fricking editable image but I just can’t get it to work and there’s like no up-to-date tutorials or documentation.
Here’s an example of how to create a noise effect using the new EditableImage class:
--LocalScript in StarterGui
local PlayerGui = game.Players.LocalPlayer:WaitForChild("PlayerGui")
local UI = Instance.new("ScreenGui", PlayerGui)
UI.IgnoreGuiInset = true
local label = Instance.new("ImageLabel", UI)
label.Size = UDim2.fromScale(1, 1)
label.BackgroundTransparency = 1
label.ResampleMode = Enum.ResamplerMode.Pixelated
label.ImageTransparency = 0.9
local image = Instance.new("EditableImage", label)
@native local function update(): ()
image.Size = label.AbsoluteSize/2
local product = image.Size.X*image.Size.Y
local pixels = table.create(4*product, 1)
for i = 1, product do
local v = math.random()
pixels[4*i-3] = v --R
pixels[4*i-2] = v --G
pixels[4*i-1] = v --B
end
image:WritePixels(Vector2.zero, image.Size, pixels)
end
game:GetService("RunService").RenderStepped:Connect(update)
It can be a little bit laggy for low-end devices, perhaps it can be optimized. However a quick solution is decreasing the amount of pixels the image uses(by increasing the absolute size divisor from 2 to 3, 4, etc.)
I guess this works, and thanks for replying with working code, but you are right that it is laggy. I found that just jittering around a static image is good enough, and much more performant.
This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.