|
上周三晚上,网页我在浏览器里打开了一个叫“The 解密Room”的网页解密游戏。页面很简单,小游戏就一个木箱,网页几把锁。解密我点了十分钟,小游戏连第一层都没打开。网页后来才发现,解密钥匙藏在页面底部的小游戏版权信息里——那行灰色小字,正常浏览根本不会注意。网页这就是解密网页解密游戏最典型的设计思路:把线索塞进你眼皮底下,但让你视而不见。小游戏 这类游戏的网页核心机制其实就一句话:利用浏览器的原生功能当谜题载体。不是解密Flash,不是小游戏Canvas动画,就是HTML、CSS、JavaScript这三样东西。你右键查看源代码,可能会看到一串被注释掉的数字。你按F12打开开发者工具,某个div的id名就是密码。甚至有时候,答案就写在cookie里。 我玩过一个叫《白房间》的中文解密游戏。第一关画面全白,只有一个输入框。试了“white”“房间”“123456”全错。后来我无意中选中了页面全部文字——Ctrl+A——发现白色背景上有一行白色文字:“别找了,答案在地址栏。”我抬头看URL,末尾写着?answer=open。把open填进去,过关。这种设计谈不上多精巧,但那种“被耍了又服气”的感觉,确实让人上瘾。 网页解密和App解密最大的区别在于工具。手机游戏你只能点屏幕,网页游戏你可以用整个开发者工具。有个关卡要求输入一个十六进制颜色码,我试了半天不对。后来打开控制台,发现一段被console.log输出的乱码,解码后是一句“背景色就是答案”。用取色器吸了一下页面背景,果然。这种“用开发者工具解谜”的设计,在网页游戏里几乎是标配。 不过这类游戏有个通病:难度曲线全靠作者心情。有的关卡逻辑清晰,你解出来会拍大腿。有的纯粹是猜谜,比如让你输入“作者最喜欢的数字”,没有任何提示。这种就不叫解密,叫读心术。我遇到过一个更离谱的,答案藏在服务器返回的HTTP头里。普通玩家根本不会去抓包,这已经超出“网页解密”的范畴了,变成网络安全测试。 从技术角度看,做好一个网页解密游戏需要三样东西。第一是合理的线索层级:视觉层、代码层、网络层,逐层递进。第二是即时反馈:输错了要有提示,哪怕提示是“不对”两个字,也比毫无反应强。第三是防作弊——但这一点很矛盾。你既希望玩家用开发者工具,又怕他们直接改JavaScript跳过所有关卡。有个作者的做法很聪明:他把答案存在服务器端,前端只负责提交。你改本地代码没用。 我自己尝试做过一个微型解密页。五关,纯HTML加CSS。第一关是按钮的title属性里藏了密码。第二关是CSS伪元素content里写了提示。第三关要求把某个div的display从none改成block。第四关在控制台里输出了一段Base64。第五关最简单——答案就在文章里,但要用鼠标选中才能看见。做完之后给朋友玩,三个人里有两个卡在第三关,因为他们不知道开发者工具怎么改样式。这让我意识到,网页解密游戏的门槛不在逻辑,而在工具熟练度。 如果你也想试试,不用急着写代码。先打开一个现成的网页解密游戏,按F12,看看作者把线索藏在了哪里。你会发现,那些看似神秘的谜题,拆开来看不过是几行朴素的代码。而解密的乐趣,恰恰在于你从“普通用户”变成“窥探者”的那一瞬间。 |