...А именно "виртуальная частная сеть" как услуга кажется тоже была но стоила в несколько раз дешевле.
...
public String serializeToJson(Class <T> type){
//рефлексией ныряешь внутрь type и выцепляешь все объявленные переменные, их имена и значения.
//К примеру получились полученные пары имя_переменной_в_классе и значение_переменной_в_классе обрабатываешь дальше и делаешь валидный_json
return валидный_json;
}
...
public Class <T> deserializeFromJson(String myjson, Class <T> type){
//рефлексией ныряешь внутрь type и выцепляешь все объявленные переменные, их имена.
//К примеру получились полученные пары имя_переменной_в_классе
//Создаешь через рефлексию экземпляр целевого класса type.newInstance() с "каким_то_именем"
//Вытаскиваешь из json строки значение для каждой имя_переменной_в_классе
//Засовываешь в экземпляр "каким_то_именем" значения полученных переменных
return каким_то_именем; //вернул экземпляр этого самого неизвестного класса наполненного данными
}
1) Сайт на котором сделана аутентификация по Steam OpenID:
-игрок авторизуется на нем
-сайт получает информацию о игроке.
-игрок выбирает лобби и подбираются союзники\противники.
-после подбора игроков и выбора карты в БД сайта заносятся steamid игроков и имя лобби
-где то на vds запускается свободный сервер с заданным режимом\картой\настройками
-появляется ссылка на страничке по протоколу steam browser protocol вида "steam://connect/1.0.0.27:27015" при нажатии на которую запустится стим и нужная игра сразу с быстрым подключением на указанный сервер.
2) На игровых серверах стоит sourcemod плагин который:
-цепляется к БД сайта под своим уникальным ID.
-ждет игроков.
-при подключении игрока сверяет его steamid с тем который хранится в БД сайта конкретно для этого матча. Если совпадает то дает подключиться иначе дисконектит.
-по оканчании матча выгружает в БД сайта статистику игроков к их учеткам.
-сервер выключается.
-срабатывает скрипт который любым удобным способом выгружает в файловое хранилище сайта демку матча(причем необходимо не обычное демо а сурствшное) и прикрепляет ее к истории и статистике матча и игроков.
Дальше можно расширить этот алгоритм, к примеру по результатам матча которые пришли на сайт дать победителям награды и т.д.
В виде античита чаще всего используют сторонние готовые решения по типу ESL Anticheat и подобных. Заморачиваться со своим просто бессмысленно.
В итоге будет максимально удобный способ без каких то левых софтин запускать игрушку, следить за статистикой матчей, выдавать награды и все прямо через браузер.
В целом сделать все это не так сложно, намного сложнее будет нарисовать шаблон сайт а его визуальную часть чем все эти внутренние кишки в виде запуска сервера, плагина к серверу и т.д.