#As a game developer who has released
1 messages ยท Page 1 of 1 (latest)
I may never finish a game to put on Steam, but I've grabbed this just in case - thanks
Youre very welcome, like I said its unsecure but I have caught people with this!
why would a pirated version of steam have the username set to PIRATE
no thats the default text box text
its literally just set to PIRATE if the steam username does not update
It was just an example, you can check it however you want
oic
so if it doesnt change that means SteamManager did not init and that after 2 calls it still hasnt updated
What I do is a bit of psychological tinkering
I add some code that sends a ping to my end about a potential hacker. It's super unlikely player will actually remove the code first time around
then idk man VAC ban go brr
Heres what I do ๐
im putting too much effort into piracy prevention for a free game bro ๐
the FBI?
๐
don't they solve like, murder cases?
If it's free, how can it be pirated? 
the feds investigate piracy too
The FBI do loads
People don't want to use it on Steam because of like... wanting to hack or something?
if piracy is detected, iโd throw a bunch of flashing malware detected popups on screen. when you press play
I don't know why they want to pirate it so bad
I'm thinking of the implications of just BSoDing the computer
[13244/12548] [0.313000] DX11OverlayInit - Present() hooked
[13244/12548] [0.375000] Requesting interface SteamClient017. OK
[13244/12548] [0.375000] Requesting interface SteamClient020. OK
[13244/13592] [0.391000] Requesting current stats
[13244/13592] [0.391000] Creating HTTP request
[13244/13592] [0.391000] Requesting interface SteamMatchMaking009. OK
[13244/13592] [0.391000] Requesting interface SteamFriends015. OK
[13244/13592] [0.391000] Persona name=Test```
Heres the log of a SteamEmulator, and how it sets and emulates Steam Usernames, it does not successfully set the persona name even though it says it does due to Steamworks hooking an Interal version of the steam_api.dll
Since it can't reference the interal steam_api dll it does not set it to the internal Steam Manager, just one that spoofs the games launch
Is there a possibility that a legit user could be in a situation where the Steam Manager doesn't init?
Yes, however, checking their internet connection first can circumvent it showing if lets say they cant get a successful ping to google, their offline. Thats a bypass right there
SteamManager will init in offline mode though I believe
So actually, in a normal scenario unless their calls to the api are super long, I dont see why it wouldn't.
Excellent - will definitely test before releasing with that anyway
Thinking maybe mess up textures/ shaders/ player speed
Play a sound "I'm a pirate" loudly and continuously
Yeah, def, but, making it so the games unplayable will cause a cracking studio to actually make a crack for your game. Making it so it secretly does stuff over time so players and crackers, dont realize they are on a pirated copy makes it easier to catch them.
Like Game Dev Tycoon, after 20-30 mins of gameplay would have the player and their game studio in game get all of their games pirated
and they would go bankrupt in game
Yeah, I remember reading about that
so the crackers thought they cracked the game, since it launched and played normally, but then over time it altered gameplay
super smart solution IMO, delayed the cracking of the game and ruined pirates fun, and forced them to purchase a copy to keep playing
and showed the consequences of their actions
Literally, neat idea.
You can see it fails even in the editor with steam not open, so its easy to test solutions as well.
Good to know, I'll try to remember. I'm very far away from being ready to implement anything with Steam
Steamworks.NET is very easy to implement. Here's a tip for when you do get to this point. They don't have docs online regarding this issue, so I discovered this by trial and error. To set the AppID for your game, you got to declare it like this:
if (SteamAPI.RestartAppIfNecessary((AppId_t)your_game_id_number)) {
Debug.Log("[Steamworks.NET] Shutting down because RestartAppIfNecessary returned true. Steam will restart the application.");
Application.Quit();
return;
}```
With a converion of the int to AppId_t, I was setting just an int there and in the docs I couldn't figure out why it wasnt working.
on the other side, this has the potential to backfire in a nasty way.
if you get false positives (especially a lot of them due to idk, some change or bug on Steams side or some factor you didn't took into account) you might end up with a lot of players having their progress ruined secretly, and depending on how your savefiles work it can be hard to recover when this is noticed (which again will take more time then a simple instant fail when the protection triggers).
just something to keep in mind, there is a risk with every protection scheme and a delayed one is on the more riskier side if something goes wrong
assuming you do any of this in a save file..