Thanks Ted.

My apologies for the inconsistency on my statements - I will confess that I am new to the world of game development, so I am learning as quickly as I can by reading a lot and asking questions and every person like you who is willing to take time from their busy day to help me with an answer or another tidbit of useful information has been extremely helpful to me.

Many, many thanks.

Joe

On 6/9/2014 1:09 AM, Ted Dunning wrote:

So it looks like what you are trying to do is build a reliable shared state server? Possibly with installable business rules in front of that?

That seems to conflict with your previous statements, but typically the way that this is done is to use a quorum update scheme (if you want consistency) or update all replicas scheme (if you don't give a hang about consistency and want availability).

If you use a system that only requires persistence to memory with something like a transaction log to allow recovery then you should be able to have round-trip updates in the 1 ms range. Getting consistency as right as it can be will be much harder than it looks, of course. Take a look at Jepsen for testing such systems. See http://aphyr.com/

And in the speed range you are talking about it will be extremely hard to measure any difference between UDP and TCP. Those differences will show up (if at all) in the 10 us range within a data center.






On Sun, Jun 8, 2014 at 9:34 PM, joe roberts <carl.roberts.zap...@gmail.com <mailto:carl.roberts.zap...@gmail.com>> wrote:

    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
    <carl.roberts.zap...@gmail.com
    <mailto:carl.roberts.zap...@gmail.com>> 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/>
        mich...@fullcontact.com <mailto:mich...@fullcontact.com>



        On Sun, Jun 8, 2014 at 9:07 PM, Ted Dunning
        <ted.dunn...@gmail.com <mailto:ted.dunn...@gmail.com>> wrote:


            Why do you think that UDP is faster?




            On Sun, Jun 8, 2014 at 6:27 PM, joe roberts
            <carl.roberts.zap...@gmail.com
            <mailto:carl.roberts.zap...@gmail.com>> 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
                <carl.roberts.zap...@gmail.com
                <mailto:carl.roberts.zap...@gmail.com>> 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?










Reply via email to