帕特里克·特雷恩

主要观点:尝试用 SQL 构建 3D 游戏引擎,以 DuckDB-WASM 为例,经历诸多挑战后实现了类似 Doom 的游戏,虽性能尚可但不适合生产,是很好的学习体验,分享了代码并探讨未来可能性。
关键信息:

  • 以数据库为世界,用 SQL 操作游戏状态,如移动、射击等。
  • 定义 SQL VIEW 进行射线投射和渲染 3D 场景,结合 JavaScript 处理输入和精灵绘制。
  • 遭遇多种问题,如 DuckDB-WASM 加载失败、SQL 方言差异、查询规划器问题、异步 race condition 等,并给出解决办法。
  • 游戏性能约 6 - 7 FPS,SQL 射线投射视图耗时 80 - 100ms,JavaScript 精灵渲染较快。
  • 学到 SQL 可用于非传统用途、DuckDB-WASM 性能不错、语言边界可模糊、调试跨语言边界有挑战、查询规划复杂等。
    重要细节:
  • 初始化 DuckDB-WASM 需遵循推荐模式,避免标准 CDN 链接失败。
  • DuckDB 更接近标准 SQL 序列,使用 CREATE SEQUENCE 代替 AUTOINCREMENT
  • 调整 SQL VIEW 逻辑以满足查询规划器要求,避免表函数相关错误。
  • 通过布尔锁解决异步 setInterval 引发的 race condition 问题。
  • 结合 SQL 和 JavaScript 处理精灵绘制,创建新 SQL VIEW 输出屏幕列到最近墙的距离。
  • 分享了 GitHub 上的完整源代码,鼓励他人继续探索。
阅读 10
0 条评论