一日一点RakNet(1)--RakNet

 首先,将参考手册的首页翻译一下,作为学习大纲,放到此处!

 一日一点RakNet(1)--RakNet

介绍

参考手册更新于2011/7/7。当前版本信息见readme.txt

RakNet 一款免费的低代价的C++和C#游戏引擎库,允许程序员在程序中加入响应时间严格的网络应用。它大多用于游戏,但是独立于游戏应用程序,也即它并不与某一个游戏相关联,完全可以独立应用于网络程序。RakNet的设计实现了快速,易用,独立于应用,跨平台以及特色集.(关于feature set,没有太理解是什么意思)

 

1. 快速开始

本节介绍如下的几个主题。

1.1多人游戏的组成。

1.2 RakNet简介

1.3系统概述

1.4详细实现(本节主要介绍如何使用RakNet进行编程)

1.5教程(主要介绍如何在VS2005中配置RakNet)

1.6编译设置(如何编译出可以使用的dll,而不用在工程中使用源码)

1.7可选的第三方的工具或库(如何与其他的一些库如游戏引擎结合使用)

1.8如何做,此处是连接到论坛中的一个第三方工具或库的列表页面

 

2. 培训视频

2.1主要特色介绍

2.2教程1:RPC3

2.3教程2:ReplicaManager3

2.4教程3:Autopatcher(自动补丁系统)

 

3. 特色视频

3.1 使用SQLiteClientLoggerPlugin实现网络日志

3.2 云计算下的大规模服务器服务

 

4. 基础

4.1 Startup 开始

      启动RakNetInterface,解释线程休眠时间

4.2 Connecting 连接

      如何发现和连接到其他的系统,如果有问题又如何做。

4.3 Creating Packets 创建数据包

      如何使用结构体和位流创建用户数据包,以及如何编码时间戳

4.4 Sending Packets 发送数据包

      如何发送已经准备好的数据包,使用那些参数。

4.5 Receiving Packets 接收数据包

      如何将一个原始数据转换为一个可以通过结构体或位流读取的数据包。

4.6 SystemAddress 系统地址

      描述SystemAddress结构体在数据包和一些函数参数中的目的以及使用。

4.7 Bitstreams 位流

      RakNet的位流类概述,以及通过API使用该类。

4.8 Reliability types 可靠类型

      对用于控制如何发送数据的一些参数进行描述。

4.9 Network Message 网络消息

      API发送给用户的消息类型介绍,在MessageIndentifiers.h中也有介绍。

4.10 Timestamping your packets 给数据包打时间戳

      描述时间戳的目的

4.11 NetworkIDObject 网络ID对象

      给每一个类分发一个整个系统都可以使用的唯一标识的实用类

4.12 Statistics 统计

      RakNet提供的统计功能

4.13 Secure connections 安全连接

      如何激活和使用安全连接

4.14 Cloud hosting 云主机

      以更低代价获得服务器主机

4.15 Rackspace interface Rakspace接口

      Rackspace的C++接口,可以用编程方法在服务器上进行创建,删除,重启,映像或执行其他的操作。

4.16 NAT traversal architecture  NAT穿透结构

      如何将UPNP,NAT类型检测,NAT穿透和Router2结合起来,使得P2P连接更快更有效连接。

4.17 Preprocessor Directives 预处理指导

      用不同的编码设置重新编译库文件

4.18 Custom Memory Management 用户内存管理

      控制台上,用于内存追踪等等

4.19 IPV6 support 支持IPV6

      对下一代网络IP地址格式的支持

4.20 Marmalade integration 整合

      与IOS和Android平台的Marmalade SDK整合

 

5. 插件

5.1 Plugin Interface 2 插件接口2

      所有插件的基础类

5.2 Autopatcher 自动补丁系统

      包涵在RakNet的自动补丁系统

5.3 RPC3

      使用本地参数列表调用C和C++函数,使用Boost获得更多的功能

5.4 RPC4

      调用C函数,不依赖额外的系统或库

5.5 CloudComputing 云计算

      云计算。客户端将内存或事件传递到云端,任何连接到客户端可以查询或订阅这块内存或事件数据。

5.6 Connection Graph 连接图

      维护了整个网络的拓扑图的一个插件

5.7 Directory Delta Transfer 目录列表传递

      在目录之间发送变化或丢失的文件。必要地,简单的补丁系统可以用于传输等级,皮肤等等。

5.8 File List Transfer 文件列表传递

      用于发送用FileList 结构体编码的文件列表

