网络游戏中会涉及到多个终端,各个终端以及服务器的系统时间都会存在一定的差异。
如何在在游戏中处理好这种差异呢?

一 使用前端时间
直接获取终端的时间,用来计时,这种方式是很多单机游戏使用的方式。
这种方式时存在漏洞的,例如我们记录进入关卡的时间(客户端时间),然后开始计时,每10分钟恢复1点体力。
当我修改了我的客户端时间之后,体力的值也随之变化了。
即使在后端做了校验,前端显示也会有问题,体验并不好。
或者如果我前端的时间更快,前端显示我已经恢复了体力,但是发送到后端校验时缺失败了。

二 使用后端时间
另外一种方式时都使用后端时间,这又会有什么问题呢?
最明显的就是当前后端不在同一个时区的时,获取的时间并不一致。
另外就是后端的时间每次都去更新比较麻烦。
比如说我要显示倒计时,每次打开界面的时候都需要请求一次系统时间,
然后需要另外在开一个定时器,每秒做一次减一操作。

三 兼顾前后端时间
这是我们游戏最终才有的一种方法。
就是在登录的时候,请求一次系统时间,然后计算前后端时间的差值,
然后再获取前端时间的时候,加上这个差值。

这样就可以完美的解决一二中提到的问题。
但是这又会有另一个问题,当我登录游戏之后,然后将游戏进入后台,然后修改终端时间,
这又会出现一中提到的问题。

我们的解决方法是在从后台进入前台时,重新请求一次后台时间,计算时间差。

lua的代码如下:

-- 保存服务器对时间差
local timeDelta = 0 -- 根据从服务器请求带的时间serverTime和本地时间os.time()计算出时间差serverTime
function setServerTime(serverTime)timeDelta = serverTime - os.time()
end-- 返回本地时间加上时间差之后的时间
function getTime()return os.time() + timeDelta
end

网络游戏前后端时间同步相关推荐

  1. 基于JAVA前后端分离健身房管理系统计算机毕业设计源码+数据库+lw文档+系统+部署

    基于JAVA前后端分离健身房管理系统计算机毕业设计源码+数据库+lw文档+系统+部署 基于JAVA前后端分离健身房管理系统计算机毕业设计源码+数据库+lw文档+系统+部署 本源码技术栈: 项目架构:B ...

  2. 关于前后端分离的概念,作用,优缺点

    前端概念 前端是一切直接与用户交互的页面或软件(用户看得见.摸得着)的统称,比如各种网站网页.andorid 手机各种 App.苹果手机各种 app.微信小程序.网络游戏客户端等.所以,普通人使用计算 ...

  3. 计算机毕业设计JAVA前后端分离在线作业系统mybatis+源码+调试部署+系统+数据库+lw

    计算机毕业设计JAVA前后端分离在线作业系统mybatis+源码+调试部署+系统+数据库+lw 计算机毕业设计JAVA前后端分离在线作业系统mybatis+源码+调试部署+系统+数据库+lw 本源码技 ...

  4. 前后端分离必备工具:Swagger快速搞定(整合SpringBoot详细教程)

    本文根据狂神教学视屏同步所做笔记 目录 一.Swagger简介 1. 前后端分离 2. Swagger引入 二.SpringBoot集成Swagger 1. 新建springboot项目 2. 导入S ...

  5. 前后端分离nginx配置,同时解决跨域问题

    背景 现在,web开发的前后端分离技术越来越火爆,由于最近的公司官网使用了前后端分离的方案,这里就来记录一下前后端分离的项目部署.这里我们使用的前端框架是Vue.js,后台使用Laravel7提供数据 ...

  6. node、Mongo项目如何前后端分离提供接口给前端

    node接口编写,vue-cli代理接口方法  通常前端使用的MocK 数据的方法,去模拟假的数据,但是如果有node Mongodb 去写数据的话就不需要在去mock 数据了,具体的方法如下. 首先 ...

  7. php增删改查前后端分离,前后端分离之前端增删改查

    初次接触前后端分离,现把前端一个例子放出来记录以下,不喜勿喷. html静态页面代码: 菜单管理平台数据... 菜单管理查询条件列表 菜单名称: 菜单父级: 菜单名称: 菜单级别: 菜单父级: 图片地 ...

  8. 前后端分离的接口规范是什么?

    前言 随着互联网的高速发展,前端页面的展示.交互体验越来越灵活.炫丽,响应体验也要求越来越高,后端服务的高并发.高可用.高性能.高扩展等特性的要求也愈加苛刻,从而导致前后端研发各自专注于自己擅长的领域 ...

  9. GitHub开源:一键生成前后端代码神器

    目录 1.技术架构 2.微服务架构图 3.业务应用 本篇博客将为朋友们分享一款神器:JeecgBoot. JeecgBoot 是一款基于代码生成器的低代码开发平台,零代码开发.采用前后端分离架构:Sp ...

最新文章

  1. StaticFactoryMethod_Level4
  2. dw做php怎么做表格透明,DW做的简单PHP管理
  3. python 爬虫面试题_Python爬虫面试题
  4. [THUPC2019]不等式/[51Nod1598]方程最小值
  5. jdbctemplate mysql 配置_Spring JDBCTemplate配置使用
  6. ElasticSearch概述(一)——简介
  7. oracle 包含的对象,oracle – 我可以创建一个包含嵌套表作为属性的对象表吗?
  8. [数分提高]2014-2015-2第9教学周第2次课 (2015-04-30)
  9. Word多级标题测试
  10. java date()使用_Java Date from()用法及代码示例
  11. 更改Ansys Workbench的语言的方法
  12. C语言中char和char *a[]和char (*a)[]
  13. Android Manager之SensorManager---距离传感器
  14. 九江高考2021成绩查询,2021九江市地区高考成绩排名查询,九江市高考各高中成绩喜报榜单...
  15. 告白或写给对象的网页。
  16. c语言致命错误解决,解决VC++编译报错error C2248的方案
  17. 如何在WindowsXP中发短信
  18. new(创建)一个对象时都发生了什么?
  19. keras模型转TensorFlow模型-tensorrt UFF格式
  20. intoduction linux services

热门文章

  1. mysql 查询和修改组合_别崩溃,来看这个MySQL全面瓦解:子查询和组合查询
  2. Unity下Animation资源压缩简析
  3. pandas 转换为文本类型_python – pandas将文本特征转换为数值
  4. 计算机16进制A3 B9,ASCII码16进制对照表
  5. 电平触发和边沿触发——数电第五章学习
  6. Xcode Localizations Change Development Language (Xcode 本地化 修改默认的开发语言)
  7. jmeter压测学习11-模拟浏览器访问web页面
  8. 用SQL获取月份的工作日
  9. 计算机考研是属于工学呢还是理学呀,计算机考研是属于工学呢还是理学
  10. 十大跑步运动耳机品牌有哪些,质量比较好的运动耳机品牌推荐