跳转至

虚拟游戏房

虚拟游戏房的梦想依然存在——共享我的硬件,装满游戏,有 PC 游戏和各种复古模拟器游戏,用户串流就能直接玩。

想法来源

主要来源于超级小桀的线下预约的实际游戏房。虽然我肯定没有这么多人力物力财力,但是以云游戏的方式,说不定可以。分享自己喜欢的东西给大家的乐趣是相同的。

image.png

技术路线,主要需要解决以下问题

  • 系统:服务在什么上面运行
  • 网络:用户通过什么网络连接
    • 方案
      • 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