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.