
一日一点RakNet
xiao_0429
这个作者很懒,什么都没留下…
展开
-
一日一点RakNet(5)--详细实现
详细实现实现 实现RakNet你所要做的就是在程序中获得一个RakPeer的实例。 有一些头问价是你必须需要的:头文件#include "MessageIdentifiers.h"#include "RakPeerInterface.h"#include "RakNetTypes.h"MessageIdetifiers.h包含了一个巨大的枚举翻译 2012-02-20 22:23:49 · 6711 阅读 · 2 评论 -
一日一点RakNet(46)--Packet Logger
PakcetLogger概览 记录进入和发出的消息,用于调试 PacketLogger是一个插件,它可以打印系统所有进入和发出的消息,以便用于调试。它在必要地方解析消息,以表示消息是RPC还是一个时间戳。它也可以将数字的MessageID转换为对应的字符串。默认输出是由逗号分割文本,也可以作为CSV文件读取,在控制台中使用printf函数打印。 要改变输翻译 2012-05-10 14:35:35 · 1267 阅读 · 0 评论 -
一日一点RakNet(45)--NAT punchthrough
NAT穿透 什么是NAT? NAT是解决地址转换问题的一种技术。它使得路由将路由之后的地址使用不同的端口映射到同一个目的地址。例如,如果路由后有两个计算机,但是仅仅有一个ISP提供商提供的IP地址,那么两个计算机将使用同一个IP地址,但是使用的是与应用程序真正赋值的端口号不同的一个端口。路由提供了一个它所做的映射的查询表,因此当远端计算机回复时,这个消息将根据这个映射表路由翻译 2012-05-09 13:56:58 · 3941 阅读 · 0 评论 -
一日一点RakNet(44)--NAT Type detection
NAT类型检测 要完成NAT穿透需要提前确定NAT类型 NAT穿透的成功几率依赖于NAT使用的算法类型。 Full cone NAT:可以从先前使用过的端口上接收到任何数据报。可以从远端的Peer接收到第一个数据报。 Address-Restricted cone NAT:只要数据报源IP地址是先前我们发送过数据的系统,那么可以翻译 2012-05-08 10:03:36 · 2411 阅读 · 1 评论 -
一日一点RakNet(42)--Lobby2Client-Games for Windows Live
Games for Windows Live Lobby 支持使用普通代码给360安排比赛 Windows Live的游戏提供了一组Windows函数,与360的大厅函数类似。事实上,按照GFWL定义修改一点,RakNet在两个平台上就可以使用相同的代码。 所有的资料都类似于Xbox360lobby.html,下面是一些不同的地方:翻译 2012-05-07 12:24:37 · 8614 阅读 · 0 评论 -
一日一点RakNet(43)--Message Filter
消息过滤概览 通过类别限制进入系统的消息 对于Client/Server拓扑,你可能不想任何系统发送一些消息。例如,或许只有服务器可以发送kill消息。或者可能想要将玩家分为各个阶段,已经登录的用户,但是没有提供他们的密码,那么就不能发送游戏消息。消息过滤器的设计主要是用于自动处理这些情况。 MessageFilter插件通过“filterSet翻译 2012-05-07 12:27:11 · 1023 阅读 · 0 评论 -
一日一点RakNet(41)--Lobby2Client_360
Lobby2Client_360概览 带有Live的RakNet接口,包括音频聊天 XBOX没有提供房间和大厅的概念,事实上还是要求用户实现网络通讯来配置游戏比赛。RakNet使用Lobby2Client_360插件来处理这个问题。XBOX也不处理主机迁移,然而,如果如果加入了FullyConnectedMesh2插件,Lobby2Client_360插件可以自动检测主机迁翻译 2012-05-06 11:36:01 · 1004 阅读 · 0 评论 -
一日一点RakNet(40)--Lobby2Client-PS3
Lobby2Client_360插件概览 NP系统的接口,包括信号 PS3 NP系统提供了房间和大厅的概念。Sony也使用NAT穿透架起了自己的主机服务器。通过使用Lobby2Client_PS3插件,这些服务以RakNet接口的方式提供给用户使用。 例子位于np_matching2_lobby工程下的RakNet_PS3_VS2005解决方案下。这个例翻译 2012-05-05 08:32:15 · 1051 阅读 · 0 评论 -
一日一点RakNet(35)--Directory Delta Transfer
目录传输器概述 在目录之间自动发送不同文件的目录信息 如果有允许用户修改的内容(user-moddable),DirectoryDeltaTransfer.h就显得非常有用了。例如,如果每一个服务器有一个/skins 目录,那么你就可以运行这个插件将目录下载到客户端上。每一个没有特殊skin的客户端都会接收到这个目录信息。在下载过程中,可以通过user-supplied回调翻译 2012-04-18 19:01:58 · 901 阅读 · 0 评论 -
一日一点RakNet(39)--Lobby2Client-Steam
Lobby2Client_Stream概览 使用Steamworks服务加入大厅,房间以及做NAT穿透 Lobby2Client_Steam插件提供了一个Steamworks服务的插件,这个服务可以与RakNet协作实现一些功能。这个服务不再需要提供你自己的服务器,自己提供服务器需要RakNet的NATPunchthrough和Lobby系统。 依赖:翻译 2012-05-03 07:37:25 · 1162 阅读 · 0 评论 -
一日一点RakNet(34)--Connection Graph
Connection Graph 插件接口实现Connection Graph 实现概览 ConnectionGraph插件维护了整个网络的链接图,这样每一个对等端可以相互知道对方在线。连接图在新的系统连接或连接断开时进行更新。 你可以有选择使用密码,用于允许确定的系统参加进地图中,保证只有知道密码的玩家才能进入地图游戏。 ConnectionG翻译 2012-04-18 18:58:39 · 954 阅读 · 0 评论 -
一日一点RakNet(38)--Lobby2Client PC
大厅服务器 数据库支持好友,房间,邮件,排名和更多功能 大厅服务器是一个提供了PostgreSQL数据库驱动功能的插件,使用数据库可以持久化游戏数据和比赛信息(也即将游戏数据存入数据库长期存放)。大厅服务器本身不要求特别多的用户交互,涉及交互的地方的交互命令是通过LobbyClient_PC类执行。 大厅服务器分为两个类,LobbyServer本身单翻译 2012-05-02 08:08:21 · 1124 阅读 · 0 评论 -
一日一点RakNet(36)--FileListTransfer
FileListTransfer概览 接收发送文件更加容易 FileListTransfer插件用于发送可以读取进FileList类的文件列表。它与DirectoryDeltaTransfer插件类似,它并不发送预先存在的文件的目录信息,也不是完成将文件写到disk的任务。它仅仅处理要发送文件的网络传输部分。 使用: 1.服务器:翻译 2012-04-29 08:28:56 · 1413 阅读 · 0 评论 -
一日一点RakNet(37)--Fully Connected 2
FullyConnectedMesh2插件 在自动选择一个长期运行系统时,生成一个完整的连接网络 在端到端的游戏中需要其中一个Peer充当主机,为系统创建唯一的游戏事件。例如,这个主机发送游戏结束通知或控制AI。FullyConnectedMesh2插件可以用于在连接之后自动决定主机。 概览: 1.调用SetConnectOnNewRemot翻译 2012-05-01 07:46:02 · 1224 阅读 · 0 评论 -
一日一点RakNet(33)--Cloud Computing
云计算概览 通过服务器云可访问的客户端内存/事件 有时想要大量的没有相互连接的客户端在相互不知道对方存在前提下共享内存或得到事件的通知。例如: 1. 高性能服务器浏览器 2. 游戏内百万用户的统计 3. 云计算 在云服务中的“云”意味着系统支持分布式服务器。任何的服务器可以Post()到服务器,或从服务器翻译 2012-04-11 13:40:25 · 1203 阅读 · 1 评论 -
一日一点RakNet(47)--RakVoice
RakVoice 实时语音通信 RakVoice是RakNet的一个特色,这个插件可以实现实时语音通信,在8000 16 bit per sec的采样标准下,通信代价仅仅是每秒2200字节数据。这个插件使用Speex来进行语音的编码。RakVoice是一个插件类,使得编码,发送,解码和播放音频数据更加简单。 得到RakVoice实例,仅仅需要使用new分翻译 2012-05-11 12:52:16 · 1352 阅读 · 0 评论 -
一日一点RakNet(48)--ReadyEvent
ReadyEvent概览 一个事件准备好可以作处理的信号 在端到端环境下,确定什么时候所有的Peer准备好了,可以发生一些共享的事件是非常繁琐的一件事,例如从大厅开始游戏,或者进行下一轮游戏等。最大的问题是,尽管你的系统已经准备好开始,所有的连接的系统或许在你知道时已经准备好,但是这些系统可能不知道他们相对于其他的用户是否已经准备好。这主要是由于延迟或者数据报丢失可翻译 2012-05-12 12:28:47 · 1117 阅读 · 0 评论 -
一日一点RakNet(49)--Replica Manager 3
Replica Manager 3插件接口实现(复制管理器) Replica Manager 3实现概览 任何在游戏进行期间有对象进行创建和销毁的游戏,也就是几乎所有的大型游戏,最少面临如下的三个问题: 1.如何将已存的游戏对象广播给新的玩家 2.如何将新游戏对象广播给已存的玩家 3.如何将删除的游戏对象广翻译 2012-05-12 12:38:16 · 1794 阅读 · 0 评论 -
结束语
结束语 至此,RakNet的文档基本翻译完毕了,本来计划两个月翻译完,但是吧,零零散散总有事情耽误,前赶后补地总算结束了。 这最后吧还得有点说明,开始时,文章的意思基本都理解,也都知道是怎么回事,到了后面,由于没有进行代码实践,有很多插件啦,代码啦或者是作者说的场景就不太清楚了。连猜带蒙翻译了,肯定有很多地方根本不合适,当然了这些地方需要后期慢慢的完善。有要看的这些原创 2012-05-24 07:50:10 · 1102 阅读 · 2 评论 -
一日一点RakNet(62)--Irrlicht FPS实例
Irrlicht FPS样例 以第一人射击视角说明端到端连接性 FPS样例使用了Irrlicht游戏引擎来四处移动角色和子弹。 运行这个实例,下载免费的游戏引擎Irrilicht。默认情况下,它安装在了C:\irrlicht-1.6目录下。 在解决方案中,打开Samples/3D Demos/Irrlicht Demo工程,右击并编译翻译 2012-05-24 07:48:23 · 1571 阅读 · 0 评论 -
一日一点RakNet(61)--Ogre 3D Interpolation样例
Ogre 3D Interpolation样例 3D Interpolation说明 Ogre 3D interpolation样例使用了图形引擎Ogre 3D来渲染爆米花爆的情景。 服务器有一个一束爆米花核心,它向外弹出爆米花,漫天乱飞。一会所有爆米花都删除了。 客户端是一个静默(dumb)客户端,因为客户端不做任何动作,也没有处理翻译 2012-05-23 07:59:07 · 1385 阅读 · 0 评论 -
一日一点RakNet(60)--PHP Directory Server(目录服务器)
PHP目录服务器概述 使用共享的Web主机给出游戏列表 Lightweight数据库插件功能强大,但是它要求一个一台专用的服务器运行RakNet实例。在有些情况下,这个要求无法满足,并且运行专用服务器额负担也是不可取的。对于这些情况,RakNet提供了一个DirectoryServer.php,它可以再Sample\PHPDirecotory目录下找到。翻译 2012-05-22 11:47:18 · 1822 阅读 · 0 评论 -
一日一点RakNet(59)--TCP Interface(TCP接口)
TCP接口概述连接到Telnet、HTTP服务器、mail服务器或其他TCPInterface类可以在TCPInterface.h文件中找到,它是一个功能类用于使用TCP协议在一些必要情况下进行连接。连接过程和RakPeerInterface.h类似,但是TCPInterface类中Receive()函数返回接收到的数据,第一个字节不是一些特定的标示符。为了获得连接状态更新,使用Has翻译 2012-05-21 20:35:44 · 2618 阅读 · 0 评论 -
一日一点RakNet(58)--StringCompressor(字符串压缩器)
字符串压缩器(StringCompressor)概述 安全编码和解码字符串 StringCompressor类位于StringCompressor.h文件中,它可以以一种安全的方式编码和解码字符串,避免过度运算。 发送方: const char *str = "My string";stringCompressor->Encod翻译 2012-05-20 11:44:04 · 1499 阅读 · 0 评论 -
一日一点RakNet(57)--EmailSender(邮件发送器)
EmailSender概览 通过C++发送邮件的简单类 EmailSender类,可以在EmailSender.h中找到该类,这个类是一个仅仅有一个函数Send(…)的简单类,这个函数用于使用一个mail服务器发送email。它被内在地用于CrashReporter类来为未被监控的服务器发送邮件。参考EmailSender.h文件,了解每一个参数的完整描述。翻译 2012-05-19 12:16:10 · 1729 阅读 · 0 评论 -
一日一点RakNet(56)--Command Console Server(命令行控制台服务器)
命令行控制台服务器概述 使用控制台远程控制游戏服务器 有时当你不在特殊计算机之前时,命令行控制台控制服务器是非常有用的。由于服务器确定时会有用,这个主机与该服务器控制地不同的情况下就会有用了。或者或许你有许多服务器需要控制,你想要通过一个脚本控制这些服务器。ConsoleServer,CommandParserInterface,和TransportInterface是翻译 2012-05-18 10:42:27 · 1707 阅读 · 0 评论 -
一日一点RakNet(55)--Crash Reporter(崩溃报告器)
崩溃报告器概览 Minidumps使得崩溃报告功能容易实现 CrashReporter可以在RakNet/Samples/CrashReporter中找到,仅仅可以用于Windows平台,它的作用是调试无监控的服务器或游戏客户端。当崩溃发生时,CrashReporter会捕捉异常,写一个minidump,然后将信息写到磁盘或发送email。Email的操作可以是交互式,打开翻译 2012-05-17 14:54:35 · 4899 阅读 · 0 评论 -
一日一点RakNet(54)--TwoWayAuthentication插件
TwoWayAuthentication插件概览 由一对系统安全地验证已知的密码 通常使用RakNet你可以使用Secure connections安全传输数据。然而,有时一对系统或许没有活动的安全连接。例如,在移动电话上,安全代码需要使用太多内存,变得很慢,或者不能编译。在这种情况下,你依然可以提前向两个系统使用密码验证一个远端系统。RakNet使用Two Way翻译 2012-05-16 20:05:24 · 1104 阅读 · 0 评论 -
一日一点RakNet(53)--TeamBalancer
TeamBalancer概览 请求和平衡团队客户端/服务器或端到端游戏 TeamBalancer插件用于在游戏会话中给每一个玩家赋予一个团队编号。玩家默认没有团队,通过调用RequestSpecificTeam()或RequestAnyTeam()方法来加入团队。 操作包括: SetTeamSizeLimits()—能够加入到一个给定翻译 2012-05-15 22:26:00 · 858 阅读 · 0 评论 -
一日一点RakNet(52)--SQLite3Plugin
SQLite3Plugin概览 使用SQLite通过网络存储游戏或会话数据 游戏通常需要一个服务器存储会话信息,例如所有正在运行的游戏,或者在游戏中的所有玩家,或者两者都有。这个服务器称为主服务器,由商业服务提供,通常有很高的租用费用。然而,这些服务器的核心是仅仅提供了一个类似于如下的画的一个数据库表格。 先前的几个RakNet翻译 2012-05-15 22:24:13 · 2027 阅读 · 0 评论 -
一日一点RakNet(51)--SQLite3LoggerPlugin设置
SQLite3LoggerPlugin设置概览 RakNet的SQLLite日志系统允许任何支持TCP的系统向远端服务器发送日志。日志自动包含了源文件和行,以及日志发送的时间,发送者的IP地址。日志系统支持实时时间DXT1压缩,允许游戏会话的视频重放。记录日志并不需要SQL知识,事实上通过RakNet记录日志就和通过printf发送一样简单。在编译时间,各种类型是系统自动检测的翻译 2012-05-14 17:28:40 · 1012 阅读 · 0 评论 -
一日一点RakNet(50)--Router2
Router2概览 通过中间系统发送消息 Router2可以再没有直接相连的系统之间路由数据报,它需要使用第三个系统的带宽,要求两个系统都要与第三个系统相连。当希望使用完全连接网拓扑时,但是由于路由和/或防火墙的原因不能建立完全连接,这个插件非常有用。由于远端系统的系统地址是中间系统的地址,那么需要使用RakNetGUID对象来访问系统,包括其他的插件。翻译 2012-05-13 12:20:04 · 1058 阅读 · 0 评论 -
一日一点RakNet(24)--Rackspace Interface
Rakspace 云服务器API的C++接口 用编程的方式管理应用服务器 Rakspace提供了基于API的HTTPS,具体的API信息可以在连接中找到(http://docs.rackspacecloud.com/servers/api/v1.0/cs-devguide-20110112.pdf)。使用TCPInterface时,RakNet支持HTTPS,编译时需要将R翻译 2012-03-21 17:47:55 · 1196 阅读 · 0 评论 -
一日一点RakNet(33)--Cloud Computing
云计算概览 通过服务器云实现客户端可访问的内存/事件 有时想要大量的没有相互连接的客户端,它们不需要相互知道对方的存在而共享内存或得到事件的通知。例如: 1. 高性能服务器浏览器 2. 游戏内百万用户的统计 3. 云计算 在云服务中的“云”意味着系统支持分布式服务器。任何的服务器可以Post()到服务器,或从服翻译 2012-04-08 09:08:55 · 1039 阅读 · 0 评论 -
一日一点RakNet(23)--Cloud hosting
如何使用RakNet设置云端主机服务? 通过Rackspace实现云端主机服务一些服务,例如Autopacher,Cloud Server,以及NAT穿透服务器,要求一个运行了RakNet的服务器。当可以使用额外的主机例如Hypernia或dx.net运行这些服务时,这些服务器一个月大概要$150。扩展服务也要求浪费时间安装代码库,不可能使用编程地实现。 RakNet使翻译 2012-03-20 13:02:13 · 1241 阅读 · 0 评论 -
一日一点RakNet(13)--Send Packets
发送数据包 第一步:确定数据正如在Creating Pakcets中描述的,找出你需要使用的数据类型,使用bitstream或结构体。第二部:确定授权(authority这个词我也不太清楚如何翻译,只是理解意思) 你通常会发送动作的触发数据,而不是一系列动作的结果。通常来讲,数据源分为如下三类: 来自做出动作的函数 来自做出动作的函数翻译 2012-03-05 21:43:47 · 2511 阅读 · 3 评论 -
一日一点RakNet(12)--Creating Packets
创建数据包 如何将游戏数据编码到数据包中 运行RakNet的系统,事实上所有在因特网上的系统,都是通过人们所熟知的数据包进行通信。或更加准确点在UDP下,它用的是数据报。每一个数据报由RakNet创建,并且包含了一条或多条消息。消息可以由你创建,例如位置或健康(health这个词确实不知道如何翻译好),或者有时由RakNet内部创建的数据,例如pings。按照惯例,消息的第翻译 2012-03-04 15:03:04 · 2470 阅读 · 0 评论 -
一日一点RakNet(11)--Connecting
连接到其他的系统 寻找连接目标 有5个方式来发现要连接到的系统: 1. 直接输入IP地址(这个广为人知)。 2. LAN广播 3. 使用ClientServer/CloudClient插件 4. 使用游戏大厅服务器或房间插件 5. 使用目录服务器DirectoryServer选择1:输入IP地址翻译 2012-03-02 13:32:20 · 3466 阅读 · 0 评论 -
一日一点RakNet(6)--帮助手册
帮助手册 工程设置 在教程中,所有的图片和界面参考的是VS2005,微软版权。同等参数配置你的编译器。1. 创建Win32控制台工程,将它命名为ChatServer 2. 选择控制台应用程序,以及空工程。选择Windows应用程序也是可以的。 3.加入RakNet源文件到工程中。可以右键点击工程名字,选择Add,然后是Exiting标签。浏览到你下载的RakNe翻译 2012-02-21 12:29:21 · 2595 阅读 · 0 评论 -
一日一点RakNet(4)--系统概览
系统概览 系统结构 RakNet大致上说定义了3个库:网络通信哭,用于网络通信的插件模块,和支撑功能。 网络通信是用两个类来提供的。RakPeer和TCPInterface。RakPeer是游戏使用的主要的类,它基于UDP。它提供了连接,连接管理,拥塞控制,远程服务器检测,带外数据,连接统计,延迟,丢包仿真,阻止列表和安全连接功能。 TCPI翻译 2012-02-20 08:36:41 · 3444 阅读 · 0 评论