5.9 Fully Connected Mesh 2 完全连接的网络2

      使得所有的对等端自动连接到所有其他对等段的一个插件,选择最老的对等端作为主机。

5.10 Lobby2Client – PC

      PostgreSQL备份游戏数据的数据库,包括玩家,好友,分组,消息

5.11 Lobby2Client – Steam

      Steamworks使用Lobby2接口驱动后端

5.12 Lobby2Client – PS3

      使用Lobby2接口的PS3 NP 后端

5.13 Lobby2Client - XBOX 360

      实时后端和音频聊天支持,使用带有RakVoiceXBOX360插件和FullyConnectedMess2插件支持的Lobby2接口

5.14 Lobby2Client – Games for Windows Live

      和XBOX360类似,但是运行在Windows上。

5.15 Message Filter 消息过滤器

      基于发送者的额外安全设置阻止不需要的网络消息

5.16 NAT type detection NAT类型检测

      查找你所在的NAT类型,保持用户不能够单独连接的用户

5.17 NAT punchthrough NAT穿透

      连接NAT后面的用户, 要求端到端,音频通信,或允许玩家将自己的主机做服务器

5.18 Pakcet Logger 包日志记录

      打印网络传输的情况到屏幕,文件或者其他的地方。

5.19 RakVoice

      RakVoice介绍,参考RakVoice.h获得完整实现以及更多细节内容

5.20 Ready Event 准备好事件

      同步系统中一组玩家都已经准备好一个共同的标识,在端到端环境同时启动游戏很有用,或在基于轮的游戏中进行轮次很有用。

5.21 Replica Manager3 复制管理器
      对你自己的游戏对象和玩家提供管理以实现序列化,划定范围以及创建和销毁对象更加容易的插件

5.22 Router2

      向我们没有直接连接的远程系统发送网络消息

5.23 SQLite3LoggerPlugin

      使用SQLite穿件一个网络日志文件,基于SQLite3Plugin

5.24 SQLite3Plugin

      使用SQLite通过网络执行语句(替代轻型数据库)

5.25 TeamBalancer

      给玩家请求和赋予队号,支持客户端/服务器或端到端

5.26 TwoWayAuthentication

      实现Two Way Authentication,不用传输密码就可以验证一个先前设置的密码


6. C# 和SWIG

6. 1 Swig教程

如何从C#使用SWIG和单道运行RakNet

6.2 Unity Integration 功能集成

      如何统一使用RakNet,以及如何升级到4.x版

7.实用工具

7.1 Crash Reporter 崩溃报告器

      应用程序崩溃时发送mini废物,写到磁盘或发送Email

7.2 Console Server 控制台服务器

      到服务器的基于文本的后门,使用安全的RakNet或telnet,允许执行预先设置的命令或任意的字符串。

7.3 Email Sender

      由崩溃报告器使用通过TCP发送emails

7.4 String Compressor/ String Table

      用于编码字符串,以获得更少的带宽使用和更加安全

7.5 TCP Interface TCP 接口

      TCP连接的封装类

7.6 PHP Directory Server PHP目录服务器

      从或者到C++在网页上列举游戏列表

 

8. 3D Demos 3D实例

8.1 Ogre 3D Interpolation Demo

使用Ogre 3D通过客户端/服务器网络显示一个爆米花的实例,使用ReplicaManager3

8.2 Irrlicht FPS Demo

使用Irrlicht显示一个3DFPS实例,使用端到端的NAT穿透。也是使用ReplicaManager3

 

9. TechnicalDesign Documents 技术设计文档

9.1 UML 图

9.2 潜在的蓝牙支持

 

10.数据结构

10.1 DS_BinarySearchTree.h

二叉搜索树,以及AVL平衡二叉搜索树

10.2 DS_BPlusTree.h

B+树,用于快速查询,删除,和插入

10.3 DS_BytePool.h

返回某个大小门限的数据块,减少内存碎片

10.4 DS_ByteQueue.h

用于读写字节的队列

10.5 DS_Heap.h

堆数据结构体,包括最小堆和最大堆

10.6 DS_HuffmanEncodingTree.h

胡夫曼编码树,以给定的频率表用于查找最小按位显示

10.7 DS_HuffmanEncodingTreeFactory.h

创建胡夫曼编码树实例

10.8 DS_HuffmanEncodingTreeNode.h

胡夫曼编码树中的节点

10.9 DS_LinkedList.h

标准链接链表

10.10 DS_List.h

动态数组(有时不适宜地成为向量)。双向时作为一个栈

