Home FAQ Documentation Roadmap Overview Forum Wiki

The Zoidcom network library is a high-level, UDP based networking library providing features for automatic replication of gameobjects and synchronization of their states over a network connection in a highly bandwidth efficient manner. This is achieved by multiplexing and demultiplexing object information from and into bitstreams, which make it easily possible to avoid sending redundant data. Bools only take one single bit, integers and floats are stripped down to as many bits as needed.

A great deal of the tedious work that appears when attempting to develop an efficient network protocol is handled by Zoidcom, e.g. deciding when to send which data to which client, how to get it efficiently and reliably through the line, what to do when data gets lost and a lot more.

Features

  • Easy And Flexible
    • simple and straightforward C++ API
    • extensive documentation
    • lots of example programs
    • no additional build steps needed
    • custom memory management
  • Connectivity
    • fast, UDP based networking protocol using bitstreams - very little control data overhead
    • NAT friendly - the whole system can operate on one single UDP port
    • automatic bundling of data into packets of requested size
    • dynamic bandwidth distribution & limitation
    • sending of unmodified UDP packets to arbitrary destinations
  • Useful Utilities
    • completely nonblocking interface (i.e. no GUI freezes when connecting)
    • accurate ping measurement
    • builtin lag and packetloss simulation
    • file transfer in the background of a running session
    • LAN session discovery
    • quickrequest feature - talk to a remote host without creating a full connection
    • connection grouping
    • extensive connection statistics
  • Advanced Object Replication - Make best use of the available bandwidth
    • delegate ownership of objects to arbitrary clients (e.g. for AI processing or player control)
    • define object dependencies for defined order of replication
    • adjustable object priorities
    • adjustable object relevance per client (e.g. field of view)
    • object subscription groups (e.g. for different, distinct game areas)
  • Object Events - Easy as communication can become
    • direct communication between authority and (groups of) replicated object(s)
    • no need to pass around object messages throughout your whole application
    • full control - intercept object events for debugging, monitoring and cheatprotection
  • Automatic Object State Synchronization
    • synchronize native data types such as bools, ints, floats and strings
    • automatic interpolation between state updates
    • implement replicators for your own datatypes and needs in minutes
    • only send data that really changed
    • ready to use player input and object movement synchronizer
      • client side prediction
      • dead reckoning/extrapolation
      • interpolation
      • error correction
      • local overrides
    • full control
      • minimum and maximum update frequency for each single data item
      • intercept, manipulate and prevent data updates for debugging, monitoring and cheatprotection
    • bandwidth efficient
      • adjust the amount of relevant bits per replicated item
      • default values to avoid transmission of redundant data
    • interpolation with adjustable interpolation strength or totally custom interpolation

Contact

Zoidcom's official website can be found at http://www.zoidcom.com . For feature requests, support or general feedback please use the forum on the website or contact me at .

License

Zoidcom is freely available for noncommercial use and will stay so. Commercial and shareware licenses are available on request, official licence announcement will be made available with release 1.0.

Copyright

The Zoidcom source, headers, examples and documentation are all Copyright (C)2002-2011 by Jörg Rüppel. Special thanks to Andre Kleinschnittger for kindly providing the documentation and website graphics.

Impressum