Page 1 of 7 123 ... LastLast
Results 1 to 10 of 66

Thread: Game Network Engine

  1. #1

    Game Network Engine

    Hi People

    I have a large scale network project I want to start working on. One requirement is a reliable Networking system. Something along the lines of RakNet or Torque Network Library.

    I think it would be nice to have a native networking system, as I don't think either of the libraries mentioned can be used from Delphi or Free Pascal, they export C++ classes which is always a bit tricky and I don't think they have a flat API for languages such as delphi.

    So I have a proposal. I want to start a project to implement a solid game networking system on top of Indy which as of now supports Free Pascal. Now I'm going to need somehelp on this one. So if anyone has experince of implementing Networking systems or ideas on design let me know.

    If we keep it on this thread others can contribute.

    Dean
    <A HREF="http://www.myhpf.co.uk/banner.asp?friend=139328">
    <br /><IMG SRC="http://www.myhpf.co.uk/banners/60x468.gif" BORDER="0">
    <br /></A>

  2. #2

    Game Network Engine

    I found the indy components to be pretty bad working with. Why not start all lowlevel? If you keep it in Berkeley sockets then you should easily be able to make it portable to all systems
    Peregrinus, expectavi pedes meos in cymbalis
    Nullus norvegicorum sole urinat

  3. #3
    Co-Founder / PGD Elder WILL's Avatar
    Join Date
    Apr 2003
    Location
    Canada
    Posts
    6,107
    Blog Entries
    25

    Game Network Engine

    So basically you want to make something of an Open platform for a Battle.net-type (by Blizzard) of server and client API, but cross platform?

    Well I've not been one that has had great success doing much network programming, but what I have done was kinda fun.

    And since I was considering making a dedicated server for my latest project, it would only support my own needs. So... you got my support.


    Questions Galore:

    How dependant on extra libraries did you want to get? I'd like it to support even console-based games aswell. And what options are best for cross-platform?

    Would it be feesible to try to allow the use of either SDL_Net, Indy, DirectPlay and such as library options? Or would that be a bad idea and make optimization a royal pain in the arse?
    Jason McMillen
    Pascal Game Development
    Co-Founder





  4. #4

    Game Network Engine

    Quote Originally Posted by JSoftware
    I found the indy components to be pretty bad working with. Why not start all lowlevel? If you keep it in Berkeley sockets then you should easily be able to make it portable to all systems
    I have played with Indy for a few projects and to my mind they work pretty well. Allot of the Hard work has been done already. Going low level basically mean starting from scratch in which case we might as well just take the source for RakNet and convert it to pascal... just a thought.. it has very good reviews..

    I would prefer 0 external libraries except those you would find on an OS, so that limits this to Sockets, no SDL_Net no DirectPlay. Indy is based on normal sockets and supports Windows and Linux (so far) but with the recent port to FPC I can see Mac OSX on the horizon.

    What I thik the goal should be is a native pascal networking system that can be used to "most" games with a few modifications. The kind of services we should be providing is

    :arrow: Fast UDP only implementation
    :arrow: Implement REliable UDP packets, the engine should detect errors and resend.
    :arrow: Distributed Objects. eg. an object can update itself across the net, the engine should handle this so if you derive from a proxy class all the published properties will be sent to it's twin on the server.
    :arrow: A Stream based interface (get away from those horrible bit arrays)
    :arrow: ...<insert your requirements here>

    We could use SDL_Net at a push as that is low enough, the only reason I'm not for that is it's not thread safe,
    <A HREF="http://www.myhpf.co.uk/banner.asp?friend=139328">
    <br /><IMG SRC="http://www.myhpf.co.uk/banners/60x468.gif" BORDER="0">
    <br /></A>

  5. #5
    Co-Founder / PGD Elder WILL's Avatar
    Join Date
    Apr 2003
    Location
    Canada
    Posts
    6,107
    Blog Entries
    25

    Game Network Engine

    Hmm ok. Well some advanced features I'd love for it to have in the library are:

    :arrow: an Account Management System
    :arrow: Chat Rooms with logging and wisper capabilities
    :arrow: some kind of Host/Join Game System with Password, player limit suppot and other customizable options while keeping it 'open' for customization to a specific game's required options.
    :arrow: Ping/Lag functions to detect a player/server's network strength.

    Thats all I can think of right now...
    Jason McMillen
    Pascal Game Development
    Co-Founder





  6. #6

    Game Network Engine

    I've built a native Pascal multiplayer net engine using Indy (called AIR).
    It runs well but not perfect... there are alot of issues to deal with. It gets complicated really fast.

    It features:
    - List server for clients to find servers
    - Passwords
    - Admin password / remote server control
    - Sync only changing objects
    - Sync creation/deletion of obj
    - Client resyncs questionable obj
    - Client can control any object
    - See users name on obj and camera position
    - Server authority of game state (users cant cheat)
    - Moderate Smoothing (its playable but you can feel the lag)
    - Simple chat
    - etc

    Unsolved issues:
    - Compression of packets
    - Hacker prevention
    - Perfect smoothing
    - Lag Compensation
    - Perfect Physics Prediction
    - etc

    Although I havent OpenSourced it yet, (not 100% sure I want to).
    It would be really nice to have a community or a team working on a networked engine.

    In any case we'll be releasing a test of Blocked PVP multiplayer, in the coming weeks.

  7. #7

    Game Network Engine

    BTW A thread-based approach is the best way to go.
    All the in/out sending is done in a thread while the game loop runs without interference from the network.

    Indy is great for this and includes alot of thread-safe variables and data structures.

  8. #8
    Co-Founder / PGD Elder WILL's Avatar
    Join Date
    Apr 2003
    Location
    Canada
    Posts
    6,107
    Blog Entries
    25

    Game Network Engine

    Well noone says you can't offer some of your engines functions and routines for public use.

    Might even be able to borrow from this one aswell...
    Jason McMillen
    Pascal Game Development
    Co-Founder





  9. #9

    Game Network Engine

    True! I'll definitely help out with this project.

    What I am more interested in though, is a commercial venture. Either closed source, or some kind of licensed open source (free for free use, or % of profits). It is fun and all to make game engines but wouldnt it be cooler to do it for a living?

  10. #10
    Co-Founder / PGD Elder WILL's Avatar
    Join Date
    Apr 2003
    Location
    Canada
    Posts
    6,107
    Blog Entries
    25

    Game Network Engine

    Well I might be going off topic here, but I've always felt that libraries should be free and let the games be commercial.

    I think that this is truely a new enough concept to presue in the opensource realm, provided that it builds on top of the basic network library and make an adaptable dedicated server API out of it. Otherwise there is Indy, DirectPlay, SDL_Net, and so on...
    Jason McMillen
    Pascal Game Development
    Co-Founder





Page 1 of 7 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
  •