Scaling and productionalizing a working game

As first time multiplayer game developers, JMonkey has treated us great so far. We have a working proof of concept and are looking forward to pumping out enough content to get this thing playable and marketable. That is still a good while off in the future, but Im looking to plan ahead, and this means focusing on scalability now and making sure we have a good plan going forward.



Right now we are using the basic Server/Client model as seen in tutorials for SpiderMonkey and everything is working great, but what kind of software, services, etc are typically used to scale an application like this out to several hundreds (thousands??) of users online at one time? Im assuming we will need client authentication to hit some sort of (web-service?) backend which load balancing to our application server, and a database on the backend. Ive been looking in to Java EE, EJB, Glassfish, and even been reading up on the Darkstar project, but was curious if there is some preferred method which is best to use with JMonkey? Or has anyone gone through this process that can nudge us in the right direction?



Thanks in advance

I’d say a server is ideally a self-built java program that uses the SpiderMonkey and other jME3 libraries (maybe also for server-side physics etc.)

Thanks for the response but maybe I need to clarify my question :slight_smile:



We have a client/server implementation developed, meaning we have users able to log in and join a game, appear on the screen and interacting with eachother, able to enter in and respond to commands, with client-side interpolation, collision detection, models, the works… all using SpiderMonkey and jME3 libraries, with the server as “master” for player coordinates, collision, game state, etc.



However, this is obviously one server and a few clients right now. Ideally, we’ll want the capability of scaling to as many clients logged in at once, meaning several different application servers hosting many different instances of our games at once. But with this comes elements like session management, server hosting, server load balancing, etc.



So my question is not anything related to getting the game itself working in JME3, but more of a general concept question of “what next”, taking a single instance client/server JME project and turning it in to something scalable that could one day (with luck!) host hundreds of game instances and thousands of users at once.

And obviously I’m not asking for anything in detail or hand-holding :slight_smile: We have never done anything like this before so are just looking for a general direction, maybe some names of technologies, platform, or service which can help with the type of thing Im asking about, etc

You may want to look at fork of DarkStar project, Red Dwarf.



Dark Star claimed to solve exactly the problems you are worrying about - scalability for MMO environment. It is quite invasive as server side implementation is concerned, so it might be not really useful to you at this stage unfortunately…

The thing is that this is also dependent on how you implement your game and server, if you use physics for example this is also very implementation specific and would require you to write your own balancing system anyway. So what I said is still valid. SpiderMonkey is planned to have load balancing features in the future but when you go about implementing such stuff yourself right now you will surely find help in the team to get this going soon. I think that adapting to a servers way of doing things might be just as much work as simply implementing its features yourself.

Yes, abies thats exactly the kind of technology Im asking about. Ive been looking at that one and I do share your concerns about invasiveness however. So like Normen said, we may be looking at writing our own. I just wanted to check with the community first



Normen, thats a very good point that I hadnt thought of, regarding using a custom solution probably being as much or more work than just writing ours from scratch. Fortunately, any production release for our game is still quite a ways off (churning out content and polish), so we have plenty of time to hash out a custom solution. I’ll keep an eye on Spider Monkey load balancing feature as well, it sounds very useful to us.



Cheers