Rewrite Runescape to C++ a good idea??

Aug 16, 2010 at 9:20pm
closed account (9EwRko23)
Okay, so a few years back I was a bit of an addict of the well-known MMO Runescape. I quit because of various reasons, all from growing away from it and because of the stupid updates and patches that came out.
Later, after taking a dip into the ocean of game development, i realised a few things with runescape...
1. They have (or had) a HUGE problem with autobots and trainers. This resulted in:
2. A restriction of trade/duel stakes/drop value. You can only trade from 3 000 to 15 000 coins every 15 minutes depending on how many of the quests youve accomplished ! To accomplish this, they created a price range for every single item in the game to regulate what people gave each other !
3. Because it is a web-based game created with Java, it is restricted in both graphics and speed. You have to wait a (few) second(s) for the game to load every time youre about to cross over one of the sides of the squares of graphic.

So i thought of a "simple" solution.
What if they rewrite the entire game in C++ ? It will be downloadable, sure, but that would be easier anyway ! It will then allow for a better set of graphics with less lag, and under the protection of such software as GameGuard, the game will not be hacked, and trainers and autobots (ohmygod, this sounds like transformers ;D) will not be able to get through to the game ! The restriction of trade will therefore not be neccesary, and people will be happy with the game again :)
And whats the point of being web-based anyway? most people play it on their own computer, not at work/school ! No big deal to download it, is it? =O

I googled this suggestion, but i couldnt find it anywhere? Is this not a good idea?
Can anyone, in that case, tell me why this would not be a good idea? (Except for the huge task of converting a big game from Java to C++ of course :) )
Aug 16, 2010 at 11:14pm
What exactly is the point of discussing this?
1. If the designers chose Java instead of any other language, they probably had their reasons to do so.
2. The engine is closed source, so the decision ultimately falls on whoever owns its rights.
Aug 17, 2010 at 12:33am
Actually the problem was not the autobots/trainers, it was the people selling RS accounts/money/items for real life money.

Anyway, yeah, what helios said.
Aug 17, 2010 at 1:29am
Hack detection programs will never work. You invent a better hack detection software, you invent a better hacker.

Anyway, yeah, what helios said.
Last edited on Aug 17, 2010 at 1:30am
Aug 17, 2010 at 10:35am
Hack detection programs written with the knowledge of TODAY are easy to bypass with technology of TOMORROW. Since you dont create such a thing within one day, it will have been beaten before its even released. Think about that.
Aug 17, 2010 at 11:42am
What would it need hack detection for? You cant just "hack" it and change the amount of money you have ingame.
Its like all server sided, the worst thing in game were the huge groups of bots.

But why would you want to rewrite it? I dont think they would like to remake the graphics for the second time, less lag and smaller loading times ok, but they would probably be better off doing small optimizations all over the place, i think rewriting it will take very very long.

And why would you want it to not be web based?
Last edited on Aug 17, 2010 at 11:42am
Aug 23, 2010 at 8:22pm
closed account (9EwRko23)
@Helios: I know that I cant rewrite it, and i know its up to whoever owns it. Its just that I think it would be better if it was faster and with better graphics. The point of discussing this is because I want to find out why they continue to develop a java application that is so huge it will lag almost no matter what... And they probably HAD their reasons. It started off as a small game that was probably easy to program in Java... But its become huge since then, with updates on everything from graphics to battle systems to skills.

@firedraco: Well, people personally didnt bother getting that money and selling the accounts, so they just downloaded or wrote some autobots and ran many of them at the same time, which was the reason that ever second person you saw doing anything to do with the skills were autobots.

@Kyon: What about using the current nProtect GameGuard ? I havent seen any games using that being hacked for a while... I dont know quite how it goes, but you can probably just buy a licence or something? And it will also stop the bots...

@Skillless: I dont mind it being webbased, but its what I said. Since its webbased and its become pretty huge, the lag is inevitable on most computers. So If its rewritten to a faster OO-language and compiled, ready for download, it should be much smoother, and there would be room for improvements in graphics without causing lag...
I agree, it would take a lot of time, but with alot of people it shouldnt be that difficult ! If they could make those improvements by rewriting it, I would think its worth it...
Aug 23, 2010 at 8:34pm
The point of discussing this is because I want to find out why they continue to develop a java application that is so huge it will lag almost no matter what.
Because it's cheaper to maintain existing code than to rewrite it. In fact, it's so expensive to replace an existing system that it has to perform very poorly either for the maintainers or for the users that replacing it would be worthwhile. This is true except for the smallest of systems.
Aug 23, 2010 at 9:34pm
Oveee wrote:
What about using the current nProtect GameGuard ? I havent seen any games using that being hacked for a while... I dont know quite how it goes, but you can probably just buy a licence or something? And it will also stop the bots...

