I come to ask you for your wisdom of the wonderful world of scripting on Roblox!
I am making a game and I want to well protect it from being leaked and stolen by executors like synapse etc. I honestly am quite new to Roblox scripting so I do not have the right knowledge on how to do this, hence why I am asking the developer forum!
What is the best way to do this? I kind of want something that it kicks you once you inject into the game, can you help me with that?
Sadly what you are asking is not possible. You can not detect when they inject into their game or pretty much anything they do on their game(client). Basically it’s how networking works. As a developer you have some advantages that you can secure stuff and they can’t bypass it and there are stuff that they will always be able to bypass. As a simple rule everything that is happening on their game because it’s in their computer they can modify it with any way they want while stuff that are happening on the server they can’t modify them, unless you have made scripting mistakes that causes varnuabilities that they can take advantage of.
And about being leaked no there is no way to block that. When you join a server it downloads the parts and models in their computer so they can steal it no matter what. What they can’t steal is stuff that are on the server which are the Scripts and anything that is located inside the Server Script Service and Server Storage
Hmm, that is quite strange since I saw examples that once you inject with synapse for example into a game, you get kicked automatically. Are you 100% sure of your words?
Battling exploiters is impossible, you should secure your stuff instead of trying to detect exploiting. Exploiters’ scripts run at identity 6 which unlocks a variety of more features that they can commit to their client and roblox studio’s runs at identity 2. The best way to battle exploiters is to un-do what they just executed in my opinion.
That’s still not possible but you can also check the client memory usage using stats and if it suspiciously starts to rise then it could possibly be because of third party software interfering with the client.
local Stats = game:GetService("Stats")
while wait() do
local lastMemory = Stats:GetTotalMemoryUsageMb()
wait(0.05) -- Waiting for the memory usage to return a different value so that we can save it
local newMemory = Stats:GetTotalMemoryUsageMb()
local difference = (newMemory - lastMemory)
if difference > 24 then
-- The memory is suspiciously high
end
end
I am 100% sure of it i am very specialized in networking and how systems works outside of roblox as well. Synapse and exploits in general could had made some mistakes that caused detection but they fixed it and they will keep being able to make it so they can’t be detected. There is no game that can block it nor we as developers of roblox have the abilities to do it. Only Roblox it self can and is trying to detect it threw updates.
Another thing important to note is in Studio if you have noticed when you are running the game there is a folder called CoreGui that have the core scripts and UI of Roblox. We can not access that with any way or check what’s inside it at all. And because of that Exploits take advantage of that inserting the UI inside there and we have no way of being able to detect it.
In order to not get confused think of it like this. Anything that is in their computer they can do it whatever they want which that means they can delete anything from their game like walls and stuff which that is visible only for them because they can’t change how other players see things.
Basically anything that happens in a client is visible and happens only in that client. Anything that happens on the server is visible and happens to everyone and that’s why you need to script carefully stuff when you are dealing with server-client communications which is how Remote Events work.
Here is how you can get a real time example. You can go in your studio in a baseplate and insert a simple part that is anchored and run the game. While running the game in the home tab in the test there is a button that Shows if you are looking on the client or the server which is this button.
While you are running the game if you move the part with the select tool while in client you will see that if you switch to the server the part didn’t move and only did for the client. If you move the part while you are in the server you will see that automatically the part moved in the client as well because anything that happens in the server happens to everyone and anything that happens in a client stays only within that client. Exploits work the same way
Exploits have advanced at such a state that this is useless anymore. They don’t even inject anymore at least some of them. But they start the game already injected which means there will be absolutely no way to detect it threw memory and messing with the memory can possible cause wrong detections
Alright, thank you for informing me. Very unfortunate that this is not possible, maybe a good idea for Roblox to protect games more indeed. I admit that I was wrong, thank you for your effort!