Comments 9
Спасибо за статью.
Сборка C++ SDK на винде несколько нетривиальна из-за зависимостей. Лучше всего иметь уже собранный protobuf и gRPC, тогда всё будет ок. Кода в самом sdk мало, там в основном кодогенерация, поэтому всё компилируется вполне тривиально.
В ином случае, cmake скрипт попытается сам скачать и собрать требуемые зависимости. Из-за зоопарка компиляторов и возможных вариантов сборки это может быть несколько проблематично. К примеру, для успешной сборки gRPC требуется OpenSSL, а собирать его под винду с помощью mingw — то ещё удовольствие.
Если вы посоветуете какой-либо стабильный package manager, который умеет protobuf+gRPC под мак/линукс/винду, то я постараюсь его прикрутить.
gRPC тот ещё монстр, к сожалению из коробки там очень мало опций и единственный способ получить полноценный cmake package — это собрать его целиком.
Однако, стоит учитывать, что серверная часть все же компилируется во время создания docker image (вместе с gRPC и protobuf), а поверх уже можно накладывать и код игрового сервера. Если итерирывать на уровне GameServer ресурса в Windows, это несколько упрощает задачу, в этом и есть вся прелесть контейнеризации процессов.
Спасибо за предложение помочь, правда package manager будет сложно так сразу предложить, если и нужно компилировать игровой код сервера на локальной машине, то думаю будет логичней использовать туже операционную систему и конфигурацию, что использует Dockerfile.
Очень интересно какой вариант в опросе будет превалировать в итоге.
- Как себя игровой сервер поведет в случае, если нода кубернетеса "ушла"? Он сможет перепозлти на другой сервер или предполагается, что все — приплыли и надо игровую сессию на клиенте запускать заново? Ну, получается, что требования по надёжности нод весьма драконовские — на спот (preemptible) инстансах уже сервачки не погоняешь.
- Что-нибудь серьезное уже кто-либо поверх этого фреймворка сделал?
- Поддержка windows?
3) Поддержка windows
Игровые сервера можно делать под любые платформы. На C++ там простейшая реализация. Главное, чтобы на вашей платформе можно было собрать gRPC.
В крайнем случае можно посмотреть исходники плагина для UE и сделать по аналогии.
А на чём крутить сам Agones думаю вам не принципиально. Linux/Mac умеет, Windows умеет (с WSL).
2 На данный момент есть работающие на Agones игры с 20 тысяч + пользователей.
Список компаний, использующих Agones можно посмотреть здесь Companies using Agones
В проекте также активно используется Slack, где можно задать все интересующие вопросы.
В комплексе с Agones еще стоит рассмотреть Open Match, который можно использовать для Match Making'а .
Agones — это платформа для оркестрации выделенных игровых серверов в Kubernetes.
Стоит упомянуть про сайт проекта — agones.dev, где есть необходимая документация и описание всех Custom Resource Definitions, которые используются в платформе Agones (все-таки это не один ресурс). Сайт генерируется из md
файлов с помощью Hugo
.
Так же стоит упомянуть, что билд всех бинарей происходит в docker'e, что удобно и позволяет получить унифицированную среду компиляции.
В папке build
находится описание различных make target'ов, для выполнения сборки, запуска тестов и много другого (см. build/readme.md
).
Используется Helm и gcloud. Есть Terraform конфигурации для развертывания системы.
Также существует Terraform конфиги и документация для развертывания в MS Azure и AWS EKS (в процессе).
Так же стоит упомянуть что билд всех бинарей происходит в docker'e, что удобно и позволяет получить унифицированную среду компиляции.
В папке build находится описание различных make targetов, для выполнения сборки, запуска тестов и много другого.
Используется Helm и gcloud. Есть Terraform конфигурации для развертывания системы.
Agones, создаем многопользовательский игровой сервер. Архитектура и установка