Page 2 of 3 FirstFirst 123 LastLast
Results 11 to 20 of 22

Thread: multiplayer (and LNet)

  1. #11
    'serverless' would be nice but I don't really see how this could work. I'm planning to have a central server for match making and some verification but game will be hosted on player's machine. co-op against bots so hopefully cheaters won't be such a game breaking factor

  2. #12
    Yes the biggest problem in Peer to Peer multiplayer is keeping game state synchronized between all clients. So you need active mechanizm which makes sure that game states are synchonized between all clients. This of course means that the slowest computer with worst connection will cause the most lag to all other players.
    But the biggest advantage of Peer to Peer multiplayer is that you don't require dedicated server for it (no aditional expesnes for dedicated servers) becouse anyone can host a game at any time.
    Another advantage is that using Peer to Peer you can distribute processing between different clients. This in the end alows using of more complex game mechanics.
    Unfortunately this introduces huge chances for players to cheat with modified clients.

    But if you wanna make a multiplayer game where noone could cheat all I can say is good luck. Why? There is no easy solution to this.
    For instance I remember a cheat mod for Far Cry which alowed you to easily shot at other players. All you needed was to have another player in sight and mod automatically calculated needed trajectory for bulet. This means you didn't even have to aim and was still making perfect kills.
    When PunkBuster service got implemented they prevented this mod to work until it was updated to work even with PunkBuster protection.

    So the only way to prevent players from cheating in multiplayer games is making games so that client simply sends player imputs to server and server simpy returs visual and audio information back to player. There is absolutely no processing made on client. So you need extreemly powerfull servers for this. But a viable solution is actually moving server into cloud to get enough processing power.
    And since all processing would be made on server side this would also alow you to play extremly demmanding games even on crappy computer (no need for advanced graphics cards, no need for large amount of RAM, no need for large HDD space as you would require only tiny application on your computer). All it is necessary is for that computer to be able to smotly play any streamed movie with desired resolution.
    But for this to work you need excelent network connection with minimal lag.

  3. #13
    I'm aware that p2p multiplayer games are something hard to code. My idea takes in account that you have nodes/supernodes for each client/server. So, when you came into some specific area where a supernode is already working, game client switchs to it as main server, later all supernodes syncs between them to keep data integrity, or as soon as you move to another supernode or became one. Anyone in that network scenario could became a supernode, as any client could upscale as needed.

    On the pros side, you could play solo or with your friends (multiplayer is an option).

    On the cons side, you may need humongous disk space for user data validation, once you became a supernode. A house keeping mechanic must be implemented to make this viable. A tracker server may be needed to be able to sync nodes/supernodes.

    This is just a project on planning stage. I know there are lots of things/condition to foresee/consider.

  4. #14
    PGD Staff / News Reporter phibermon's Avatar
    Join Date
    Sep 2009
    Location
    England
    Posts
    524
    A distributed model will work but you'll hit limits pretty quickly and it'd be an absolute nightmare to debug/optimize. You might want to make a virtual network with artificial delays, either using VM software or by mechanism in your code, it'll be a bit of work to get it set up but well worth it if you plan on making something robust enough for real-world use. Would love to hear about progress so please keep us updated!
    When the moon hits your eye like a big pizza pie - that's an extinction level impact event.

  5. #15
    As far my schedule permits it, I will, unfortunately this is a project I work on spare time.

  6. #16
    btw, probably I could use p2p to share world data between users in bit torrent manner and limit server bandwidth usage. Anyone done pascal torrenting?

  7. #17
    Torrenting in pascal is the tricky part of my project, as there are not any component ready to use. Some of the available are just wrappers for external libraries with really dark interfaces. There's a torrent library in Ares Galaxy, but still trying to understand how it works, as I'm looking for a way to separate it from the main core. To be honest I found it a complicated task to achieve, working on spare time.
    Last edited by pitfiend; 04-01-2014 at 06:31 AM.

  8. #18
    I remember a Pascal Torrent project a few years ago. It was quite stable but unfortunately it didn't support all the features of latest torrent protocol. It had no DHT support, it had no Peer to Peer seds exchange, no encripted transfers.
    As far as I know Pascal Torrent didn't depend on external libraries but it was trying to reimplement whole torrent protocol using Sockets.
    In the end I belive that orignal authors abandoned this project.

  9. #19
    Quote Originally Posted by SilverWarior View Post
    I remember a Pascal Torrent project a few years ago. It was quite stable but unfortunately it didn't support all the features of latest torrent protocol. It had no DHT support, it had no Peer to Peer seds exchange, no encripted transfers.
    As far as I know Pascal Torrent didn't depend on external libraries but it was trying to reimplement whole torrent protocol using Sockets.
    In the end I belive that orignal authors abandoned this project.
    The one I found inside Ares Galaxy, seems to have all the torrent protocol features. It's available on sourceforge here, as you can see it is announced as a free open source bittorrent and chat program. My trouble, I can't found any documentation (or maybe I'm looking in the wrong place).

  10. #20
    PGD Staff / News Reporter phibermon's Avatar
    Join Date
    Sep 2009
    Location
    England
    Posts
    524
    You don't have to adhere to the bit-torrent protocol, you can do multi-part sharing of your own accord, split into arbirary parts, get the hash of each part (MD5 etc) and use it to confirm each part as it's transferred. A simple list of confirmed aquired parts (or fully downloaded etc) and you're onto a winner. I think bit-torrent does some funky hashing that allows it to CRC check individial parts from just having the entire file/torrent hash (some funky maths going on there) but you really don't need that. just store a file similar to a .torrent that contains a list of all the parts, their start-end offsets and their CRCs. You can flag the bits you've got in the hashing file so you can resume downloads. A process that calculates the CRC of the parts from the file you have can be used to determine what's good in the instance of a program crash / unclean shutdown.
    When the moon hits your eye like a big pizza pie - that's an extinction level impact event.

Page 2 of 3 FirstFirst 123 LastLast

Bookmarks

Posting Permissions

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