
RakNet
ykr168age
这个作者很懒,什么都没留下…
展开
-
Raknet For Unity
Swig介绍:Swig 是什么?Swig 是一个代码生成工具,我们需要按照 Swig 格式配置数据就可以生成我们想要的语言代码。RakNet源码:https://github.com/OculusVR/RakNetWindows平台:首先用raknet官网的方法生成C#代码,这个代码就是在windows 下unity直接可用的。可以确信的是raknet C# 所有的接口都是通过原创 2016-04-30 19:36:39 · 4072 阅读 · 3 评论 -
RakNet学习(24) -- NAT traversal architecture
NAT穿透的结构 结合如何使用UPNP,NAT类型检测,NAT穿透,以及Router2,使得P2P连接迅速而有效完成。 RakNet 使用了4个独立的系统,每一个系统都解决了无法连接到其他系统问题的一部分问题。这些系统是: 1. NAT类型检测 – 发现是否我们有路由器,以及路由限制类型是怎样。 2. UPNP – 告诉路转载 2014-11-02 16:54:49 · 2233 阅读 · 0 评论 -
RakNet学习(20) -- Statistics
统计 如何读取RakNet的统计数据,以及如何解析统计数据 统计数据对于在线的游戏非常重要,因为它可以让你看到你游戏的传输瓶颈在什么地方。关于统计功能,RakNet提供了结构体RakNetStatics,由RakPeerInterface中的GetStatics()函数返回。这个结构体在Source/RakNetStatics.h中定义。函数StaticsToS转载 2014-11-02 14:50:05 · 470 阅读 · 0 评论 -
RakNet学习(17) -- Network Messages
网络消息 从网络引擎发来的消息 你接收到的一些数据包并不是使用你定义的类型,从你的代码中发送过来,而是从网络引擎中发来的消息。然而,你需要知道他们代表了什么含义,如何处理。每一个数据包的第一个字节,来自于API,会映射到如下列举的一些枚举类型。可能的接受方列举在了括号中,使用PakcetLogger::BaseIDTOString()将这些枚举类型转换为字符串。转载 2014-11-02 14:40:30 · 821 阅读 · 0 评论 -
RakNet学习(10) -- Connecting
连接到其他的系统 寻找连接目标 有5个方式来发现要连接到的系统: 1. 直接输入IP地址(这个广为人知)。 2. LAN广播 3. 使用ClientServer/CloudClient插件 4. 使用游戏大厅服务器或房间插件 5. 使用目录服务器DirectorySe转载 2014-11-02 14:26:37 · 853 阅读 · 0 评论 -
RakNet(15) -- BitStream
BitStream概述 BitStream类是在RakNet命名空间下的一个辅助类,用一个封装的动态数组来打包和解包bits。它具有如下的四个优势: 1. 动态创建数据报。 2. 数据压缩。 3. 写入Bits。 4. 数据字节序转换。 使用结构体打包数据,需要提前预定转载 2014-11-02 14:35:39 · 734 阅读 · 0 评论 -
RakNet学习(25) -- Preprocessor Directives
预处理指令 在RakNetDefinesOverrides.h文件中定义了下面这些值。在RakNetDefines.h中这些都是作为默认设置。在NativeFeatureIncludes.h文件中,不要编译那些你用不到的功能。 // 定义 __GET_TIME_64BIT 变量使得RakNet::TimeMS使用64位保存数据,而不是32位值。/转载 2014-11-02 16:56:56 · 491 阅读 · 0 评论 -
RakNet学习(16) -- Reliability Types
可靠性类型: 控制何时如何使用数据包优先级和可靠性类型// 发送数据的时候,使用这些枚举类型设置数据类型enum PacketPriority{ // 最高优先级。这些0消息立即发送,通常不会进行缓存或与其他数据包聚集 // 为一个数据报。 在HIGH_PRIORITY优先级的数据或者更低优先级的转载 2014-11-02 14:37:00 · 653 阅读 · 0 评论 -
RakNet学习(13) -- Recieving Packets
接收数据包当一个数据包到来时,例如Receive返回一个非零,处理这个数据包需要三步:1. 确定数据包类型。使用如下的代码可以返回这个类型值。 unsigned char GetPacketIdentifier(Packet *p) { if ((unsigned char)p->data[0] == ID_TIMESTAMP)转载 2014-11-02 14:33:06 · 520 阅读 · 0 评论 -
RakNet学习(2)-- 多人游戏组件
多人游戏组件组成多人游戏的主要系统 多人使得游戏比单人游戏需要更多系统或者额外设计考虑。按照如下的类别进行列举,带着这些问题解决的方法,以及每一个系统的优缺点。尽管在每个部分的结尾处列举的是RakNet的解决方案,这一页的内容适合于所有的多人游戏,不仅仅是使用RakNet的这些游戏。发现其的程序 直接的IP输入 最古老也是转载 2014-11-01 22:19:53 · 1026 阅读 · 0 评论 -
RakNet学习 (9) -- Startup
启动RakNet StartupResult RakPeer::Startup( unsigned short maxConnections, SocketDescriptor *socketDescriptors, unsigned socketDescriptorCount, int threadPriority ); 首先要做的就是调用RakPeerInter转载 2014-11-02 00:12:20 · 652 阅读 · 0 评论 -
RakNet学习 (8) -- 第三方支持
先解释一下这个题目:这个第三方依赖,主要是RakNet里面用到了很多其他相关的库或游戏引擎。例如实时语音用的是speex语音编解码库。 正文:下面列举的是一些没有第三方库或引擎支持无法编译的一些工程,以及从何处可以得到这些依赖库或引擎。这些工程都是可选的:可以使用RakNet而不适用他们。Unpack to是工程,库在VS工程编译步骤中设置的默认路径,可以手工修改。转载 2014-11-02 00:10:29 · 608 阅读 · 0 评论 -
RakNet学习 (7) -- 编译设置
使用源码,静态库,或动态库? RakNet包含了源码,使用随包携带的工程文件也可以生成DLL和静态的lib,还有可以直接编译的例子。RakNet下载包中并没有预编译的DLLs或静态库——这主要是由于编译器之间的不兼容性。我们推荐直接使用源码,当然了,你也可以使用DLL或静态库工程生成你自己的DLL或静态库文件。 用于编译DLL/静态lib的工程,以及例子工程转载 2014-11-02 00:08:01 · 794 阅读 · 0 评论 -
RakNet学习 (6) -- 帮助手册
帮助手册 工程设置 在教程中,所有的图片和界面参考的是VS2005,微软版权。同等参数配置你的编译器。1. 创建Win32控制台工程,将它命名为ChatServer 2. 选择控制台应用程序,以及空工程。选择Windows应用程序也是可以的。 3.加入RakNet源文件到工程中。可以右键点击工程名字,选择Add,然后是Exit转载 2014-11-02 00:06:13 · 859 阅读 · 0 评论 -
RakNet学习(12) -- Send Packets
发送数据包 第一步:确定数据正如在Creating Pakcets中描述的,找出你需要使用的数据类型,使用bitstream或结构体。第二部:确定授权(authority这个词我也不太清楚如何翻译,只是理解意思) 你通常会发送动作的触发数据,而不是一系列动作的结果。通常来讲,数据源分为如下三类: 来自做出动作的函数转载 2014-11-02 14:32:10 · 656 阅读 · 0 评论 -
RakNet学习(14) -- SystemAddress
系统地址(SystemAddress) SystemAddress是什么?SystemAddress是包含了网络上系统的二进制的IP地址和端口的结构体。结构体在RakNetTypes.h中定义。在一些情况下需要使用SystemAddress,例如: 1. 服务器从一个特殊的客户端获取一个消息,想要中继(转发)给所有的其他客户端。你需要在Send函数中指定转载 2014-11-02 14:34:38 · 513 阅读 · 0 评论 -
RakNet学习(19) -- NetworkIDObject
网络ID对象 NetworkIDObject 和NetworkIDManager类允许使用普通的ID查询指针 NetworkIDOjbect类是一个可选类,可以将自己的类从这个类派生,那么你的类就自动赋值标识数字(NetworkID)。这种方法对于多玩家游戏特别有用,否则你必须有自己的方法动态的访问远端系统上分配的对象。 在RakN转载 2014-11-02 14:48:54 · 679 阅读 · 0 评论 -
RakNet(52)学习 -- TeamBalancer
TeamBalancer概览 请求和平衡团队客户端/服务器或端到端游戏 TeamBalancer插件用于在游戏会话中给每一个玩家赋予一个团队编号。玩家默认没有团队,通过调用RequestSpecificTeam()或RequestAnyTeam()方法来加入团队。 操作包括: SetTeamSizeLimits()翻译 2014-12-06 22:01:54 · 582 阅读 · 0 评论 -
RakNet(54)学习 -- Crash Reporter(崩溃报告器)
崩溃报告器概览 Minidumps使得崩溃报告功能容易实现 CrashReporter可以在RakNet/Samples/CrashReporter中找到,仅仅可以用于Windows平台,它的作用是调试无监控的服务器或游戏客户端。当崩溃发生时,CrashReporter会捕捉异常,写一个minidump,然后将信息写到磁盘或发送email。Email的操作可以是转载 2014-12-06 22:03:54 · 900 阅读 · 0 评论 -
RakNet(51)学习 -- SQLite3Plugin
SQLite3Plugin 概览 使用SQLite通过网络存储游戏或会话数据 游戏通常需要一个服务器存储会话信息,例如所有正在运行的游戏,或者在游戏中的所有玩家,或者两者都有。这个服务器称为主服务器,由商业服务提供,通常有很高的租用费用。然而,这些服务器的核心是仅仅提供了一个类似于如下的画的一个数据库表格。 先前的几转载 2014-12-06 21:59:41 · 582 阅读 · 0 评论 -
RakNet(55)学习 -- Command Console Server(命令行控制台服务器)
命令行控制台服务器概述 使用控制台远程控制游戏服务器 有时当你不在特殊计算机之前时,命令行控制台控制服务器是非常有用的。由于服务器确定时会有用,这个主机与该服务器控制地不同的情况下就会有用了。或者或许你有许多服务器需要控制,你想要通过一个脚本控制这些服务器。ConsoleServer,CommandParserInterface,和TransportInterf转载 2014-12-06 22:04:54 · 752 阅读 · 0 评论 -
RakNet(58)学习 -- TCP Interface(TCP接口)
TCP接口概述连接到Telnet、HTTP服务器、mail服务器或其他TCPInterface类可以在TCPInterface.h文件中找到,它是一个功能类用于使用TCP协议在一些必要情况下进行连接。连接过程和RakPeerInterface.h类似,但是TCPInterface类中Receive()函数返回接收到的数据,第一个字节不是一些特定的标示符。为了获得连接状态更新转载 2014-12-06 22:07:36 · 1147 阅读 · 0 评论 -
RakNet(57)学习 -- StringCompressor(字符串压缩器)
字符串压缩器(StringCompressor)概述 安全编码和解码字符串 StringCompressor类位于StringCompressor.h文件中,它可以以一种安全的方式编码和解码字符串,避免过度运算。 发送方: const char *str = "My string";stringCompr转载 2014-12-06 22:06:49 · 596 阅读 · 0 评论 -
RakNet(53)学习 -- TwoWayAuthentication插件
TwoWayAuthentication插件概览 由一对系统安全地验证已知的密码 通常使用RakNet你可以使用Secure connections安全传输数据。然而,有时一对系统或许没有活动的安全连接。例如,在移动电话上,安全代码需要使用太多内存,变得很慢,或者不能编译。在这种情况下,你依然可以提前向两个系统使用密码验证一个远端系统。RakNet使用Two转载 2014-12-06 22:02:47 · 551 阅读 · 0 评论 -
RakNet(59)学习 -- PHP Directory Server(目录服务器)
PHP 目录服务器概述 使用共享的Web主机给出游戏列表 Lightweight数据库插件功能强大,但是它要求一个一台专用的服务器运行RakNet实例。在有些情况下,这个要求无法满足,并且运行专用服务器额负担也是不可取的。对于这些情况,RakNet提供了一个DirectoryServer.php,它可以再Sample\PHPDirecotory目录下找到。转载 2014-12-06 22:19:24 · 594 阅读 · 0 评论 -
RakNet(56)学习 -- EmailSender(邮件发送器)
EmailSender概览 通过C++发送邮件的简单类 EmailSender类,可以在EmailSender.h中找到该类,这个类是一个仅仅有一个函数Send(…)的简单类,这个函数用于使用一个mail服务器发送email。它被内在地用于CrashReporter类来为未被监控的服务器发送邮件。参考EmailSender.h文件,了解每一个参数的完整描述。转载 2014-12-06 22:05:55 · 1077 阅读 · 0 评论 -
RakNet学习(21) -- Secure Connections
安全连接 确保网络传输安全 一旦在线游戏达到了一定的流行程度,人们就开始尝试作弊。那么你就需要在游戏层和网络层考虑这个这个作弊或欺骗问题。RakNet通过提供安全连接来处理这些问题,当然你也可以不使用这个机制。 RakNet提供了使用256位传输层安全的数据安全解决方案。每一个域服务器连接都拥有一个256位的椭圆曲线密钥协议实现前向安全保护。转载 2014-11-02 16:48:42 · 556 阅读 · 0 评论 -
RakNet学习(18) -- Timestamping your packets
时间戳 如何在不同的计算机上相同的时间帧内相应同一个事件 时间戳与本地系统时间并无关系。很不幸,每个系统都有不同的本地系统时间。如果仅仅通过网络发送获得的本地系统时间,你得到的时间是其他机器上得时间,这条消息除了告诉你发生了什么之外,没有其他有价值的信息了,因为你仅仅知道你自己的系统时间,其他人的系统时间都是不知道的,因此你不知道这个事件在你本机要什么时候触发。转载 2014-11-02 14:43:49 · 595 阅读 · 0 评论 -
RakNet学习(23) -- Rackspace Interface
Rakspace 云服务器API的C++接口 用编程的方式管理应用服务器 Rakspace提供了基于API的HTTPS,具体的API信息可以在连接中找到(http://docs.rackspacecloud.com/servers/api/v1.0/cs-devguide-20110112.pdf)。使用TCPInterface时,RakNet支持HTTPS,编转载 2014-11-02 16:52:54 · 580 阅读 · 0 评论 -
RakNet学习(22) -- Cloud hosting
如何使用RakNet设置云端主机服务? 通过Rackspace实现云端主机服务一些服务,例如Autopacher,Cloud Server,以及NAT穿透服务器,要求一个运行了RakNet的服务器。当可以使用额外的主机例如Hypernia或dx.net运行这些服务时,这些服务器一个月大概要$150。扩展服务也要求浪费时间安装代码库,不可能使用编程地实现。转载 2014-11-02 16:51:22 · 662 阅读 · 0 评论 -
RakNet学习(11) -- Creating Packets
创建数据包 如何将游戏数据编码到数据包中 运行RakNet的系统,事实上所有在因特网上的系统,都是通过人们所熟知的数据包进行通信。或更加准确点在UDP下,它用的是数据报。每一个数据报由RakNet创建,并且包含了一条或多条消息。消息可以由你创建,例如位置或健康(health这个词确实不知道如何翻译好),或者有时由RakNet内部创建的数据,例如pings。按照惯转载 2014-11-02 14:30:23 · 646 阅读 · 0 评论 -
RakNet学习 (5) -- 详细实现
详细实现实现 实现RakNet你所要做的就是在程序中获得一个RakPeer的实例。 有一些头问价是你必须需要的:头文件#include "MessageIdentifiers.h"#include "RakPeerInterface.h"#include "RakNetTypes.h"MessageIdetifiers转载 2014-11-01 23:30:49 · 761 阅读 · 0 评论 -
RakNet学习 (4) -- 系统概览
系统概览 系统结构 RakNet大致上说定义了3个库:网络通信哭,用于网络通信的插件模块,和支撑功能。 网络通信是用两个类来提供的。RakPeer和TCPInterface。RakPeer是游戏使用的主要的类,它基于UDP。它提供了连接,连接管理,拥塞控制,远程服务器检测,带外数据,连接统计,延迟,丢包仿真,阻止列表和安全连接功能。转载 2014-11-01 22:44:22 · 696 阅读 · 0 评论 -
RakNet学习(3) -- 介绍
安装 请参考Compiler Setup页,有什么问题在这块有解答。如果有额外的问题参考FAQ,http://www.jenkinssoftware.com,或者邮件联系我们。高级用户可以直接跳转到Code tutorial。初学者或想要多了解点RakNet的请继续阅读。 API描述 RakNet致力于网络和网络相关服务的游戏引擎。不仅包含了转载 2014-11-01 22:24:41 · 637 阅读 · 0 评论 -
RakNet学习(38) -- Lobby2Client-Steam
Lobby2Client_Stream概览 使用Steamworks服务加入大厅,房间以及做NAT穿透 Lobby2Client_Steam插件提供了一个Steamworks服务的插件,这个服务可以与RakNet协作实现一些功能。这个服务不再需要提供你自己的服务器,自己提供服务器需要RakNet的NATPunchthrough和Lobby系统。转载 2014-11-11 22:07:16 · 662 阅读 · 0 评论 -
RakNet学习(36) -- Fully Connected 2
FullyConnectedMesh2插件 在自动选择一个长期运行系统时,生成一个完整的连接网络 在端到端的游戏中需要其中一个Peer充当主机,为系统创建唯一的游戏事件。例如,这个主机发送游戏结束通知或控制AI。FullyConnectedMesh2插件可以用于在连接之后自动决定主机。 概览: 1. 调用SetConnectO转载 2014-11-11 22:04:18 · 456 阅读 · 0 评论 -
RakNet学习(35) -- FileListTransfer
FileListTransfer概览 接收发送文件更加容易 FileListTransfer插件用于发送可以读取进FileList类的文件列表。它与DirectoryDeltaTransfer插件类似,它并不发送预先存在的文件的目录信息,也不是完成将文件写到disk的任务。它仅仅处理要发送文件的网络传输部分。 使用:转载 2014-11-11 22:02:46 · 610 阅读 · 0 评论 -
RakNet学习(34) -- Directory Delta Transfer
目录传输器概述 在目录之间自动发送不同文件的目录信息 如果有允许用户修改的内容(user-moddable),DirectoryDeltaTransfer.h就显得非常有用了。例如,如果每一个服务器有一个/skins 目录,那么你就可以运行这个插件将目录下载到客户端上。每一个没有特殊skin的客户端都会接收到这个目录信息。在下载过程中,可以通过user-supp转载 2014-11-11 22:01:01 · 467 阅读 · 0 评论 -
RakNet学习(29) -- Interface 2插件
Interface2 插件 插件Interface2 概述 PluginInterface2.h是与RakNet一起工作的一个类接口,提供了一些自动功能,也即在消息到达用户之前,拦截,修改,以及创建消息。插件可以附加到RakPeerInterface或者PacketizedTCP实例上。每一次Receive()被调用,插件都会进行更新。使用这个插件,仅仅需要从转载 2014-11-10 22:30:08 · 437 阅读 · 0 评论 -
RakNet学者(27) -- IPV6 support
IPv6支持以及与IPv4的不同 IPv6是下一代使用的IP地址。由于可用的IPv4地址已经用尽,需要开发具有更大地址空间的IPv6。整个网络工业会逐渐转向使用IPv6,因此有必要使RakNet支持IPv6以满足将来的应用。 IPv4使用4字节代表IP地址,使用符号表示就是127.0.0.1。IPv6使用16字节,使用如下的标记形式:fe80::7转载 2014-11-10 22:23:32 · 932 阅读 · 0 评论