Mostly.Vet Automatic Seeding

=Automatic Seeding=

Purpose
Automate the seeding of servers to levels of 50 players, to kick start organic play. Vets are lazy by nature, they would rather join a full server than an empty one

Architecture
A group of AWS spot instances that can be booted with a target HLL server in the boot options, which launch, follow the steam connect link, connect to the game and idle.


 * 1) Each machine will connect to the target host and idle
 * 2) Each machine will auto-shutoff in 90 minutes
 * 3) Each machine will have an ordered number, machines will titrate down as organic players join without the need for central control. Target Level - Organic Players = Total Seeds
 * 4) Command and control will be at minimum a command line tool, but eventually a service allowing for webhook activation.


 * Bonus: Minimize the S3 space required by having a master S3 bucket that is read only mounted in all instances for sharing.
 * Bonus: Use family sharing from community volunteers to minimize startup cost.
 * Bonus: Use the steam-cli for headless login, and launch.
 * Bonus: Use boot arguments to specify steam account (use one instance image for all bots - either though logins, or having 50 user accounts on the same image, and boot them all read only)
 * Stretch: Make launch system configurable to accept a custom list of steam login information for generalized use.

Research Todo

 * 1) Discover the minimum server type required to launch and connect a HLL client.
 * 2) Gauge difficulty in automating steam account creation.
 * 3) Explore price difference between steam and game id services.

Phase 1

 * 1) Single instance running accepting VNC/Parsec/Moonlight
 * 2) Create Argentine Steam account, purchase Hll with giftcard.
 * 3) Install HLL
 * 4) Automatic execution of steam connect link post boot (+30s?)
 * 5) Small automatic scrip that checks query port for total user level, and self kills when we are above threshold based on our ordering

Phase 2

 * 1) Snapshot S3 disk
 * 2) Create second user on machine, use boot option to select boot user
 * 3) Repeat Phase 1 with second user

Phase 3

 * 1) Repeat for users 3-20

Phase 4

 * 1) CLI launch control (lets do Rust this time)

Phase 5

 * 1) Host launch control as a lambda
 * 2) Setup discord bot to trigger lambda

Publication

 * WIP to be done in the github, with steam logins to be kept private.
 * Document configuration, windows update process, and steam update process (mount volume RW)

=Notes=

Streaming Options
https://github.com/SunshineStream/Sunshine

https://github.com/tomgrice/SteamRemoteDesktop

https://github.com/parsec-cloud/Parsec-Cloud-Preparation-Tool Includes auto shutdown.

Platforms
K8S Windows?

HLL Licenses
SteamDB Regions?

CDKEY Market?

Family Sharing with volunteers?

Windows Configuration
https://github.com/lg/cloudy-gamer

2016?! https://lg.io/2016/10/12/cloudy-gamer-playing-overwatch-on-azures-new-monster-gpu-instances.html

Very Manual https://github.com/keithvassallomt/parsec-aws-automation

Terraform? https://github.com/badjware/aws-cloud-gaming

CloudRig last updated 3 years ago https://github.com/cloudrig/CloudRIG

gcloudrig https://github.com/gcloudrig/gcloudrig

Storage
Store Game in AMI for cost reasons

=References=