Hacker News 中文摘要

RSS订阅

CSS被DOOMed -- CSS is DOOMed

文章摘要

文章展示了用纯CSS 3D变换技术重现经典游戏《DOOM》的创新尝试,通过

元素构建游戏场景,证明现代CSS的强大功能。作者旨在探索浏览器渲染的极限,同时致敬CSS发展30年来的进步。

文章总结

CSS版《毁灭战士》:用CSS实现3D渲染的经典游戏

项目概述

荷兰开发者Niels Leenheer成功使用纯CSS技术实现了经典游戏《毁灭战士》(DOOM)的3D渲染版本。这个创新项目展示了现代CSS的强大功能,所有游戏场景中的墙壁、地板、桶和怪物都通过<div>元素构建,并利用CSS 3D变换进行空间定位。

技术实现

核心原理

  • 坐标转换:将DOOM的2D坐标系(Y轴朝北)转换为CSS 3D坐标系(Y轴朝上,Z轴朝向观察者)
  • 数学计算:使用CSS的hypot()atan2()函数处理几何运算
  • 世界移动:通过反向移动整个场景来模拟玩家移动效果

关键技术

  1. 3D渲染

    • 墙壁使用transform属性进行3D定位
    • 地板通过rotateX(90deg)转为水平面
    • 使用clip-path处理不规则形状和孔洞
  2. 动画效果

    • 门和电梯通过CSS过渡实现平滑移动
    • 使用@property注册自定义属性实现数值动画
  3. 视觉效果

    • 纹理对齐:通过世界坐标确保相邻区域纹理无缝衔接
    • 光照系统:使用filter: brightness()模拟不同区域的明暗变化
    • 特殊效果:SVG滤镜实现幽灵怪物的半透明效果

创新突破

  1. CSS计算:将大量数学运算交给CSS引擎处理,减少JavaScript负担
  2. 响应式设计
    • 使用锚点定位(anchor positioning)实现HUD自适应
    • 支持从第一人称到俯瞰视角的平滑切换
  3. 性能优化
    • 开发了CSS-only的视锥体裁切方案
    • 利用类型研磨(type grinding)技术实现条件渲染

挑战与局限

  1. 技术限制

    • 天空渲染需要特殊处理(原游戏使用2D技巧)
    • 性能瓶颈(iOS Safari在复杂场景会崩溃)
    • 遇到多个浏览器兼容性问题
  2. 设计取舍

    • 游戏逻辑仍需JavaScript处理
    • 部分效果无法完全还原原版游戏

项目意义

这个实验性项目证明了现代CSS已具备: - 复杂的3D渲染能力 - 丰富的动画控制功能 - 强大的视觉表现力

虽然无法替代WebGL/WebGPU等专业图形技术,但展示了CSS作为前端技术的惊人潜力。开发者通过这个项目探索了CSS的边界,为创意性应用提供了新思路。

项目在线体验:CSS DOOM 源代码:GitHub仓库

评论总结

以下是评论内容的总结:

  1. 对CSS能力的质疑

    • 认为CSS本质仍是网页样式语言,质疑其扩展用途的合理性
      引用:"Is CSS that awesome? It's still a language designed for styling webpages"
      引用:"No"(直接否定CSS的优越性)
  2. 技术实现的赞赏

    • 认可CSS近年来的进步,如实现3D场景和CPU模拟
      引用:"now CSS can emulate an entire CPU without JavaScript"
      引用:"Seriously impressive, especially the viewport culling trick"
  3. 实用性争议

    • 认为这类项目更多是技术演示而非最佳实践
      引用:"don't do this. That fact that it runs doesn't make it a good idea"
      引用:"If you're going to make a 3D web game use WebGL or WebGPU"
  4. 技术细节讨论

    • 指出项目仍依赖JavaScript(游戏逻辑)
      引用:"The game logic runs in JavaScript"
    • 讨论CSS新特性(如2025年将添加if语句)
      引用:"CSS has become closer to a full programming language"
  5. 文化现象观察

    • 关注"万物皆可运行DOOM"的梗文化
      引用:"at this point i'm more interested in what can't run doom"
      引用:"hackers will be challenging themselves to run Crysis on calculators"
  6. 浏览器兼容性

    • 特别表扬Firefox的运行效果
      引用:"Firefox should get kudos too, for running it the best"

总结呈现了从技术质疑到赞赏、从理论可能到实践建议的多维度讨论,同时保留了原始评论的关键表述。