Questions about MMORPG scalability and security with Java?

Hello! My name is void, and I’ve a fresh graduate that just started up a full-time job. My primary language of choice has been Java, though I would never neglect any other languages. I have about 4 years of casual application experience ranging from Android to full-stack web applications, and have recently starting reading into game development. I’m a big gamer so I figured why not actually try making a game. I’d like to learn more about what it takes to make a simple MMORPG that is not instance based – everyone plays in the same world. So I have a few questions that were hard to google-diagnose:

  1. How do java game developers handle issues with memory management for larger scale games, and what particular tactics would you have to abide by while you’re coding to avoid bad efficiency(minecraft)? I hear that C++ is the obvious choice for game development for these exact measures, so what would modern day java game developers do to handle scalability and memory management? Could you point me to resources?

  2. When designing a game I have heard there is specific code which should not be client-side, and should instead be server-side. For example there is a large MMORPG on the market called Archeage which is 60% client side code. It’s so bad that there are users which can literally go into their own game files to modify their x/y coordinates so that they can teleport across the world. To minimize the amount of “hacking” for mmorpg’s, are there coding standards to abide by? Could you point me to any resources for these design patterns?

Best,
Void

Hey void

  1. Typical ways to handle large amounts of players are splitting the world to multiple servers and (in case of Java) going offheap which means allocating native memory and manage it yourself (pretty much the same idea as in C/C++). However a lot of performance optimization iterations are also a must. If you search the internet there are lots of resource of existing gameservers in Java or C/C++ to look into what others did as well as papers.

  2. I don’t know about a pattern collection but the common rule is: never trust the client, so revalidate everything the client sends to the server.

I worked on scalable gameservers and other highly scalabe systems over the last decade, so if you have any specific question feel free to ask :slight_smile: