关于测试机器人的记录

这篇博客记录了测试机器人的实现过程,包括网络部分的设计,如使用TCP连接模拟玩家,多路复用器(select/epoll)管理连接。在测试中遇到的CPU占用过高问题源于未正确处理粘包,导致select持续触发。此外,还讨论了线程数量的选择及其对性能的影响,以及未来可能的测试扩展和优化方向。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

关于测试机器人


这个月零零碎碎都不知道干了些什么 对接的多
主要做了机器人 测试服务器的 要感谢同事之前的工作 我也是在基础上进行的


mmo 主要瓶颈在于网络处理
机器人模拟玩家进行游戏,主要流程当然是登录选择角色,进入游戏,移动,打怪
,获取装备,穿上装备,跑npc,接任务,完成任务。我们主要的目的是让机器人模拟玩家 跑完主线任务即可


游戏内容模拟玩家方面,完成任务,接收任务,获取装备 这三个走gm命令
打怪 走到怪物附近,在技能范围内 释放技能,给服务器发送各种指令
聊天等同样,从配置文件中获取,取随机发言内容,发到公屏
移动依然采用原来的办法,发送移动指令,收到服务器返回,发送下一步移动


下面主要说下结构。
我的想法是,网络部分,一个机器人一个tcp连接,我们游戏上本来就是一个玩家一个连接,
游戏服务器比如连接500个玩家,那么他维护500条连接,假设玩家是均匀分布在不同的地图,
不同线程,他们也不是同时发送消息比如移动,对这500条连接,用多路复用select epoll
20个线程,500人的话一个多路复用器管理25个连接,某个链接需要读了 需要写了,multiplexor
分配给连接对应的processor进行处理,processor也是20个线程,一个processor负责25个连接的消息处理
这样做,消息处理和消息读取 不在一个线程,目的是不让消息处理阻塞网络并发部分的速度。


游戏服的特点是下发消息非常大,收到来自玩家的消息比较少,下行远大于上行,因为AOI的消息很多
同屏情况下 100个玩家移动一步,服务器收到上行消息100条,但是需要同步下发10000条,每个连接的消息
都给同步给视野内玩家,多路复用器大部分时间是在下发消息


机器人进程
加100个机器人,100条连接,我没有每个连接单独监听,也是使用了select epoll,
但是优势并不大,因为机器人测试,每个连接几乎一直在发送消息,
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值