Jump to content
  • Advertisement

Archived

This topic is now archived and is closed to further replies.

LaCelestina

Offline info to online game

This topic is 5450 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Recommended Posts

the idea is the following. it is intended to be used for a mmorpg; the game would be playable off and online. the thing is that the offline part is more like a hq., a place where you can do various activities going from leveling up to raising up stat points. then when the player goes online, the offline info, would update the last saved online data. what do you think? can it be done, or has it already been done? thankx in advance.

Share this post


Link to post
Share on other sites
Advertisement
I would be very hesitant to do anything like that. What would happen is that the person would hack their client and tell the server that he is max in all stats next time he connects. You should basically have 0 trust in the client to calculate anything. Also for a MMORPG having an offline game does not really make much sense.

-------
Andrew
PlaneShift - A MMORPG in development.

Share this post


Link to post
Share on other sites
i mean, hacking occurs everywhere but you just cannot live with your head under a shell because of that right?
maybe i didn't explain right...
the idea came from the ps game: " the misdaventures of tronn bonne"
she has 40 bots that she has to train so she can send them into adventures. is a first person game i know, but i am trying to put it on a mmorpg to see how it would work. it's not the entire game that would appear online, it would be like a tamagotchi, you play little games, then you level up, then you go online, and there you have a fun way to level up not only hack and slashing.
i mean i just wont back up because some idiot minded hackie want to spoil it all!
there are programms for this kind of hacking. and there's always regular monitoring. also there can be limits of how many you could level up offline. but i mean in this game (above) training one simple bot takes the hell out of you...it could be like that.

[edited by - LaCelestina on August 19, 2003 3:47:13 AM]

Share this post


Link to post
Share on other sites
It would be VERY easy to cheat in any online game which can be played offline. An example would be the use of memory editors, which there are plenty of available. You simply search for a value inside the applications assigned memory, and change it to any value you want. For example, you could have 100gold in a rpg, search for the 100 in memory, and change it too 1000000000000000000000. If you do this in a well made mmorpg, the value will be checked on the server and found to be incorrect, if you do it on a game with no contact with the server, then there is no way you can check the value. Next timme the person logged back onto the server, the server would assume he got all this money offline, and just update the value. One person would find out this is possble, then he would tell his friends, who would tell there friends, and before you know it everyone knows about it, and noone will play anymore

Share this post


Link to post
Share on other sites
One way to overcome this would be the introduction of a history function. The programm could log (more or less precise) when and where money was added (player went into dungeon with x and came out with x+y), and when it was subtracted (player went into shop with x, came out with x-y + item a).
This should make the job of modifying a bit more difficult because you''d have to check quite a few places in the save file.

Next you could write a base to the savefile somewhere. Let''s assume the base is 100. So if the player has 100 gold you actually write 0. If he''s got 90 gold you write -10. You could change the base every time on random. So the player would first need to find out there is a base, and where the base is stored...

Then, if you feel really paranoid you could use AES or some other encryption standard, and change the key every time the player goes online.

Share this post


Link to post
Share on other sites
The base wouldnt work, as most memory game editors let you search for patterns in changing values stored in the memory, for example, you can have 100 gold in a game, then get one more gold, and search for the memory locations that have increased in value, then add another gold, and do the search again, after 5 or 6 goes the correct memory location is revealed. Many games have tryed this, it just doesnt work.

As to the records, would be an inconveniance, but people would still work around it.

Share this post


Link to post
Share on other sites
This idea was presented in an AD&D book and it concerned the fact that the AD&D rules don''t want people leveling up in the middle of a quest (for some weird reason - who knows).

Anyway, the advantage of the system is that it works nicely into the story line. It goes something like this:

Person is somewhere and is gaining experience (online or offline), however once he has enough experience to go up a level, he must first go back to his/her master/mentor/whatever for additional traning, confirmation, etc.

"No more traning do you require"
"Then I am a Jedi"

Some particularly organised "classes" could be worked in eaiser than fighters. In particular AD&D "druids" - there is a limit to the number of n-level druids on a planet at one time. On the other hand, perhaps a cleric must prove himself before he gets bestowed with the new level.

In any case. The point is that the user must log in and get his level-up approved by the server before it actualy happens. So even if they did hack themselves up to enough exp (and in any case, this should be as hard as posible), they would still need to connect at some point.

And nothing says you must approve their request. You could simply do a time-based thing, so they had to wait 24 hours (or so) before another level.

And finaly, this also lets you controll the leveling up process in code. Consider this possible implementation I just came up with. Whenever the user levels up, they are given a peice of code that is automaticly and semi-randomly generated. This bit of code is responsible for handling how level ups occure, where the data is stored, what format it is stored in, encryption codes, etc, etc. Each time they level up, the code is replaced (what the user currently has is tracked on the server). Then when they go to level up, the game sends the encrypted exp level, and the server decrypts it to check that it matches up.

And you could potentialy have millions of encryption keys and hundreds of algos and formats. Making the job of a hacker very hard and the job of making an automated crack to cover all cases even harder.


Another method (that is more suited to money than experience) is that a user can only carry so much money. So if they are outside the gaming world, there will be a limit to the ammount of money they can take out or bring into it.



In any case, it is very hard to prevent hacking of your code, but there are some methods that will help prevent the cheats.


Free Game: Yet Another Falling Block Game

Share this post


Link to post
Share on other sites
quote:
And finaly, this also lets you controll the leveling up process in code. Consider this possible implementation I just came up with. Whenever the user levels up, they are given a peice of code that is automaticly and semi-randomly generated. This bit of code is responsible for handling how level ups occure, where the data is stored, what format it is stored in, encryption codes, etc, etc. Each time they level up, the code is replaced (what the user currently has is tracked on the server). Then when they go to level up, the game sends the encrypted exp level, and the server decrypts it to check that it matches up.



You could use a memory editor to give you almost the amount of experience needed to level. For example, lvl 1 combat requires 100xp, you could give yourself 99xp, then kill something offline, and gain the level and the code.

Share this post


Link to post
Share on other sites
quote:

As to the records, would be an inconveniance, but people would still work around it.



Depends on how you do them. You could for example set limits to how much you can earn in a specific place. Dungeon(A) will only deliver up to Gold(x).

So, in your record you'll have something like:

Player.Gold() == x
Player.Visited.Dungeon(A)
Player.Gold() == x+y

Now, if y is greater then the amount Gold(x) the dungeon can provide something is fishy. The player could of course be clever enough to change Gold(x) as well, but that would be stored in some dungeon.ini file and not the save file, and the dungeon.ini could be verified every time the player goes back online.

Same goes for weapons and artifacts. If the player sells a certain item in a shop he'll be rewarded with gold. Again you can check that the change in gold before and after the transaction is not greater then the value of said item. Item values could again be stored in config files and be verfied once the player goes online.

Edit: Same goes for xp. Dungeon(A) has xyz Monsters. You cannot earn more then 'q' xp by slaying all of them. If you got more then q after finishing the level -> cheat.

[edited by - Wildfire on August 19, 2003 5:33:15 AM]

Share this post


Link to post
Share on other sites

  • Advertisement
×

Important Information

By using GameDev.net, you agree to our community Guidelines, Terms of Use, and Privacy Policy.

We are the game development community.

Whether you are an indie, hobbyist, AAA developer, or just trying to learn, GameDev.net is the place for you to learn, share, and connect with the games industry. Learn more About Us or sign up!

Sign me up!