HTML5游戏开发实战之游戏自动保存进度

news/2024/7/7 13:32:29
  大概玩游戏的时候最讨厌的就是游戏没打完退出之后的状态了,但是在html5游戏上则不会出现这种情况。像site pinning特性, 试图给web浏览器web应用程序和常规的桌面应用同样的地位。 然而, 作为应用程序运行的网站想法太新了, 网页要维持客户端状态。 关闭Microsoft Word前,你可能会三思后行, 但是可能不会对于一个开放的网页谨慎行事。大部分时间, 它不是问题 --- 大多数网页要嘛是无状态的, 要嘛是在服务器上维护记录你的信息。 

  然而, 浏览器游戏, 是非常不同的小怪兽。 既然JavaScript代码运行在客户端, HTML5游戏状态通常都保持在瞬时内存中(又称RAM)。关闭游戏器窗口,你辛苦赚取的积分就付之东流了。 

  现在, 你可能会认为, 一个明智的用户会足够谨慎, 他们连续玩了8小时, 不关闭游戏。 但事故常有发生, 特别是当打开了多个选项卡或突然断电。

  一言蔽之: 当编写HTML5游戏的时候, 绝对的最佳实践是定期保持玩家进度,  允许玩家恢复上一次关闭网页时的状态。

  现在,你应在哪保存玩家的进度呢?过去,显而易见的地方是服务器端或浏览器cookie。 两个解决方案都不是特别有吸引力。 服务器端方案, HTTP请求不得不每次构造需要存储或取回的信息。 使用cookie的方案, 你的空间就非常有限了, cookie的可用空间大大依赖于浏览器配置。

  更好的可行方案是使用HTML5 DOM storage。 DOM storage 通过一个接口, 让你为每个网站保存几兆的数据, 它类似于一个key-value存储(或者一个JavaScript expando对象)。 这非常方便,但在HTML5游戏上下文中, 你也可能需要记住复杂的数据结构 --- 一些DOM storage非原生支持的结构。 

  幸运的是,现代的JavaScript引擎都有内建的机制, 將对象序列化成紧凑的结构,如JSON。 使用这种方案, DOM storage也可以记住复杂信息。接下来的两个助手函数, 使用HTML5 DOM storage和ECMAScript5的内建JSON特性, 解决了游戏状态的存储和取回。

function saveState(state) {
    window.localStorage.setItem("gameState", JSON.stringify(state));
}
 
function restoreState() {
    var state = window.localStorage.getItem("gameState");
    if (state) {
        return JSON.parse(state);
    } else {
        return null;
    }
}


  想要了解 HTML5游戏开发更多请关注H5edu官网、微信等平台。

http://www.niftyadmin.cn/n/3569831.html

相关文章

Oracle的ha模式启停,Oracle 启停

Oracle 启停步骤一: 以管理员方式连接 oracle(1)oracle$ sqlplus /nolog; -- 不在 cmd 或者 terminal 当中暴露密码的登陆方式SQL> conn / as sysdba;(2)oracle$ sqlplus "/as sysdba" ; 或者 sqlplus / as sysdba;(3)oracle$ sqlplus scott/tiger; -- 非管理员用…

客户端和服务端对异常的不同处理态度【JFinal】

服务端后台管理这种如果代码中抛出异常,其Tx事务能起作用,但是在客户端与服务端交互的时候很多都是通过JSON或者XML格式,为了用户体验,成功的话就正常返回,不成功也应该给出失败的信息,而不是直接报505这种…

HTML5游戏开发实践之使用监控器

开发游戏的一个最大挑战是加入越来越多的游戏特性的同时能保持高帧率。好消息是, 浏览器比过去几年快了很多,HTML5开发游戏运行在恒定的60fps已经成为现实。这实属不易。 对于IE9,意味着要编写一个全新的JavaScript引擎, 使用多CPU内核和基于Direct2D的完全的硬件加速渲染管道。…

JSON的解析[Java-JSON、FastJSON、GSON]

Java-Json 一、 JSON (JavaScript Object Notation)一种简单的数据格式,比xml更轻巧。 Json建构于两种结构: 1、“名称/值”对的集合(A collection of name/value pairs)。不同的语言中&#xff0c…

CaSS中lisp命令不可用_干货在线 | 关于cass那些你不知道的秘密

南方数码地形地籍成图软件(简称CASS)是基于AutoCAD平台技术的GIS前端数据处理系统。CASS应用领域主要集中在下图的几个分支中,其中“行业应用”指CASS的一些行业应用版本,比如农村地籍版、勘测定界版、管线版等~小技巧画线:南方里面提供了强大…

内容查找

2019独角兽企业重金招聘Python工程师标准>>> Word查找栏代码通配符一览表 https://www.cnblogs.com/kevin-yuan/archive/2012/11/18/2775714.html 序号 清除使用通配符复选框 勾选使用通配符复选框 特殊字符 代码 特殊字符 代码or通配符 1 任意单个字符 ^?…

HTML5混合开发工程师行业前景分析

HTML5混合开发工程师,也叫Web前端开发工程师。HTML5前端是随着Web发展,细分出来的行业。H5混合开发工程师 ,主要职责是利用HTML/CSS/JavaScript/DOM等各种Web技术 进行产品的界面开发。制作标准优化的代码,并增加交互动态功能&…

小岛经济学_解读《小岛经济学》(1)

下面我们就先来看第一个重要观点,促进经济增长的根本原因是生产而不是消费。所谓经济,说白了,就是使有限的资源产生最大的效益,以尽可能满足人类的需求。现实生活中,资源稀缺是常态,人类的需求永远也满足不…