Game and online data strategies questions

Hey!

I am new to the server side of game development.
Do you know some articles or anything I could read to educate myself on the following scenario: I develop a game and since an hour ago, all game Level data (json and bin) are stored on a server (AWS). When game starts, it loads and deserialize data then build the levels.(So an internet connection is required at every launch). I feel this approach has multiple benefits against hacking (also for scaling) for example and gives better control to the developer on what user are doing with the game(also no need to rebuild if levels are changed).
Basically the game installed on the user machine is worthless without the data from the server , it can’t work and misses 50% or 60% of its core data. So the hacker would then need to hack the server but at this point it is more a problem between the hacker and the server host… Am I getting this right? where can I read more about that topic? Does it sound like a decent strategy?

On a more general note, I try to learn more about the server side of things…
What things could I read read that is a bit related to this?

One way to do this in unity are asset bundles, but they can’t include scripts.
If you want to also distribute new scripts to users then the easiest way would be to serve those scripts ina language that does not require recompiling whole assemblies like c#.
Where I work we use python for all of our gameplay scripts, that way we can change the scripts and send them to users on mobile without the need for them to update the app in the playstore.

All of this won’t prevent hacking though, if an attacker wants your code then he can connect with his game and you will send it to him anyway, so that he can play, he won’t need to hack any server.
What we do at work is to compile our python scripts to bytecode and then change the opt code to make it more secure.

1 Like

Paul,

I would be interested to hear what you are trying to achieve in more detail. Security is certainly a huge issue, as is player data privacy. I’ve been working on a system much like what you are describing, and would love to talk about it. It might be what you are looking for. And I am looking for folks to try it out :slight_smile:

1 Like

Well I can give more details but don’t want to be off topic either. Well, it is a 2d game that has metroidvania feature but also sandbox ones
(the whole thing is run by a 2d sandbox engine).
And since I was quite obsess with simplifying the development pipeline, bit by bit I reached the point where the whole gameplay aspect,
building level(the terrain), adding items or enemies is exclusively done at
runtime. So I realize now that it has a bit of a Mario maker feature as well, but not as cool
(meaning the tools or UI are not as simple nor as friendly to a player as it is in Mario Maker).
but Ui (drop downs menu to pick a terrain tile or the one to pick an enemy type and place it on the map ) do the job.
So that means, a user can start creating, saving and sharing
his levels with others(just need the server side to be properly organized, currently saving locally).
All that is the reason why I am starting to get interested in the server side of thing and all the work it requires for managing the data .
Well I am always interested in trying new stuff, but just so you know, I am currently implementing or connecting with Playfab so
how would you go about testing some of your system features,
or what advantages would your system offer in comparison to Playfab? would it be more customizable, can you list in your opinion what are some key features that
could be well suited to my case?
As you may have figured it out I am a big fan of customization, or tools and systems that can be customized to fit specific need because (in most case) they go hand in hand with specific gameplay.
It may not always be true , but I find it hard to create specific gameplay with generic tools or system that are too generic .
Feel free to ask any question, if I missed something while describing my case…

[QUOTE="FakeByte, [/QUOTE]

-One way to do this in unity are asset bundles, but they can’t include scripts.
If you want to also distribute new scripts to users then the easiest way would be to serve those scripts ina language that does not require recompiling whole assemblies like c#.

-So they can include Json files right? (since Json is not a script)

If you want to also distribute new scripts to users then the easiest way would be to serve those scripts ina language that does not require recompiling whole assemblies like c#.
Where I work we use python for all of our gameplay scripts, that way we can change the scripts and send them to users on mobile without the need for them to update the app in the playstore.

Well that is good to know. At the moment I do not know Python but I understand it can be convenient to write some game logic with it so you can do changes and there is no need to recompile nor to rebuild.
I may give it a try and I don’t even need to re-write the whole game in Python(unrealistic for now) to test it out…
I suppose just some scripts. And there is a good use for everything in the world of programming.
I may fit Python somewhere in the project…

All of this won’t prevent hacking though, if an attacker wants your code then he can connect with his game and you will send it to him anyway,
so that he can play, he won’t need to hack any server.
What we do at work is to compile our python scripts to bytecode and then change the opt code to make it more secure.
Yep, someone on an other forum explain to me that even if my JSON data after being deserialized is stored directly on the heap(in this case),
other technics like memory tampering (like Cheatengine),
functions detouring, DLL injection/tampering would make it possible to get the data anyway.

But then I realize, all the work could be about revoking access to the server. Since the game requires an account, that (bad/hacker)user account could be deleted. Even if he has managed to get all the data locally once, next time he plays, the game won’t be able to access what it needs nor updated content. Then the hacker could create a new account and restart all over and so on… but all his progress or virtual currency accumulated in-game would be lost since he starts from a new account. Does this has a point? (it would be a limited game experience to say the least)

I realize that cheating and hacking should not be concern on a new project or a game that is not big yet,
so I may not focus much on that, but I am always curious about that subject as
it affects business and also because I feel it requires to think ahead when it comes to planning the overall architecture of a game.
At least, a lot of my data if out of the game (level, animation, character appearance, enemy behavior, weapon data etc…)
and that can allow a more flexible pipeline and the implementation of many great idea like the one mention with the use a Python.