好吧,实际上我已经知道你等不及了,所以让我们开始吧。
程序代码与《2D网络游戏开发(在线篇)(四)》中的相同,只是我们需要在其中添加一些内容。
在进入循环之前,我们需要定义一个消息变量来存储我们将发送的消息。
字符消息[2048];
进入循环并在循环开头添加以下代码,然后再接收信息:
如果(kbhit())
获取(消息);
if(rak服务器接口)
rakServerInterface->发送(消息, (const int) strlen(消息)+1, HIGH_PRIORITY, RELIABLE_ORDERED, 0, UNASSIGNED_PLAYER_ID, true);
别的
rakClientInterface->发送(消息, (int) strlen(消息)+1, HIGH_PRIORITY, RELIABLE_ORDERED, 0);
好了,我们来分析一下上面的代码。
kbhit()用于监听是否有按键按下。 如果没有,先获取信息,保存在消息中,然后监控你是构建服务器还是客户端。
如果是服务器,则使用服务器发送数据,否则使用客户端发送数据。
让我们仔细看看服务器的 send() 函数:
第一个参数指向你要发送的数据;
第二个参数是您发送的数据的大小。 也许你会问,为什么要加1呢? 那是因为我们的数据是以数据流的形式发送的网络游戏开发,如果数据之间不留空格,网络引擎就无法区分数据,所以我们必须在每个数据后面加一个空格。 这相当于将一根电线切成几段。
第三个参数用于设置您发送的数据的重要性。 一共有三个参数:
高优先级
MEDIUM_PRIORITY
低优先级
它们的重要性分为高、中、低。 网络引擎发送数据时,首先要对数据进行排队,按照重要性发送。 重要性较高的先发送,否则后发送。
第四个参数,可靠性,有五个参数:
不可靠 - 5、1、6
UNRELIABLE_SEQUENCED - 5
可靠 - 5、1、4、6、2、3
RELIABLE_ORDERED - 1、2、3、4、5、6
RELIABLE_SEQUENCED - 5、6
可靠性是什么意思? 也就是说,当网络引擎发送数据时,如果选择可靠地发送数据,那么数据会按正确的顺序到达,但如果选择不可靠,那么数据可能会不间断地到达。
常用的是 RELIABLE - 5, 1, 4, 6, 2, 3 和 RELIABLE_ORDERED - 1, 2, 3, 4, 5, 6。
第五个参数通常选择0,不是很重要。
第六个参数,接收者的ID网络游戏开发,直接用UNASSIGNED_PLAYER_ID设置。
第七个参数,是否广播,有两个参数0和1。0表示不广播,1表示向所有连接到服务器的客户端发送此信息。
rakClientInterface的send函数与服务器端的参数相同,只是缺少了最后两个。
最后我们要修改以下内容:
存在
默认:
下面游戏图片,修改程序如下:
printf("%sn", 数据包->数据);
if(rak服务器接口)
sprintf(消息,"%s",数据包->数据);
rakServerInterface->发送(消息, (const int) strlen(消息)+1, HIGH_PRIORITY, RELIABLE_ORDERED, 0, UNASSIGNED_PLAYER_ID, true);
第一条语句打印我们收到的数据;
如果我们正在构建一个服务器3D动画,那么我们会将接收到的数据转换为char格式(因为packet->data的数据格式是unsigned char),然后将这个数据广播给服务器中的所有客户端。
至此,我们的程序就完成了,运行效果如下:
服务器:
图例1
客户1:
传奇2
客户2
传奇3
好了,今天就到这里了,祝大家周末愉快,玩得开心!
欲了解更多信息,请访问金桥科普网游戏开发版块()。 如果您需要游戏开发方面的书籍,请参考金桥书店游戏频道()。 如果您在阅读本文时有什么好的建议,请写信给我,我的E_mail: 。 如果您在使用SDL时遇到任何问题,请到金桥科普网游戏开发版块(),我会详细帮助您。 回答。