No, it won't. Particularly GameGuard is a big hunk of garbage. Not only will it give some of your legit users a lot of trouble, but its "protection" essentially consists of using simple detour hooks to block a number of WinAPI functions. As a result, it is quite easy to bypass GameGuard.

"Hacking" can be avoided by careful programming, something one should think could be taken for granted (but reality shows it can't). Specifically, that means to put all relevant game logic into the server and to validate all user input (i.e. the messages sent by the client). Always assume the user has the full source code to the client and can change it at will, aiming to gain an advantage or trying to get your server to crash by sending bogus messages. Your job (as the server developer) is to make sure the user can gain nothing from it. The relevant term here is "security through obscurity" - your applications should contain nothing of the sort.

This alone will not protect against automation, unfortunately. You can try to make the gameplay complex enough so it will not be easy to write a bot for your game. Aside from that, there are various methods of detecting bots with varying rates of success. It's best to combine several methods to create a heuristic that will alert the staff when any suspicious behavior is detected. Bot detection is an area where you can let your creativity run free.
Last edited on Aug 23, 2010 at 9:43pm
Aug 23, 2010 at 11:41pm
Always assume the user has the full source code to the client and can change it at will, aiming to gain an advantage or trying to get your server to crash by sending bogus messages.


Exactly.

@Oveee: What I was trying to say was the restrictions on trading/stuff was because of real life trading, not because of the bots, that's all. Obviously they don't like bots either, heh.
Aug 24, 2010 at 2:25am
It will be just as vulnerable in C++ as it is in Java. In fact, since even the binaries aren't easily available, it's safer as a Java program embedded in the browser's memory.

Completely removing hacking in a game is an impossibility. You can always get the source in the form of assembly (and believe me, there are certain people willing to pore over a continent-sized dump site filled with Assembly to get a simple hack accomplished), which is the case no matter what you make the program with. The only thing that can prevent it is the OS, and even that can be bypassed fairly easily through an external means of browsing the file system.

Removing bots is impossible. Because the source is always available it is possible to make a client that directly emulates the standard Runescape client, and then have that client simply parse the nearby nodes and monitor variables to accomplish whatever it was designed for. An easier alternative would be to overload calls to Java functions (I'm assuming that functions in Java are similar to the implementation of functions in C++) that control things such as network message parsing and then use that information to get the data for nearby nodes and other variables.

My point is, as everyone else has most likely stated (I skimmed half, read half), bots and hacking are inevitable. The most you can do is make it harder for the people hacking/botting. That's the conclusion I came to while trying to figure out a good system to completely eradicate hacking from an online game I was coming up with.


I know that I cant rewrite it, and i know its up to whoever owns it. Its just that I think it would be better if it was faster and with better graphics. The point of discussing this is because I want to find out why they continue to develop a java application that is so huge it will lag almost no matter what... And they probably HAD their reasons. It started off as a small game that was probably easy to program in Java... But its become huge since then, with updates on everything from graphics to battle systems to skills.
For the reason that I stated before (and this is purely an assumption), the binary for the game is entirely held in memory (well, I know that some stuff is held on the hard disk due to the JIT compiling), making it harder to access the binary for the game which could be decompiled, simplified and analyzed. Therefore Java applications are somewhat safer than C++ applications in that sense, this doesn't make them hack-proof, however.

The Runescape graphics are just fine as they are. The most recent graphical update at max settings looks amazing compared to the old graphics on my desktop computer. The reality is that most computers can't handle much more than that. My MacBook Pro with a GeForce 330M card (I'd say the approximate average for most modern-day computers in terms of power and VRAM) just barely runs the game in OpenGL mode with lowest settings (shadows set to Static). I don't think the average current-day computer could handle much more than this.

If the designers chose Java instead of any other language, they probably had their reasons to do so.
The game was originally created as a 2D engine using scaling of sprites and depth ordering to give the feel of parallax rendering. The guy slowly added onto it, and eventually got more people and made it online. (Don't quote me on that, it's something along the lines of that but that's not the story exactly.) They just kept it in Java because so much has already been coded into it that porting it to another language would be a project that would probably span over a year.
Aug 24, 2010 at 10:28am
closed account (EzwRko23)

It will then allow for a better set of graphics with less lag


Just the opposite. Very likely the final result would be worse because it would take programmers 3-5 times more time to finish just bare functionality of the game. Thus, there would be less time and budget left for optimizing AI and graphics. And most significant performance gains come from algorithmic optimizations, not from adding -O3 to the compiler.

Additionally users would be forced to install non-standard browser plugins - some of them would not bother doing this and some of them simply would not be allowed to (e.g. to play at work).
Last edited on Aug 24, 2010 at 10:32am
Topic archived. No new replies allowed.