自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(4)
  • 收藏
  • 关注

原创 魔兽世界服务端3.3.5版本源码剖析之地图管理

是小格子的坐标,比如0002337表示000是地图标号,x坐标是23,y坐标是37)生成寻路导航数据navMesh,后面的轴对称包围盒碰撞算法(A*算法)用到这个导航数据。静态数据信息的包围盒,包围盒是一个立体空间将物体包围起来,物体与物体之间的碰撞就是包围盒的碰撞,简化了碰撞检测,文件格式有*.wmo、*.m2 对应world map object;合并mmaps_generator和vmap4extrator生成的数据,未来使用vmap4extrator生成的数据就行了,生成*.vmtile文件。

2025-06-28 14:37:54 962

原创 魔兽世界服务端3.3.5版本源码剖析之网络模块

在主线程的循环WorldUpdateLoop()中,默认1ms执行一次sWorld->Update(diff),sWorld->Update中UpdateSessions(diff),更新上面网络线程添加到addSessQueue中的session,取出session的消息队列_recvQueue,并消费消息, 在消费消息中,WorldSessionFilter updater(pSession),这是个过滤器,因为我们处理消息有主世界线程和地图map线程,至此,整个网络消息的处理流程已运行完毕。

2025-06-28 14:25:50 1014

原创 windows IOCP编程

由我们的主线程(或者单例对象)调用PostEvent()往m_hCompletionPort的投递队列投递一个异步请求,工作线程GetQueuedCompletionStatus()成功后会从完成队列取出完成操作并执行pEvent的回调函数。将监听套接字socket与上面创建的m_hCompletionPort绑定,这样,我们就能基于m_hCompletionPort投递我们要对socket的异步操作,这里是对监听套接字socket发起异步连接。第四个参数1:指定允许同时执行的线程数。

2025-06-28 13:56:44 379

原创 网络编程原理之阻塞/非阻塞、同步/异步

阻塞/非阻塞: 阻塞和非阻塞是针对我们某个系统调用来说的,比如recv()/read()发起读取某个acceptSocket数据的系统调用,某个客户端发过来的数据首先会放在操作系统内核的某个缓冲区里,我们应用程序可以通过acceptSocket这个标识符以及recv()/read()系统调用去获取,并且将我们需要获取的数据保存在应用程序的缓冲区里,比如我们需要读取100字节到我们指定的应用程序的缓冲区里,但是实际内核缓冲区不足100字节,那么recv()/read()就会阻塞住应用程序往下运行。

2025-06-28 11:30:07 224

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除