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、加载白屏