![]() |
1
5
网络游戏编程是一个怪物的话题,所以很难说“是的,这就是你如何设计一个网络架构”。它完全取决于您的游戏要求。你打算发送多少包?是否会在每一帧发送一个数据包,表明播放器a持有左键?这种通信是否仅限于局域网? 对于像在4个客户机之间同步移动这样简单的事情,将发送、接收和呈现放在不同的线程中似乎有些过分了。也许作为一个起点,您应该从一个更简单的设计开始,当您觉得数据包的输出速度不够快时,就转向多线程。
在每一帧开始时,您可以读取udp套接字以获取传入的数据包和更新位置(以及发送给对等方的任何其他内容),然后绘制。当游戏输入被处理时,数据包被创建并累积在数据包队列中。通过这种方式,您可以执行优化,例如将多个消息塞进/合并到一个数据包中,删除重复的消息(例如,只发送最新的位置更新)等。因此,在每个游戏循环结束时,处理最终的数据包队列并将其发送给对等方。 不过,这是一个大话题,我已经忽略了很多细节。 看看gaffer的博客: http://gafferongames.com/networking-for-game-programmers/what-every-programmer-needs-to-know-about-game-networking/
|
|
Milut · Java:使用服务器在两个客户端之间创建P2P 7 年前 |
![]() |
cn-ge · 区块链:要与之交互,是否需要安装客户端应用程序? 7 年前 |
![]() |
manidos · 对称NAT(就ISP而言)的优势是什么? 7 年前 |
|
kangsouth · 为什么糕点DHT有一个有效的路线 7 年前 |
![]() |
Chong Lip Phang · 对等:检测到其他对等,但连接未打开 7 年前 |
![]() |
sdgfsdh · 在我的对等应用程序中,我应该使用多个端口吗? 9 年前 |