NESBox 平台

已有产品:

UI 类似 Steam,像素风

攻能:
  • Dashboard
    • 挑选游戏开始(实际是开私人房间)
  • 游戏详情
  • 设置
    • 昵称
    • 自定义按键
    • 画质增强
  • 多人游戏
    • 公共房间,可以选择进入
    • 上下机
    • 换房主
    • 换游戏
    • 房间聊天
      • 文字聊天
      • 语音聊天
  • 用户系统(当前 WebSocket 的使用方式导致不满足云原生应用要求,接 MQ 可解决)
    • 自己喜欢的游戏
    • 游戏评论
    • 游戏存档,可继续游戏
    • 好友系统
      • 聊天
      • 邀请

TV 版功能:
  • Library
  • Recents
  • Rooms
  • Room
    • 上下文菜单
      • 连接/断开语音
      • 邀请好友
      • 保存截图
  • 设置
    • 语言



技术栈:
  • 后端
    • diesel-pg
    • actix-web
      • websocket 消息订阅
  • 前端
    • gemjs
    • nes_rust_wasm tetanes

遇到的问题:
  • 根据游戏 ROM hash 进行状态储存,使用 Caches API,截图、日期存在 URL 参数中,避免使用复杂的 indexedDB,缓存 Wasm.memory -> Rust 对象二进制序列化
  • 传输 Canvas 流会压缩导致颜色失真,使用 qoi 压缩传输帧
  • 延时大,根据 Ping 值使用降帧方案,并禁用 WebRTC 的顺序传输
  • 语音系统,使用服务器 WebRTC 转发
  • 添加金手指功能,游戏组件庞大,拆分组件
  • Tauri 的问题:MacOS localstorage、加载白屏