1
\$\begingroup\$

I want to make a game where everything is supposed to be a surprise. Everything from the maps to the enemies, no guides what so ever. For a normal player it may not be a big deal but some people may try looking into the game files to find various information.

In order to prevent this, is it possible to store all game files or at least the files that has the info on all the different items, areas, magic spells and such on the server side. In that case, the items and things players unlocked will be stored on the player’s PC and they won’t be able to know details about things they haven’t unlocked yet.

In the case all or at least most game data is stored on the server side, does it even prevent players looking into the game files and will it work on a large scale game.

\$\endgroup\$
  • 1
    \$\begingroup\$ How will you stop people from creating a wiki which spoils your game? \$\endgroup\$ – Philipp Aug 12 '18 at 9:57
  • \$\begingroup\$ I’ll need to make the user want to keep these knowledge to themselves, probably by making information very important. However, this will also give more reason for people to look into the game files to gain advantage over other players. \$\endgroup\$ – Orbital Aug 12 '18 at 12:46
3
\$\begingroup\$

It's not an approach worth to use.

For a normal player it may not be a big deal but some people may try looking into the game files to find various information.

Even if you download the content at run-time, there are various ways that the cheater can inject code into your game and read or write the memory.

In order to prevent this, is it possible to store all game files or at least the files that has the info on all the different items, areas, magic spells and such on the server side. In that case, the items and things players unlocked will be stored on the player’s PC and they won’t be able to know details about things they haven’t unlocked yet.

Nothing prevents one advanced player passing the list of items to a newer player to have access to those items yet unknown.

In the case all or at least most game data is stored on the server side, does it even prevent players looking into the game files and will it work on a large scale game.

You will have to have a server running 24/7, and it will consume bandwidth extensively. Meaning, it will be expensive (for you) and players will experience lag frequently. And as I said before, it won't prevent players from hacking to read or write in the game's memory.

| improve this answer | |
\$\endgroup\$
  • \$\begingroup\$ Thank you! So unfortunately it’s impossible to prevent people from viewing the game codes huh. Is there a way to make it harder for users to view the game codes? \$\endgroup\$ – Orbital Aug 12 '18 at 4:20
  • \$\begingroup\$ Code and data are different things. Depending on the building tool and language, the code is translated to machine code, that is just less human readable, but not impossible to decypher due complexity. Data will be easier to read depending on how it's organized. When storing on file, you could encrypt, to make harder for cheaters. But when the data is loaded in the program memory, the data is usually in unencrypted format, easier to read, as long as the cheater knows code injection. \$\endgroup\$ – Ferreira da Selva Aug 12 '18 at 5:35
  • \$\begingroup\$ You should keep on server-side only sensible data, usually small values, such as level, status, etc, but not all data. This amount of data can be transferred across network without requiring large bandwidth. \$\endgroup\$ – Ferreira da Selva Aug 12 '18 at 5:37
  • \$\begingroup\$ Thanks! I’ll keep basic data such as player level, xps and inventory to make it harder to change. \$\endgroup\$ – Orbital Aug 12 '18 at 7:36
0
\$\begingroup\$

Yes it is possible.

However not without drawbacks and paradigm shifts.

1) you can leave code, database entries and game content server side and only download / access during runtime one level at a time or as needed.

This obviously will have possibly long loading times and will be very bad for game experience. You should only keep "spoiler content" server side.

This will leave your game (client - server) communication prone to the usual hacks.

2) a better approach is actual cloud gaming. ALL game content is stored on servers, even code execution (including graphics engine) is NOT client side. You'll actually only stream the display content to the client like you would a movie from Netflix, Amazon and the likes while the client returns user input to the server.

This is currently in heavy development.

Nvidia being just one example: https://www.nvidia.com/object/cloud-gaming.html

This seems to be one offering something like that, I just did a quick search, so it may not be what you need. https://parsecgaming.com

Amazon and google also offer cloud services and game servers as far as I know.

Your clients need access to a very(!) low latency internet connection but depending on resolution and compression app.10-20Mbps bandwidth should suffice for HD/4k.

Since all game logic is server side, there is no communication to intercept or code residing in local memory, thus making cheating and hacking the game itself really difficult if not impossible.

Incidentally this also should make piracy very difficult and will most likely shift it towards access hacks and internal leaks instead.

Brave new gaming worlds...

| improve this answer | |
\$\endgroup\$
  • \$\begingroup\$ Thanks a lot! I’ll take a look at paradigm shifts and cloud gaming. Thank you for also giving me more knowledge on how servers and clients work together! Definitely of have upvotes this if I had the points for it. \$\endgroup\$ – Orbital Aug 12 '18 at 12:44
  • \$\begingroup\$ @Orbital This "paradigm shift" is much further away than this answer would make you think. So far all attempts at building a "cloud gaming platform" ran into the same unsolved technical problem: Network latency. Playing a game with a few tens of ms input lag is just an awful game experience for all but the most slow-paced games. At the current stage of network technology the internet is simply not ready for it yet. Routing technology would need to make a quantum leap to reduce latency times by at least factor 10. And even then you would still need a datacenter in every major city. \$\endgroup\$ – Philipp Aug 12 '18 at 13:47
  • \$\begingroup\$ Thanks always for further explanation and help! Is there any way to prevent or at least hinder anyone from viewing the game codes without major downsides? \$\endgroup\$ – Orbital Aug 14 '18 at 0:11
  • \$\begingroup\$ You could encrypt your data files. This would at least keep the more casual hackers at bay and wouldn't slow down read / write operations much.Unfortunately there is no such thing as 100% security though. \$\endgroup\$ – DigitalBlade969 Aug 16 '18 at 11:00
0
\$\begingroup\$

It really depends on what you're trying to achieve. All browser game are like that for example so it is indeed possible. However sending to the client the 3d model of the game world, even if it's indeed possible, it's not smart.

| improve this answer | |
\$\endgroup\$
  • \$\begingroup\$ Thanks a lot! I’ll probably have to minimize the amount of data stored on the server side and keep every other files that does not have to be stored on the server side on the user’s pc or something \$\endgroup\$ – Orbital Aug 12 '18 at 12:56
  • 1
    \$\begingroup\$ All browser games? I made browser games which run completely client-sided. All code and assets are downloaded the moment the user visits the website. The majority of flash games work that way. \$\endgroup\$ – Philipp Aug 12 '18 at 14:01

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.