游戏网络中使用的常见方法是什么?
所以我正在编写一个非常简单的游戏,其网络要求非常低,我正在使用TCP。
我不确定从哪里开始甚至定义/实现客户端和服务器要使用的协议。我一直在寻找,我看到了一些例子,例如Mojang的Minecraft,它使用客户端发送到服务器和服务器发送到客户端的“命令”表,带有参数数量等等。
怎么做?我听说过Minecraft的协议投诉,因为如果您超出一个字节,则会破坏整个流。
原文链接 https://stackoverflow.com/questions/7248409
我猜这取决于你的游戏是什么,它的机制是什么,需要什么信息。无论如何,我认为这个栈交换 https://gamedev.stackexchange.com/ 更适合回答你的问题。
游戏网络是一个泛泛之问,取决于你要解决哪种类型的问题。TCP 可能并不是你的正确选择。
例如 - 发送角色行动的游戏通常使用 UDP。原因是角色移动对于游戏的操作并不是关键的,因此一些移动数据的丢失是“可接受的”。这可能就是为什么有时候你的角色会“跳跃” - 一些UDP数据包被丢失或者严重失序。
UDP 被认为是网络游戏的首选协议。因此,在你开始之前,请仔细考虑你是否选择了正确的协议。
总的来说,我认为 Glenn Fiedler 开发网络游戏系列 是一篇绝妙的读物。我会从这里开始。他涵盖了使用 UDP 玩游戏的所有基础知识。
如果你想仅仅使用 TCP 来掌握 TCP - 那么 Minecraft 是一个合理的例子。一个已知的可发送和接收的命令列表是一个简单的开始方式。然而,正如你所说的,它容易出现一些问题。这更多的是与使用错误的协议有关,而不是与它的开发方式有关。
Gamedev.net的网络论坛有一个很棒的FAQ,涵盖了这些问题和许多其他问题,但是为了使这个回答不仅是“去那里看看”,我会建议一些小的改进。使用tcp时,交付是有保障的,但这意味着速度成本,如果你不是制作FPS,那就好了,但这意味着你需要从你发送的数据中获得更多东西,一个很好的方法是通过差分/差异,即仅发送状态的改变,而不是整个游戏状态,您也可以验证传入的数据包是否损坏/异常数据,通过预测可能发生的损坏,并且可以通过相同的预测削减更多数据等等。但是正如其他人所说,这是一个广泛的问题,并不适合得到真正有用的答案。
- 如何在roblox studio中1:1导入真实世界的地形?
- 求解,lua_resume的第二次调用继续执行协程问题。
- 【上海普陀区】内向猫网络招募【Skynet游戏框架Lua后端程序员】
- SF爱好求教:如何用lua实现游戏内调用数据库函数实现账号密码注册?
- Lua实现网站后台开发
- LUA错误显式返回,社区常见的规约是怎么样的
- lua5.3下载库失败
- 请问如何实现文本框内容和某个网页搜索框内容连接,并把网页输出来的结果反馈到另外一个文本框上
- lua lanes多线程使用
- 一个kv数据库
- openresty 有没有比较轻量的 docker 镜像
- 想问一下,有大佬用过luacurl吗
- 在Lua执行过程中使用Load函数出现问题
- 为什么 neovim 里没有显示一些特殊字符?
- Lua比较两个表的值(不考虑键的顺序)
- 有个lua简单的项目,外包,有意者加微信 liuheng600456详谈,最好在成都
- 如何在 Visual Studio 2022 中运行 Lua 代码?
- addEventListener 返回 nil Lua
- Lua中获取用户配置主目录的跨平台方法
- 如何编写 Lua 模式将字符串(嵌套数组)转换为真正的数组?
在谷歌上搜索“游戏网络库” 将会得到许多结果。GNE 是一个不错的选择。