This is an introduction thread for Game Machine, an open source java based platform for running realtime multiplayer games.
Game Machine has been around a while, I’ve just never really advertised it that well.
Game Machine was specifically designed to run large scale, realtime multiplayer games. It’s not just a networking solution but also handles persistence, zone/region handling, has integrated chat/messaging/groups, and a highly optimized area of interest grid. It has a straight forward plugin system for writing game logic.
Underneath it’s based on Akka. It shines at taking game logic and running it at high concurrency, without having to deal with concurrency in your game logic. The standard game actors we use have a tick mechanism you can use to run npc ai logic easily. We also did things like customizing our protocol buffer code generation to output messages that can be directly persisted to our key/value store or to postgres/mysql. It even auto generates the sql schema’s for you. You can query the database via protocol buffers and get back protobuf messages, not having to deal with any database connection handling directly.
A recent feature we added is the ability to run and manage client engine instances. Game Machine can start and manage one or more JME instances and talk to them on the server, giving you direct access to things like physics in JME. JME can run as a client with elevated privileges in this way, or you can make rpc like blocking calls into JME from Game Machine.
I’ve held back really trying to make it known in the java game engine world because it doesn’t have a full client implementation in java. The default client is Unity. And although I don’t have the time to duplicate everything that is in the Unity client to java, I will make time to assist anyone that wants to contribute in this area. I just put up a fairly simple page on how to get started creating a client.
That said, if you want a robust, performant server solution that solves most of the problems you face when making multiplayer games, it’s probably far less work then using any other java networking solution, primarily because Game Machine does so much more then networking.