Jump to content
  • Advertisement


  • Content Count

  • Joined

  • Last visited

Community Reputation

181 Neutral

About Tylon

  • Rank
  1. There appears to be a number of MMO's that chose TCP for its underlieing networking as opposed to UDP. Some examples: World of Warcraft, Lineage I/II, Guild Wars, Ragnarok Online, Anarchy Online, Mabinogi, Age of Conan. I am very much aware of the whole TCP vs UDP arguments and discussions, but the aim of this thread is not to go into any of that. My question is, how do these TCP based games manage the network communications, since a lot of these games are very fast / twitch based, and seem to do the networking side of things extremely well, with great responsiveness. Specific issues I would be interested in are: * Player movement packets, how are they buffered and sent? Are all visible player positions sent every X ms to client? Is your player's position sent every X ms to server? Or are they somehow streamed in some funky way? * Player action packets, how are they kept responsive among all the other packets (player positions and movement etc) * Nagles on or off? (I presume off, surely) If anyone has experience developing fast paced / actiony games on TCP, can they share any relevant experiences? What send frequencies / packet sizes were used etc.
  2. But how is collision between players handled so well? It cant be lock-step, since there is no snapping effect (due to receiving collision packet, and re-playing the client-side predicted physics), so all I can assume, is that each players collision takes place with their predicted position (against the other person's extrapolated position), and the other clients just trust that it did or did not happen...? This could also mean that you can collide with the other person, while they dont collide with you. Ogh I dunno, im confused... [Edited by - Tylon on October 20, 2007 6:33:18 PM]
  3. "Mario Kart DS, KartRider, Project Gotham Racing 3" Yep, all those games use a peer-to-peer model from what I read, and they all do a really good job of it, handling collisions between players and latencies very well. I am really curious to find out how they manage that, and if it really can be re-applied for other game types.
  4. How come there are so many racing games that have successfull multiplayer on a peer-to-peer model, yet hardly any shooters (which are predominantly client/server)? They both need similar client side movement predicitions, and peer to peer racing games seem to handle collisions between players so well (like in KartRider), yet most first person shooters struggle with that even on a client/server system. Are there any secrets to their networking strategies?
  5. I need to create an array of my python objects which has a good random access speed, but I cannot really see what a good way of doing it is; - Lists I assume are implemented as linked lists, so random access is slow. - Dictionaries are implemented as hash tables, which are again unnecessarliy slow for a sequential list of homogeneous objects. - array modules such as the built-in array and third party ones like Numeric, numpy can not contain objects, only basic types. Are some of my above statements incorrect, or are there any alternatives? The arrays that I will have will be quite large and always randomly accessed, so I require a fairly efficient solution.
  6. Tylon

    Tweaking my sin curve

    Quote:Original post by Airo Your blue curve looks a bit like a shifted Langevin function. http://scienceworld.wolfram.com/physics/LangevinFunction.html Yea, I think that would work to, but I went with sigmoid function; it seems just right.
  7. Tylon

    Tweaking my sin curve

    Thanks! 1/(1+E^(-20*(x-0.5))) seems to do it perfect
  8. Tylon

    Tweaking my sin curve

    I have not done math in a while, so I cannot remember how I can achieve this, but this is what I want: I have a function that takes a value between 0 and 1. Here is my function currently: f(x) = (sin(x*PI - PI/2) + 1.0) / 2.0 This *almost* does what I want, since I want: f(x) to be 0 when x is 0 f(x) to be 0.5 when x is 0.5 f(x) to be 1 when x is 1 But I want the curve to go a bit differently. Here is the image of what I have, and what I want: Clicky The red line being the above function which I have, and the blue line being what I would like to have approximatly. Basically, I want the curve to be a bit shallower initially, then steeper suddenly. Can anyone tell me where I can put a variable in my current equation to get what I need? Many thanks!
  9. The main one is Glest I guess, http://www.glest.org
  10. Quote:Original post by Anonymous Poster Why do you ask? It's very unlikely that anyone here has bought a license for either one of the engines.. So professional game developers don't read game development forums?
  11. Tylon

    Network programming

    SDL has an addon library called SDL_Net which is a network library. You can use that for networking without the rest of SDL, and stick with allegro for everything else if you want. Although for networking I would recomment a higher level library like raknet, enet, opntnl etc
  12. Tylon

    sending packages

    Quote:Original post by Bob Janova - At least 25 times a second. If it's less than that, movement will appear choppy Not true. There are many techniques such as interpolation / extrapolation which is used to smouth out movement. Virtually all commercial FPS's use some form of movement smoothing technique. Even at 25 fps you would want to apply some form of smoothing. Quote:Original post by wolfram Hello, I'm trying to create a multiplayer FPS-game. How often should I update my clients (i.e. send UDP-datagrams)? What happens if I send to often? Or to seldom? Thanks in advance! Quake3 servers usually run at 20-30 fps, thats not a bad value to go by for a typical FPS with typical amount of players. Dont send too often or too seldom - Best having a fixed rate, but be prepared that you might have to change it based on the specific game / player count etc. Quote:Original post by wolfram Do you know how a general aproach to limit the number sends to my clints? To limit the number of sends you can just run the server at that framerate; for most cases this is probably the best approach. No need to create more states than what needs to be sent to clients.
  13. I understand that a single tcp call to send on a socket may not be received in a since recv call, but multiple ones. My question is, is this ALWAYS a possibility? Or only when a large amount of data is being sent? Most tutorials i find dont mention or take into account this issue. Is there a 'safe' packet size (something less than the MTU i would imagine) where data from a single call to send is guaranteed to arrive in a single call in recv on the other end? Especially if setting no-delay on (disable nagle's algo) and flush after the send call? If this was possible, it would save me some work/bandwidth, because i dont have to use packetizing techniques (send size of packet first or delimit data).
  • Advertisement

Important Information

By using GameDev.net, you agree to our community Guidelines, Terms of Use, and Privacy Policy.

GameDev.net is your game development community. Create an account for your GameDev Portfolio and participate in the largest developer community in the games industry.

Sign me up!