Page 3 of 4 FirstFirst 1234 LastLast
Results 21 to 30 of 33
  1. #21
    Join Date
    Jan 2010
    Location
    Buenos Aires, Argentina
    Posts
    148
    I've always played with the idea of two different types of packets. 1 type for screen update (3rd party movements, skills etc. etc.) and a 2nd. type for what I call action/reaction.
    The first one handled by UDP the second by TCP.

    Just throwing some ideas i had a while ago.

  2. #22
    Join Date
    Nov 2009
    Location
    Dallas, Texas
    Posts
    170
    Quote Originally Posted by busbyj View Post
    One of the most important decisions we'll need to make that will affect both network traffic and server cpu load will be which region-based algorithm we use, i.e. Square Tile, Triangulation of the World Space, Ray Visibility, Hexagonal, etc.
    I'm not very familiar with Photon but when i read up on it i was under the impression that it only used Square Tile. However, after you posted I went back and found that this can be changed. Very cool! Looking forward to seeing how things work out

  3. #23
    Join Date
    Feb 2003
    Location
    Trondheim, Sør-Trøndelag, Norway
    Posts
    178
    jjguzzardo: Lucky you! xD I am also very interested in all things network/DB etc. so I am really looking forward to all the discussion and discoveries that will surface during this mmo class!
    I thought they might use all protocols, and understandably so also.. as you mention, when TCP drops a packet, it basically "goes into pause" until it can get new ones to verify the dropped one, but the performance of it I believe isn't as severe as it sounds. Things will be sent constantly, and some things benefit from the TCP check, like collision detection.

    A common exploit in mmo's (and I know certain guilds in wow has done it before) would be to get a packet sniffer and block any UDP packet that checks collision/world position on the server, thus making you able to walk through a wall, and then send the new packets when your new position is beyond the collision check of the wall. If you can benefit from the TCP dropped packets check there, the player would in theory be stopped before going through the wall because of the blocked (aka. dropped) packets. For PVP battles where spells and position needs to be quick, lag/ms and TCP could become a problem, specially in highly populated areas I would think.

    Scalability would also be an issue yes, and I think we see evidence of some mmo's using TCP for both handshake and checking connection to the server as often in poor mmo's you see your character stop dead in its tracks and lose connection to a server, and this happens more frequently if the server is full, but how and why it works is something I want to explore myself to see what would be the best option considering scalability.

    In the end, I think it will all be something you just have to try and feel, using all possible network options available to find what suits best for any given situation, be it connection, pvp, pve, position etc. I doubt there is one protocol to rule them all (although that would make a possibly horrible LOTR mmo joke )

  4. #24
    Join Date
    Nov 2009
    Location
    Dallas, Texas
    Posts
    170
    Quote Originally Posted by timespin View Post
    jjguzzardo: Lucky you! xD I am also very interested in all things network/DB etc. so I am really looking forward to all the discussion and discoveries that will surface during this mmo class!
    I thought they might use all protocols, and understandably so also.. as you mention, when TCP drops a packet, it basically "goes into pause" until it can get new ones to verify the dropped one, but the performance of it I believe isn't as severe as it sounds. Things will be sent constantly, and some things benefit from the TCP check, like collision detection.

    A common exploit in mmo's (and I know certain guilds in wow has done it before) would be to get a packet sniffer and block any UDP packet that checks collision/world position on the server, thus making you able to walk through a wall, and then send the new packets when your new position is beyond the collision check of the wall. If you can benefit from the TCP dropped packets check there, the player would in theory be stopped before going through the wall because of the blocked (aka. dropped) packets. For PVP battles where spells and position needs to be quick, lag/ms and TCP could become a problem, specially in highly populated areas I would think.

    Scalability would also be an issue yes, and I think we see evidence of some mmo's using TCP for both handshake and checking connection to the server as often in poor mmo's you see your character stop dead in its tracks and lose connection to a server, and this happens more frequently if the server is full, but how and why it works is something I want to explore myself to see what would be the best option considering scalability.

    In the end, I think it will all be something you just have to try and feel, using all possible network options available to find what suits best for any given situation, be it connection, pvp, pve, position etc. I doubt there is one protocol to rule them all (although that would make a possibly horrible LOTR mmo joke )

    Excellent points

    I agree, networking is sort of an art and i'm interested in exploring new ideas. I think, UDP has advantages with real time data but I'm sure blizzard and many other companies have found very creative ways to mix and match protocols or even add layers to existing protocols to get the results they want. You brought up some good points regarding how TCP could be used in certain situations. I'll be interested to see how things turn out when we get into these topics.

  5. #25
    Join Date
    Sep 2010
    Location
    New York
    Posts
    57
    Quote Originally Posted by busbyj View Post
    Hey Kwest... Personally, I didn't have any issues with Photon and Unity working together. And as T-Gunn points out, the fact that we can stay in one unified language (C#) between client, server and tool development is something that I'm a big fan of.

    Cheers!
    Just to be clear RakNet 4.0 also supports C# (through swig)

    If you want to see RakNet 3 in C# check out raknetdotnet

    Just like Photon RakNet's core is C++ with the added benefit that you have access to the source which, is well documented in source and doxygen. This means you can use either C++ or C# to run the server on Windows, Linux, Mac OS, etc. Photon doesn't offer the source code that's why it's sole binary release form is locked into windows.

    Unity 3.2 uses a modified RakNet 3.x build which I believe (correct me if I'm wrong) is free to download and use without restriction for Unity Licensed users. They have project files for xcode, ms visual studio, and linux make. They also note in the 1st link the key source files of interest in case you want to make on your own RakNet 4.0 plug into Unity's Buitin API. I highly doubt that will be an easy task, but at least the option's there.

    I don't work for RakNet, but I thought Kevin Jenkins was pretty cool and quick when answering my own questions. From what I can tell the Unity team implemented his server all on their own without his help. So I don't think he know's Unity but he can help with MMO questions relating to his server.

  6. #26
    Join Date
    Jul 2010
    Posts
    13
    Quote Originally Posted by tomo View Post
    Just to be clear RakNet 4.0 also supports C# (through swig)
    Because SWIG just generates a wrapper I'm not so certain of the utility of this. You'd have to be able to use plugins (so web deploys are out), and you'd pro.

    [QUOTE=tomo;1534797] Photon doesn't offer the source code that's why it's sole binary release form is locked into windows. </QUOTE]

    According to what I've read the photon guys say in the photon forums, the reason they don't make the server available on other platforms is because it is heavily optimized for windows. It has nothing to do with source availability. They've got the source, it just would mean engineering a totally new product, which isn't in their interests.

    I am curious how any "physics" might be handled in the mmo, since my understanding is that at scale authoritative computations would be overwhelming. I guess using photon allows you to write a master "client/server" in unity though, so I guess a physics agent could be spawned per unit-area, but that seems crazy, right? What do people do for authoritative large scale games?

  7. #27
    Join Date
    Nov 2009
    Location
    Dallas, Texas
    Posts
    170
    Quote Originally Posted by tomo View Post
    Just to be clear RakNet 4.0 also supports C# (through swig)

    If you want to see RakNet 3 in C# check out raknetdotnet

    Just like Photon RakNet's core is C++ with the added benefit that you have access to the source which, is well documented in source and doxygen. This means you can use either C++ or C# to run the server on Windows, Linux, Mac OS, etc. Photon doesn't offer the source code that's why it's sole binary release form is locked into windows.

    Unity 3.2 uses a modified RakNet 3.x build which I believe (correct me if I'm wrong) is free to download and use without restriction for Unity Licensed users. They have project files for xcode, ms visual studio, and linux make. They also note in the 1st link the key source files of interest in case you want to make on your own RakNet 4.0 plug into Unity's Buitin API. I highly doubt that will be an easy task, but at least the option's there.

    I don't work for RakNet, but I thought Kevin Jenkins was pretty cool and quick when answering my own questions. From what I can tell the Unity team implemented his server all on their own without his help. So I don't think he know's Unity but he can help with MMO questions relating to his server.
    That's really cool! The problem with RakNet, as I see it, is that it's more low level than something like Photon. What I mean by low level is that RakNet solves the same problem that something like WCF solves for .NET. It provides a way for you to create game objects on the server and then use RPC to call functions on them. Photon provides this ability and then gives you an interest management system on top of it. This interest management system is a huge win, in my opinion, because building this from scratch can be really complicated. RakNet is a multiplayer networking framework that you might be able to build some MMO features into but Photon already has some of this functionality out of the box. If i'm an indie game developer with a small team the more systems I can get out of the box, the better.

    There has been quite a bit of discusion about Unity and Terrain, etc. However, the dirty little secret is that this entire game is going to run on the server not the client. The only thing the client is going to do is prediction, smoothing algorithms for movement adjustments to compensate for lag, etc. For example, when you loot something the client may predict what loot you're going to get to make it look instant, however, it's the server where you actually are given the loot. That way if someone hacks the client to calculate loot differently it will only be reflected on the client while the server calculates the real loot and adds it to the player. Everything in the game will probably work this way.

    It took 8 years and 100+ people to create WoW where most non server games take around 3 years. If there's something I'm missing with RakNet please let me know, however, it seems like RakNet has some really nice MMO specific features out of the box.

  8. #28
    Join Date
    Sep 2010
    Location
    New York
    Posts
    57
    RakNet 4 has made some headway over v3 for MMO. Although I don't think they have something like Photon's Interest Management system. This is nice to have but as an indie developer you can use RakNet 4 for free with no CCU restrictions if your net profit is under $100k. This also includes scaling to other server installations. In my opinion I don't think you are ever going to see what photon can do at a 100 CCU limit.

    • With RakNet you get plugin support with thirdparty options
    • Run on linux, or windows (but windows hosting costs more)
    • You get low bandwidth voice support with RakVoice
    • Stream lobby support
    • PC, Mac, PSN, or Xbox Live lobby support
    • Out of box SQL Lite3 support (if you need it)
    • You have the option to encrypt the packet data if you wish and message filter support against cheaters
    • Auto patching supported with file transfer support
    • NAT Punchthrough
    • Custom Memory Management Consoles and Statistics
    • File synchronization support - useful if you allow user-moddable content
    • Network optimization with your choice handling of packet loss/ packet resend and packet ordering aka RUDP
    • Crash reporting.
    • Cloud Computing is supported with game object replication (a Dyndns example video)
    • Teambalancing - Set and network team selection (supports peer to peer or client/server). Automatically handles transmission and resolution of team selection
    • You can change the build to suit your needs
    • Tons of free samples (including main server code) in sourceforge svn


    Again I'm not saying RakNet is the best choice here but it's worth a look.
    Last edited by tomo; 02-23-2011 at 11:22 PM. Reason: Added reliability types link

  9. #29
    Join Date
    Nov 2009
    Location
    Dallas, Texas
    Posts
    170
    Quote Originally Posted by tomo View Post
    RakNet 4 has made some headway over v3 for MMO. Although I don't think they have something like Photon's Interest Management system. This is nice to have but as an indie developer you can use RakNet 4 for free with no CCU restrictions if your net profit is under $100k. This also includes scaling to other server installations. In my opinion I don't think you are ever going to see what photon can do at a 100 CCU limit.

    • With RakNet you get plugin support with thirdparty options
    • Run on linux, or windows (but windows hosting costs more)
    • You get low bandwidth voice support with RakVoice
    • Stream lobby support
    • PC, Mac, PSN, or Xbox Live lobby support
    • Out of box SQL Lite3 support (if you need it)
    • You have the option to encrypt the packet data if you wish and message filter support against cheaters
    • Auto patching supported with file transfer support
    • NAT Punchthrough
    • Custom Memory Management Consoles and Statistics
    • File synchronization support - useful if you allow user-moddable content
    • Network optimization with handling of packet loss/ packet resend and packet ordering
    • Crash reporting.
    • Cloud Computing is supported with game object replication (a Dyndns example video)
    • Teambalancing - Set and network team selection (supports peer to peer or client/server). Automatically handles transmission and resolution of team selection
    • You can change the build to suite your needs
    • Tons of free samples (including main server code) in sourceforge svn


    Again I'm not saying RakNet is the best choice here but it's worth a look.
    Very cool, you can't beat free. The thing I'm thinking about is that you need to create version of the world on the server and be able to track the player, all moving objects, the world, among many other things. RakNet seems to provide the low level networking support but doesn't seem to have the higher level game specific features, like interest management, for example. It really depends on how far the Photon stuff goes, but with RakNet it seems like you're building all the game logic to accomplish this from scratch. This could be a big deal for a small team, but then again RakNet is free so I'm not sure. Maybe I'll get in contact with someone over at RakNet to ask questions. I've definitely heard good things about both techs.

  10. #30
    Join Date
    Sep 2010
    Location
    New York
    Posts
    57

Page 3 of 4 FirstFirst 1234 LastLast

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •