The multiplayer plugin is great, but is peer to peer, and I need central server code for my games. The servers will be writing to a database, doing AI logic and bots, calling other systems, having complex game logic and certified RNG etc. In my case I am not doing any server side physics or player movement - more a real time turn based game.
There are many options, I was wondering if poeple could share what they have used succesfully in conjunction with C2, and if they had to write costom connectors on the client side, or could get away with the stock websocket plugin? Not having to write any C2 custom js plugin code for a propriatary client connector would be a big advantage.
Here is my guess at pros/cons of some technologoes, assuming:
1. runs on linux AND windows (linux for the production sever, windows for testing on your pc)
2. easy to learn.
3. plenty of documentation
4. database support
5. backoffice application (UI) support.
6. Ideally free or free up to a certain number of concurrent users.
Dedicated game servers:
1. Smart fox Server
a) purpose built for games
b) very popular (for flash games at least)
c) can use websockets.
d) uses java
e) free version and paid versions is not expensive.
f) basic database access, but ORM of choise can be added in theory (such as hibernate)
g) The Client api (Which is much higher level than websockets) must be integrated with C2 (unfortuatenly) which is a big job.
h) all their examples are flash based, nothing for the websocket api.
2. electro-server
a) now defunct
3. Photon Engine https://www.photonengine.com/en-US/Photon
a) windows only, not suitable for linux servers.
4. Union server http://www.unionplatform.com
a) seems to be dead by the forum activity
b) cant work out what OS it runs on
c) seems to be java/javascript
Generic servers which you can write your server logic and run on any OS:
1. grails 2.5 + tomcat
a) can write backoffice UIs in very little code.
b) GORM/Hibernate does all the DB work for you.
c) websocket plugin is tricky to use.
d) version 3.1 is not there yet.
2. node.js
a) free & lots of plugins.
b) uses javascript, which, for me, as a java/C++ dev, is an abomination.
c) very basic DB support?
d) no backoffice UI support.
e) researching this, it seems node is single threaded. Thus critical game timers would wait on the same event queue as incomming messages. Nodes "solution" to this is to cluster addtional forked worker processes. Inter-process communication between these forked processes goes through the parent "master" in the form of messages, which is not scalable. The general solution is to have another layer of servers with the game logic, and use RPC or sockets to connect the "front end" node processes with backend game logic servers. Checkout pomelo for an example of this https://github.com/NetEase/pomelo/wiki/Pomelo-framework-overview
3. Netty.
a) java nio server.
b) easy and free.
c) game server source available https://github.com/menacher/java-game-server.
Any others?