10.11 DS_Map.h

关联数组,每一个元素带有分类键值的有序列表

10.12 DS_MemoryPool.h

分配和释放固定大小的重用的实例,用于减少内存碎片

10.13 DS_Multilist_h

将列表,栈和游戏列表整合成为一个带有通用接口的类

10.14 DS_OrderedChannelHeap.h

最大堆返回一个基于关系权重的节点的相关信道,用于带有属性的任务调度

10.15 DS_OrderedList.h

通过快排以一个任意键值排序的列表

10.16 DS_Queue.h

用数组实现的标准队列

10.17 DS_QueueLinkedList.h

用一个链表实现的标准队列

10.18 DS_RangeList.h

存储一个列表的数字值,数字是顺序的,以一个序列代表他们。当存储许多序列值时比较有用。

10.19 DS_Table.h

带有行列,以及表上的操作

10.20 DS_Tree.h

非循环图

10.21 DS_WeightedGraph.h

带有权重边得图,用于使用Dijkstra的算法进行路由

RakString – 字符串的实现,比std::string速度高4.5倍

 

11.Support 技术支持

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Raknet是一个基于UDP网络传输协议的C++网络库,允许程序员在他们自己的程序中实现高效的网络传输服务。通常情况下用于游戏,但也可以用于其它项目。   Radnet有以下特点:   l 高性能 在同一台计算机上,Raknet可以实现在两个程序之间每秒传输25,000条信息;   l 容易使用 Radnet有在线用户手册,视频教程。每一个函数和类都有详细的讲解,每一个功能都有自己的例程;   l 跨平台,当前Radnet支持Windows, Linux, Macs,可以建立在Visual Studio, GCC, Code: Blocks, DevCPP 和其它平台上;   l 在线技术支持 RakNet有一个活跃的论坛,邮件列表,你只要给他们发信,他们可以在几小时之内回复你。   l 安全的传输 RakNet在你的代码中自动使用SHA1, AES128, SYN,用RSA避免传输受到攻击   l 音频传输 用Speex编码解码,8位的音频只需要每秒500字节传输。   l 远程终端 用RakNet,你能远程管理你的程序,包括程序的设置,密码的管理和日志的管理。   l 目录服务器 目录服务器允许服务器列举他们自己需要的客户端,并与他们连接。   l Autopatcher Autopatcher系统将限制客户端传输到服务端的文件,这样是为了避免一些不合法的用户将一些不合法的文件传输到服务端。   l 对象重载系统   l 网络数据压缩 BitStream类允许压缩矢量,矩阵,四元数和在-1到1之间的实数。   l 远程功能调用   l 强健的通信层 可以保障信息按照不同的信道传输   RakNet支持两种版权,如果你是做免费游戏,RakNet将是免费的。相反,你必须支付一定的费用。   从这里你可以下载到最新的RakNet:   http://www.rakkarsoft.com/raknet/downloads/RakNet.zip   例子:   #include   #include   #include   #include "RakClientInterface.h" //建立客服端所需要的信息,其中包括客服端的建立,连接和数据的发送和接收   #include "RakNetworkFactory.h" //用于管理我们在程序中使用的类,包括类内存分配和类内存的释放   #include "RakServerInterface.h" //用于建立服务器所需用的信息,包括服务器的建立,连接和数据的发送和接收   #include "PacketEnumerations.h" //用于处理网络引擎在运行过程中得到的信息   Packet *packet;//网络传输中用于存储数据的一个数据结构   /////////////////////////////////////////////////////   /*   Struct Packet   {   PlayerID playerId; //表明了包的出处。每一个连接服务器的客户端都将被分配一个唯一的ID号,用于标识自己。   Unsigned long length; //数据长度   Unsigned long bitsize; //比特大小   Char *data; //包中的数据   }   */   /////////////////////////////////////////////////////   int main(void)   {   char str[512];   RakClientInterface *rakClientInterface;   RakServerInterface *rakServerInterface;   printf("(C)客服端 (S)服务器?\n");   gets(str);   if (str[0]=='c')   {   rakClientInterface=RakNetworkFactory::GetRakClientInterface();//初始化一个客户端实例,为它分配内存   rakServerInterface=0;   printf("客服端已经建立。");   }   else   {   rakClientInterface=0;   rakServerInterface=RakNetworkFactory::GetRakServerInterface();//初始化一个服务器实例,为它分配内存   printf("服务器已经建立。");   }   if (rakServerInterface)   {  

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值