我是一个独立开发者。我的游戏rift drifter没有任何资产文件:没有精灵图集,没有纹理,nor .wav或.mp3。每个视觉元素都是通过每帧绘制几何图形来绘制的。每个声音都是通过Web Audio API(振荡器,.envelope,一个小的bus和压缩链)在运行时合成的。Capacitor将相同的画布构建为iOS和Android,且可以直接在web上运行。
我这样做的原因是:极小的打包大小,立即加载,无限的分辨率。然而,我没有料想到的是,这样做可以让可访问性变得几乎简单。
从实际的代码库中可以看到:
高对比度:通过一个CSS行就可以将整个游戏重绘。由于所有元素都被绘制到一个画布上,因此添加.filter: saturate(1.4) contrast(1.18) brightness(1.025)到一个.high-contrast类就可以一次性重绘所有的飞船,岩石,粒子和HUD。没有需要重新导出的颜色表,也没有需要重新导出的艺术资源。
减少运动:一个reducedMotion() getter加上两个早返回。addShake()和addHitstop()在它打开时就会返回。因此,屏幕抖动和碰撞效果根本就不会发生。总共需要六行代码。
大HUD,可缩放触摸,定向锁定:所有设置,所有代码路径,无需导出资产。
原则是:当游戏的数据而不是图片时,“让它可访问”不再是艺术设计,而是代码改变。一个源头。
当然,这也有一些权衡。CPU和绘制时间代价会增加,而内存代价会减少。复杂的生物艺术确实很难实现而不使用纹理,而且“合成所有声音”是一个深入的陷阱。对于一个向量风格的街机游戏,数学计算结果是以代码为主。
我想知道其他人在使用canvas和没有资产文件时是否遇到了同样的可访问性问题,或者我遇到的问题是否是独特的。如果你想看到它的移动效果:nosprite.com/rift-drifter。可以在浏览器中查看,也可以在App Store或Google Play中下载。
评论 (0)