虚拟游戏房
虚拟游戏房的梦想依然存在——共享我的硬件,装满游戏,有 PC 游戏和各种复古模拟器游戏,用户串流就能直接玩。
想法来源
主要来源于超级小桀的线下预约的实际游戏房。虽然我肯定没有这么多人力物力财力,但是以云游戏的方式,说不定可以。分享自己喜欢的东西给大家的乐趣是相同的。
技术路线,主要需要解决以下问题
- 系统:服务在什么上面运行
- 网络:用户通过什么网络连接
- 方案
- zerotier, tailscale
- 自建 VPN,基于 wireguard
- 公网(v4 或 v6)
- 方案
- 串流:串流软件
- pacsec
- sunshine + moonlight
- 游戏
- PC 游戏
- 复古模拟器前端
方案 before 2024¶
- 系统
- KVM 虚拟机 + qcow2 磁盘
- PVE 创建一个专门的 windows 虚拟机。通过 overlay 技术,每次运行后可以将系统盘恢复到初始状态
- 网络
- 使用 zerotier 创建一个虚拟网络
- 串流
- sunshine + moonlight
打算弄多个 windows 虚拟机,分享给 guest。
好处
- pcie 4.0 的固态作系统 (6000MB 的读写)
- Ryzen 5800x + 16GB 内存
- 共享高性能显卡(目前为 1060 3G)
具体
- 所有 windows 虚拟机的 C 盘共用一个基本镜像
- 虚拟机的修改关机后不保存
- 所有 windows 虚拟机共享 2TB 的游戏盘
- 普通用户关机后,数据不保存
- 管理员虚拟机对其修改可以保存
- 一个存储盘,50GB。数据私有并进行保存
实现
- 通过 COW 文件系统的 overlay 技术,在 base 镜像上创建一个 overlay 镜像。之后删除 overlay 即可回退到基础状态。
镜像管理¶
qemu-img overlay: https://kashyapc.fedorapeople.org/virt/lc-2012/snapshots-handout.html
#/var/lib/libvirt/images
win10-base.qcow2 --> win10-basic.qcow2 --> overlay-win10-1.qcow2
overlay-game1-1.qcow2
disk-1.qcow2
#C, windows system
qemu-img create -f qcow2 -F qcow2 -b /var/lib/libvirt/images/win10-basic.qcow2 overlay-win10-1.qcow2
#E, games
qemu-img create -f qcow2 -F qcow2 -b /mnt/Disk3/win10-game1.qcow2 overlay-game1-1.qcow2
- win10-system: 150G
- /mnt/VM-Pool/win10.qcow2
- disk-life: 200G
- /mnt/VM-Pool/disk-life.qcow2
- disk-game: 2TB
- /mnt/Disk3/win10-game1.qcow2
方案 2024¶
发现了完美契合云游戏的项目 games-on-whales/wolf: Stream virtual desktops and games running in Docker (github.com)
- 系统
- docker 容器(基于 wolf)
- 网络
- 公网 v4 或 v6
- 串流
- wolf + moonlight