Introduction

Manual Last Updated 08/02/2009. See readme.txt for the current version number. RakNet is a free to low cost C++ UDP based network library designed to allow programmers to add response time-critical network capabilities to their applications. It is mostly used for games, but is application independent. RakNet is designed for speed, ease of use, application independence, platform independence, and feature set.

Quick Start

Introduction System Overview Detailed Implementation Tutorial Compiler Setup 3rd party dependencies HowTo

Training Videos

Introduction:Major Features Tutorial 1: Hello World Tutorial 2: RPC3 Tutorial 3: ReplicaManager3 Tutorial 4: Autopatcher

Feature Videos

Networked logging with SQLiteClientLoggerPlugin

The Basics

Startup - Starting up RakPeerInterface, and the thread sleep timer explained Connecting - How to find and connect to other systems, and what to do if there are problems Creating Packets - How to create custom packets using structures and bitstreams, and how to encode timestamps. Sending Packets - How to send packets already prepared, and what parameters to use. Receiving Packets - How to converting raw data back to a packet you can read via a structure or bitstream. SystemAddress - Describes the purpose and use of the SystemAddress structure used in packets and in some function parameters. Bitstreams - An overview of RakNet's bitstream class, used throughout the API. Reliability types - Covers parameters you can use to control how data gets sent. Network Messages - Gives an overview of the messages the API will send to the user. This is also listed in MessageIdentifiers.h. Timestamping your packets - Covers the purpose of timestamps. NetworkIDObject - A Utility class to give each class instance a unique identifier that all systems can share. Statistics - The statistics that RakNet provides. Secure connections - How to activate and use secure connections. Data compression - Provides an overview of RakNet's ability to compress network data. Preprocessor Directives - Enables you to rebuild the library with different code settings. Network Simulator - Purposely drop and lag packets to see how your game holds up under bad network conditions. Custom Memory Management - For consoles, memory tracking, etc.

Plugins

Plugin Interface 2 - The base class of all plugins Autopatcher - Overview of the autopatcher included with RakNet. RPC3 - Call C and C++ functions with native parameter lists, using Boost for additional functionality (newer). AutoRPC - (Deprecated) Call C and C++ functions with native parameter lists, using assembly for basic functionality. Connection Graph - A plugin-in that maintains a graph of the entire network. Directory Delta Transfer - Send changed or missing files between directories. In essence, a simple autopatcher that can be used for transmitting levels, skins, etc. File List Transfer - Plugin to send a list of files, encoded in the FileList structure Fully Connected Mesh (Deprecated) - A plug-in to make all peers connect to all other peers automatically. Fully Connected Mesh 2 - A plug-in to make all peers connect to all other peers automatically, and also choose the oldest peer to act as a host. Lightweight Database Client / Lightweight Database Server - (Deprecated) A simple flat database included with RakNet, useful as a directory server to list games Lobby Client / Lobby Server - User hosted lobby solution, with support for friends, emails, messaging, and rooms. See also SteamLobby Message Filter - Prevent unwanted network messages based on sender for added security. NAT type detection - Find out what kind of NAT you are behind to keep users that will probably not be able to connect separate NAT punchthrough - Connect users behind NAT. Required for peer to peer, voice communication, or to allow players to host their own servers. Packet Logger - Print network traffic to the screen, file, or elsewhere. RakVoice - Overview of RakVoice. Refer to RakVoice.h for full implementation and function details. Ready Event - Synchronize when a group of systems are all ready on a common identifier, useful in peer to peer enviroments to start games at the same time, or progress turns in a turn based game. Replica Manager 2 (Deprecated) - A Deprecated plug-in that provides management for your game objects and players to make serialization, scoping, and object creation and destruction easier. Replica Manager 3 - A plug-in that provides management for your game objects and players to make serialization, scoping, and object creation and destruction easier. Router2 - Send network messages to one or more remote systems we are not directly connected to SteamLobby - Steamworks hosted lobby and NAT traversal SQLite3LoggerPlugin - Create networked log files using SQLite. Based on SQLite3Plugin SQLite3Plugin - Execute statements over the network with SQLite (replacement for LightweightDatabase) TeamBalancer - Request and assign team numbers to players, supporting client/server or peer to peer

Utilities

Crash Reporter - Sends mini-dumps when your application crashes, writing to disk and/or sending an email. Console Server - Text based backdoor to a server using either secure RakNet or telnet, allowing execution of predesignated commands or arbitrary command strings. Email Sender - Used by the crash reporter to send emails via TCP String Compressor / String Table - Used to encode strings with less bandwidth and more security. TCP Interface - Wrapper class for TCP connections PHP Directory Server - List games on a webpage from or to C++

3D Demos

Ogre 3D Interpolation Demo - Use Ogre 3D to show a demo of popping popcorn over a client/server network, using ReplicaManager3 Irrlicht FPS Demo - Use Irrlicht to show a 3D FPS demo using peer to peer with NAT punchthrough. Also uses ReplicaManager3

Technical Design Documents

Ping based congestion control UML Diagram

Data Structures

DS_BinarySearchTree.h - Binary search tree, and an AVL balanced binary search tree. DS_BPlusTree.h - BPlus tree for fast lookup, delete, and insert. DS_BytePool.h - Returns data blocks at certain size thresholds to reduce memory fragmentation. DS_ByteQueue.h - A queue specialized for reading and writing bytes. DS_Heap.h - Heap data structure, includes both minheap and maxheap. DS_HuffmanEncodingTree.h - Huffman encoding tree, used to find the minimal bitwise representation given a frequency table. DS_HuffmanEncodingTreeFactory.h - Creates instances of the Huffman encoding tree. DS_HuffmanEncodingTreeNode.h - Node in the Huffman encoding tree. DS_LinkedList.h - Standard linked list. DS_List.h - Dynamic array (sometimes improperly called a vector). Also doubles as a stack. DS_Map.h - (Associative array) Ordered list with an per-element sort key. DS_MemoryPool.h - Allocate and free reused instances of a fixed size structure, used to reduce memory fragmentation. DS_Multilist_h - (Added 4/8/2009) Combines a list, stack, queue, and ordered list into one class with a common interface. DS_OrderedChannelHeap.h - Maxheap which returns a node based on the relative weight of the node's associated channel. Used for task scheduling with priorities. DS_OrderedList.h - List ordered by an arbitrary key via quicksort. DS_Queue.h - Standard queue implemented with an array DS_QueueLinkedList.h - Standard queue implemented with a linked list DS_RangeList.h - Stores a list of numerical values, and when the values are sequential, represents them as a range rather than individual elements. Useful when storing many values that are usually sequential. DS_Table.h - Table with columns and rows, and operations on that table. DS_Tree.h - Noncyclic graph DS_WeightedGraph.h - Graph with weighted edges, used for routing via Dijkstra's algorithm RakString - String implementation, up to 4.5 times faster than std::string

Support

FAQ Programming Tips Revision Log Forum Email Author