#Project Deployment/Demos/Security
1 messages · Page 1 of 1 (latest)
Discussion on maintaining project integrity (making it difficult to crack a demo project/ full project).
Okay so how do developers usually run playtests/demos and encrypt/encode their gamefiles from unity. And how do they post their games to Steam.
From what i know it’s extremely hard to make it difficult to crack a full project, because obfuscators aren’t 100%
but atleast making it a bit difficult is good enough for playtests, rather than sending a full project with the source code
If you're worried about code, Il2cpp.
Regarding the physical copying of the assets is there any way to prevent it? No, not really. Models, Textures, Animations. They're all going to be extremely easy to grab, as they all use public formats. Even games that use private formats or modified formats, ex. Rust. Still easily have their models ripped after a while.
Legally? I suggest you mark your textures with some small colored pixels or something of the sort so you could easily prove which textures are yours.
Yeah il2cpp is better, obfuscators may work if you can’t do il2cpp
not a bad idea, like a very small undetectable pattern, that you have an algorithm to find
Could write up a python script that finds an area on your textures, and automatically applies a small little watermark. That'd help legally
basically like a secret key and you run the texture data through an algorithm using the secret key
^^ I’ve marked my textures with tiny pixels in a pattern on top left top right bottom left bottom right with a tiny water mark
Or manually do it
Automation is fun though
I'm.. Not sure what you're talking about
Some sort of hashing for pixels i think
the secret key that only you have, is the pattern of the pixels, you have an algorithm you write to search for the pattern, and you run the key through it
What.. Would even be the point of that
I was referencing just adding some kind of watermark on your textures
legal protection
So if someone uses them you could claim..
Why would you ever need to be able to find any of that again?
to prove ownership
Just make like a oreintation of 5 pixels on each one of your textures and mark thme
them
You dont' need any.. weird algorithm to find patterns or.. keys.. or.. what
I feel like that would be hard to prove though, could just be said to be a coincidence they have those couple of pixels
That is unnecessarily complicated
Hard to prove what?
Not a coincidence all the textures had them though
hard to prove ownership using 5 pixels
No?
could be overcomplicating whats needed here for sure, but it was just an idea lol
If you publish your game in 2020, have specific textures. A game pops up in 2022 with textures that look nearly identical. You walk into court and go. yeah those are mine "prove it" well what if they just made similar looking textures.
In this case you'd have 5 odd pixels on all your image textures.. And if they have those same 5 pixels well
that proves they copied
I dont really care about assets because I dont make them
I feel like those same 5 pixels on every texture would be easy to find aand replace though
Well if it’s asset store assets then that isn’t your jurisdiction
then dont do it on the same 5 pixels?
xd
Yeah, I'm only worried about my entire project being copied, source code and assets
and modified slightly to sell
I dont care if I lose just the assets, because I will be paying for a license to use them, or using free ones
if you really wanna get into how i'd do it
write a python script that finds a group of atleast 10 pixels on a image that are of the same general color, and slightly alter 5 of those pixels in a different shade maybe like 1 rgb value down on.
If it’s steam then your most likely fine, steams very good at dealing with stolen games
And then write an algorithm that can locate those pixels, exaactly my idea I was trying to convey earlier xD
Okay cool, but what about playtests that are sent directly to people
they're literally 1 rgb value down, what kind of algorithm is someone going to write to find that. and again i think you're thinking too deep into this.
no one is going to steal your project bar for bar and even if they did, all you have to do is prove you had files before them. that are the same
If your doing playtests and you haven’t put it on steam yet, only do it with people you trust
How are you going to find the pixels in the future if theyre so hard to find though lol
youll need an algorithm that can find them again
kk
.. when you're running the script log the pixels that have changed
so you can recall back to them
or just store the original image
and compare
thats a good idea
by itself if i make a unity game and compile it in mono, you can copy literally THE WHOLE GAME with no issues
if you compile it with il2cpp, the game will NOT function or work. BUT you will have all the assets
There are still reasons you’d want to use mono, most likely it’s better for modding
yeah if your game has a modding community
il2cpp kinda sucks for them
hard for them to analyze and change things
unless you make some kind of modding tool or framework for them
in game
youd need to probably establish your company, and have it known that the game is yours before letting people mod it though
You can mod il2cpp games easily?
then why are you suggesting it as a good encryption method xD
mod
not
steal
with il2cpp you cant just read the original c# code
you can still RUN c# code on the game though so you can still mod the game
That’s the issue i have mostly ig, there’s a much bigger unity mono modding community then il2cpp
Wait what
modding mono and modding il2cpp is the exact same, there are no differences.
Yeah but how would you interact with cpp from c#
the game still runs as c#
kinda
its hard to explain
anyways il2cpp game, i can still open it up. write a script that checks for me pressing f, and delete the object im looking at. all coded in c#
bepinex interprets the c# code you write and pretty much loads it into the game the same way il2cpp does
the same way unity compiles your c# code into il2cpp
as a unity developer
same process for modding, just less freedom and a little more tricky to understand the game logic
But when compiled its c++ you can interact with that from c#?
essentially
It's not that the game runs C# or IL, it's that the modding tool converts the C++ to IL and back
bepinex is the middleware
OH
interprets your c#
I was confused because i thought you were saying you could just execute and modify cpp code from c# without bepinex
oh no
you can still technically dig through the dlls and change hardcoded values statically the same you would with any other game though
not too relevant to typical unity modding though
the best example of the most overall secure unity game i can think of is rust
https://github.com/SamboyCoding/Cpp2IL
also couldn’t you use smth like this to just reverse it
thats cpp to il which is more readable and understandable than cpp when compiled
but definitely not like you could just drag in an entire game and be able to copy paste it into your own unity game
makes life easier for unity il2cpp modders though ofc
Can’t you convert il to c# though
It's hard to explain, I don't know the exact details besides il2cpp games aren't going to be copy pasted. They require a bunch of reworking. I've got a group of guys that could explain it well and in depth. They've spent the past few months trying to fully get an il2cpp game into a working state in the unity editor
Using a huge variety of tools, and even a mono copy of the game's demo version.
Because some of the code from the demo version stayed in the il2cpp version, which means they could get some kind of comparison and blah blah. Helped in some way
Oh so it’s hard
Even then they're spending alot of time rewriting scripts
The only reason someone would put the effort in, is for modding. Not trying to copy paste the game and sell it for themselves
Is pretty much my point
i see
At the current il2cpp state, all decompilation does is get your hands on all the names of everything, what they take in, what they let out.
ohh
Ex. If I decompiled a unity il2cpp game and looked at a script. It'd look something like this.
// Assembly-CSharp, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
// DefaultPlatform
using UnityEngine;
public class DefaultPlatform : IPlatform
{
private bool isInitialised;
public bool IsInitialised => false;
public bool IsInitialising => false;
public bool RequiresSpecificUnityMicrophoneUsage => false;
public string UnityMicrophonePrimaryName => null;
public void AsyncInitialise(GameObject platformRootOwner)
{
}
public void Update()
{
}
public void OnDisable()
{
}
public bool SendGameInvite(string otherPlayerId, string connectionString)
{
return false;
}
public void SetMultiplayerActivity(string connectionString, bool isPublic, bool allowJoin, uint maxPlayers, uint currentPlayers, bool allowCrossPlatform, StoreSDKManager.MultiplayerActivityType type)
{
}
public void ClearMultiplayerActivity()
{
}
public bool IsPlayerBlocked(PlatformPlayerId otherPlayerId)
{
return false;
}
public bool IsPlayerMuted(PlatformPlayerId otherPlayerId)
{
return false;
}
public void OpenPlayerPage(PlatformPlayerId playerId)
{
}
}
All the actual code missing
public float sanityDrain;
public int sprinting;
public bool flashlights;
public bool loseItemsOnDeath;
public float playerSpeed;
public int evidenceGiven;
Names of everything, their types.
Which I mean.. Sure you get those, but then you have to write the actual logic. Assume what each does
It's actually pretty nice because you could decompile a game you're a fan of, and see how they structure their work.
Which is a way of how I learn
Lookin at professional work and trying to take tips from them
thats super neat
yeah all without copying the code itself, just getting a better understandance of how certain features might work
likeee i dunno.. perhaps how in schedule I, how xp is handled.
could decompile and see if they use some kind of handler.. what the function call is like..
or maybe how they handle the different views because picking the weed, combining it, yada.
who made schedule 1? that gaame looks really well made
guy named tyler
TVGS (Tyler's Video Game Studio)
Founder & Developer = Tyler
Composer = KAESUL
Graffiti Artist = Cody To
lol first tweet I see