Sure.
Here is some of the logic for the game server:
*
o
ChatEntity Movement ( players, AI, etc)
+
Unreliable
+
Update occur within milliseconds
+
Server Retains last message
+
Server side validation against cheating
o
In-Game Text Social ( Server message to client, client to client)
+
Reliable and time sensitive
+
Updates may occur roughly once per second or longer
+
Text Emotes
+
Delayed delivery system (player is logged out)
+
Friends list
o
Login Server
+
Provide license validation before user plays
+
Reliable
+
Confidential
+
Login Server specific Failure Handling messages
o
Security
+
Before login, establish encryption
+
Diffie-Hillman
+
Symmetric Encryption
+
Message Rate Limitation
o Actions
**Command Interface (Client to Server )
**
* *
+
Emotable Actions (/dance)
+
Take blue.sword
+
Give blue.sword to joe
+
Object identifiers for nouns
+
If red.goblin near a player is ID 30232 then client sends:
kill 30232
*
*
*
*
Voice
o
Channel based
*
On 6/9/2014 12:15 AM, Ted Dunning wrote:
Joe,
Can you define a bit more about what you are trying to do? Terracotta
is a fine thing, but it doesn't usually give you want you have been
asking for so far.
On Sun, Jun 8, 2014 at 9:13 PM, joe roberts
<[email protected] <mailto:[email protected]>>
wrote:
Thanks Michael - this is a great and helpful explanation! When
you mention "stateless set of servers", do you mean something like
Terracota? If not, is there another solution that you would
recommend? I actually started reading about Terracota and I also
run into this:
http://www.smartfoxserver.com/
Which seems to be a Java based game server that uses Terracota.
Regards,
Joe
On 6/8/2014 11:18 PM, Michael Rose wrote:
You could make Storm do what you want, but it's not going to work
well for you. A normal client/server is vastly more suited to the
type of workload you want.
UDP may have less overhead, but overall a stall in processing is
much more costly. In a datacenter, TCP is the way to go for
reliable communications. UDP is popular between game client &
server because of packet loss's effect on TCP RTT, and packet
loss is common between consumers and game servers. Not as much
between DC nodes.
Storm's support for other languages isn't exactly anything
special. You could effect the same interface in non-Storm code.
Again, Storm can do processing in low-latency situations
(<100ms), but it's not what you want. You really, really don't
want Storm for this application. A custom application (yes, you
can indeed use Netty UDP) will be much much better for you.
If your game server is just running business logic, a totally
stateless set of servers is really the way to go.
Michael Rose (@Xorlev <https://twitter.com/xorlev>)
Senior Platform Engineer, FullContact <http://www.fullcontact.com/>
[email protected] <mailto:[email protected]>
On Sun, Jun 8, 2014 at 9:07 PM, Ted Dunning
<[email protected] <mailto:[email protected]>> wrote:
Why do you think that UDP is faster?
On Sun, Jun 8, 2014 at 6:27 PM, joe roberts
<[email protected]
<mailto:[email protected]>> wrote:
To make it faster!
On 6/8/2014 8:27 PM, Ted Dunning wrote:
On Sun, Jun 8, 2014 at 12:12 PM, joe roberts
<[email protected]
<mailto:[email protected]>> wrote:
Also, it seems Storm uses TCP via ZeroMQ by default
-Is that right? And if so, can it be switched to
use UDP or UDT instead, perhaps by replacing ZeroMQ
with Netty?
Why would you want that?