• 有价值文章收集(即时通信)


    即时游戏通信

    所有逻辑实际发生的时刻都在服务端,只有当数据发送到服务端时,事件才真正发生。
    客户端的操作应该是立即响应的,必须先行动,才发送数据。
    导致的结果是,客户端的事件发生时间和服务端是不同的。自己的行为会比服务端早,别人的行为会比服务端晚。由于具有时间差,客户端完成的行为可能会和服务端实际发生的行为不同。这时候就只能由服务端校正客户端,但只有在出现冲突时才需要校正,而不用校正所有的差异。
    当客户端必须从服务端获得数据才能继续逻辑的时候,自然只能等待服务端返回才会出现事件,但是服务端的事件会先发生。
    服务端发送的事件,客户端必须无条件接收,无论当时看起来是否合理。

    行走,应该认为是客户端在实际远程操作服务端,将自己的操作发送给它。因此必然是具有延迟的操作。而客户端的显示则是自己处理的。不同步将会影响其他的判断,但这是无法避免的。双方差异过大则校正。
    普通的攻击。只要客户端显示在范围内,CD时间已经到了,攻击动画就可以正常播放。但是由于具体的伤害值必须由服务端计算(随机),因此伤害数据和实际减血必须等服务端返回后才会发生。如果由于坐标问题服务端判断这个攻击不成立,将返回MISS。
    某些顺发技能可能无法做MISS处理,则需要先由服务器判断是否可行后再释放。可以先做动作,但是效果发生在判断完成前必须等待。
    打开宝箱是立即的操作,但是显示获得物体必须服务端判断。如果认为无法获得宝箱,显示空或者错误信息。
    触发陷阱,完全服务端判断,客户端只作显示。

  • 相关阅读:
    linux下安装jdk1.8
    在eclipse里面启动tomcat服务器时报错Server Tomcat v7.0 Server at localhost failed to start.
    frame使关闭口生效
    web.xml配置错误处理节点
    mac下修改mysql默认字符集为utf8
    Centos6.5关闭防火墙命令
    mysql修改
    java错误:The superclass "javax.servlet.http.HttpServlet" was not found on the Java Build
    完美解决Linux服务器tomcat开机自启动问题
    MAC 查看java home目录
  • 原文地址:https://www.cnblogs.com/axyz/p/2059598.html
Copyright © 2020-2023  润新知