Dystrybucja gier w świecie online, przykład architektury webowego systemu rozproszonego 2

60

Transcript of Dystrybucja gier w świecie online, przykład architektury webowego systemu rozproszonego 2

DYSTRYBUCJA GIER W ŚWIECIE ONLINE przykład architektury webowego systemu rozproszonego

GOG Galaxy Pipeline

Maciej Włodarkiewicz

WYKORZYSTANIE JĘZYKA PHP w systemach cyfrowej dystrybucji gier

Maciej Włodarkiewicz

O mnie

GOG.com Producer

Czym się zajmuję? Prowadzeniem projektów, architekturą systemów

Wcześniej: Head of Web Development - GOG Head of Web Backend - GG

GOG.com - plaHorma cyfrowej dystrybucji gier

Historia Start w 2008 pod skrzydłami CD Projekt, zespół kilku osób Obecnie zatrudnionych jest ponad 100 osób

Obecna pozycja #1 globalnej dystrybucji klasycznych gier na PC i Mac #2 globalnej dystrybucji gier indie na PC i Mac

Partnerzy 250+ twórców i wydawców gier

Klienci Ponad 5 miliony unikalnych wejść miesięcznie z całego świata

Gry Ponad 1400 tytułów w katalogu Ponad 40 milionów gier na kontach użytkowników

Agenda

1. Założenia projektu GOG Galaxy Pipeline

2. Start GOG Galaxy

3. Budowa i działanie systemu

4. GOG Galaxy Pipeline 2.0

5. plany na przyszłość

GOG Galaxy Pipeline

Założenia projektu GOG Galaxy Pipeline

Założenia projektu GOG Galaxy Pipeline

Problemy graczy oraz developerów

• Za dużo patchy, użytkownicy nie wiedzą co skąd pobrać i jak

wykonać update do najnowszej wersji

• Gracze muszą manualnie zarządzać instalacją

• Do ściągania dużych plików potrzebny jest własny Download

Manager albo GOG Downloader

• Budowa patch’y trwa długo i jest skomplikowane

Ilość plików do manualnego pobrania - przykład Dying Light

GOG Downloader

Założenia projektu GOG Galaxy Pipeline

Wymagania

• Uproszczenie instalacji oraz aktualizacji gier

• Automatyczne dostarczanie aktualizacji do graczy

• Automatyzacja procesu budowania gier

• Minimalizacja czasu instalacji

• Wsparcie premier gier, także wersji pudełkowej

Założenia projektu GOG Galaxy Pipeline

Dlaczego nie użyliśmy gotowego systemu

kontroli wersji ?

ponieważ instalacji oraz aktualizacja gry jest dużo bardziej

skomplikowana niż samo pobranie plików

GOG Galaxy Pipeline

GOG Galaxy Pipeline 1.0Start GOG Galaxy oraz Wiedźmina 3

Start GOG Galaxy

• 6 Maja - start GOG Galaxy

• 19 Maja - wydanie Wiedźmina 3

• GOG Galaxy obsługiwało wersję pudełkową TW3, dla której

przygotowaliśmy:

- preload

- day1patch

Wydanie Wiedźmina 3 - statystyki z pierwszego miesiąca

• 21.5 PB danych dostarczonych do graczy

• do 600 Gbps ruchu

• … czyli 2 pełne gry na sekundę

• 600 000 aktywacji gry na poprzez GOG Galaxy

• bez problemów

GOG Galaxy Pipeline

Budowa systemu

CONTENT SYSTEM

Budowa i działanie systemu - upload gry

CLOUD STORAGE

GOG GALAXY

desktop web

GAME BUILDER

Budowa i działanie systemu - Struktura gry

• Gra złożona jest do jednego pliku bigfile

• Bigfile jest opisany przez plik z meta danmi manifest

• Bigfile składa się z depotów, konkretnych fragmentów gry np. plików językowych

• Do wydania nowej wersji gry potrzebny jest upload nowego bigfile

• Aplikacja desktopowa pobiera update różnicowo z rozdzielczością jednego pliku

Budowa i działanie systemu - Struktura gry

GAME_PL.DAT

GAME.EXE GAME_PL.DAT GAME_EN.DAT

GAME.EXE

GAME_EN.DATGAME.EXE

MANIFEST_PL MANIFEST_EN

Budowa i działanie systemu - Struktura gry

GAME_PL.DAT

GAME.EXE GAME_PL.DAT GAME_EN.DAT

GAME.EXE

GAME_EN.DATGAME.EXE

MANIFEST_PL MANIFEST_EN

Budowa i działanie systemu - Struktura gry

GAME_PL.DAT

GAME.EXE GAME_PL.DAT GAME_EN.DAT

GAME.EXE

GAME_EN.DATGAME.EXE

MANIFEST_PL MANIFEST_EN

Budowa i działanie systemu - Cloud Storage

• Przechowuje pliki gier

• Użytkownicy ściągają gry bezpośrednio z Cloud Storage

• Technologie: EdgeCast®

Budowa i działanie systemu - Cloud Storage - tryby pracy

Tryby pracy: Tryby dostępu do plików:

Pull - nieużywany

Push - game builder Open - meta dane

Secure - pliki gier

DataCenter (Warszawa) orazsieć rozproszona CDN

Budowa i działanie systemu - Cloud Storage - zasięg

Budowa i działanie systemu - GOG Galaxy

• Aplikacja desktopowa na Windows oraz OSX

• Potrafi przeanalizować lokalne pliki gry oraz porównuje je ze Cloud Storage

• Pozwala na pobranie poprzednich wersji gry - rollback system

• Obsługuję wiele wersji gry na raz - branches

• Technologie: C++, Chromium embeded, AngularJS

Budowa i działanie systemu - Content-System API

• Aplikacja PHP

• Generuje dane dostępowe do procesu ściągania gier

• Przechowuje meta dane wszystkich gier

• API całkowicie niezależne od użytego Cloud Storage

• Technologie: Varnish Cache, PHP 5.6, Symfony2, HHVM

Budowa i działanie systemu - Content-System API - wydajność

• PHP + HHVM + Symfony2

• 1000 r/s z pojedynczej maszyny (8x core)

• 15.000 r/s dla meta-danych - Varnish Cache

• Prosta konstrukcja zapewnia skalowanie prawie liniowe

• Mikro serwis, skalowany oraz rozwijany osobno

• Pełne HA, redundancja każdego elementu

GOG Galaxy ADN PHPVarnish CacheApp cache

CDN

Budowa i działanie systemu - Content-System API - cache

CONTENT SYSTEM

Budowa i działanie systemu - upload gry

CLOUD STORAGE

GOG GALAXY

desktop web

GAME BUILDER

CONTENT SYSTEM

Budowa i działanie systemu - pobieranie meta danych

CLOUD STORAGE

GOG GALAXY

desktop web

CONTENT SYSTEM

CONTENT SYSTEM

Budowa i działanie systemu - lokalne porównanie plików

CLOUD STORAGE

GOG GALAXY

desktop web

CONTENT SYSTEM

CONTENT SYSTEM

Budowa i działanie systemu - uzyskanie dostępu do plików gry

CLOUD STORAGE

GOG GALAXY

desktop web

CONTENT SYSTEM

CONTENT SYSTEM

Budowa i działanie systemu - pobieranie plików

CLOUD STORAGE

GOG GALAXY

desktop web

CONTENT SYSTEM

GOG Galaxy Pipeline

Analiza wybranych problemów

GOG.com Galaxy - problem #1

Kosztowny proces budowania gry

• Cała gra budowana jest do jednego pliku

• Nawet najmniejsza zmiana wymusza ponowny upload całej gry

• Każdy mały update generuje zawsze duży upload

GOG.com Galaxy - problem #2

Czas dostarczenia gry na serwery

• Cała gra budowana jest do jednego pliku

• Wiedźmin 3 miał 26Gb w dniu premiery

• Pojedynczy plik 26GB musi zostać rozpropagowany na wszystkie serwery Cloud

Storage

• Całkowity czas wykonania oraz dostarczenia aktualizacji trwa nawet 3dni!

DataCenter (Warszawa) orazsieć rozproszona CDN

Budowa i działanie systemu - Cloud Storage - zasięg

GOG Galaxy Pipeline

GOG Galaxy Pipeline 2.0games in-development

GOG Galaxy Pipeline 2.0

Nowe wymagania

• Niektóre gry uaktualniane są codziennie

• Developerzy chcą wydawać aktualizacje natychmiast

• a Użytkownicy chcą otrzymywać je jak najszybciej jest to możliwe

• Co raz więcej gier wydawanych jest w modelu in-development

GOG Galaxy Pipeline 2.0

Proponowane rozwiązania

• Rezygnacja z budowania gry do jednego pliku

• Stworzenie narzędzi do automatycznego budowania oraz wrzucania gier

GOG Galaxy Pipeline 2.0 - rozwiązanie #1

Rezygnacja z budowania całej gry do jednego pliku

• Gry będą dzielone na chunki o wielkości 10MB

• Mniejsze pliki grupowane są do pełnego chunka

• Każdy z nich opisany jest przez hash czyli skrót z swojej zawartości

Budowa i działanie systemu - Struktura gry 2.0

GAME_PL.DAT

GAME.EXE GAME_PL.DAT GAME_EN.DAT

GAME.EXE

GAME_EN.DATGAME.EXE

MANIFEST_PL MANIFEST_EN

GOG Galaxy Pipeline 2.0 - rozwiązanie #2

Narzędzia dla developerów gier

• Oddajemy narzędzia do wrzucania gier do developerów

• Content System API przechowuje informacje o wszyskich wrzuconych chunkach

oraz ich hashach

• Umożliwia to deduplikację danych podczas uploadu zmian

• Upload dyferencyjny

GOG Galaxy Pipeline 2.0 - rozwiązanie #2

Narzędzia dla developerów gier

• Developerzy zyskują możliwość samodzielnego publikowania zmian

• Developerzy rozproszeni są po całym świecie

• Developerzy pracują 24/7

GOG Galaxy Pipeline

Nowa usługa webowa - Game ReceiverGOG Galaxy Pipeline 2.0

Nowa usługa webowa - Game Receiver

• Aplikacja PHP

• Przyjmuje bezpośredni upload od developerów poprzez HTTPS

• Propaguje asynchronicznie pliki do dowolnej ilości Cloud Storage

• Aby być bliżej developerów, aplikacja została rozproszona po całym świecie

• Technologie: Varnish Cache, PHP 5.6, Symfony2, HHVM, RabbitMQ, Celery

Budowa i działanie systemu - Game Receiver - wydajność

• PHP + HHVM + Symfony2

• Celery + RabbitMQ

• Prosta konstrukcja zapewnia skalowanie prawie liniowe

• Serwery dostawiane są zgodnie z zapotrzebowaniem od developerów

• Mikro serwis, skalowany oraz rozwijany osobno

• Pełne HA, redundancja każdego elementu

CONTENT SYSTEM

Budowa i działanie systemu - upload gry 2.0

CLOUD STORAGE

GOG GALAXY

desktop web

GAME BUILDER

GAME RECEIVER

CLOUD STORAGE

CONTENT SYSTEM

Budowa i działanie systemu - upload gry 2.0

CLOUD STORAGE

GOG GALAXY

desktop web

GAME RECEIVER

CLOUD STORAGE

CONTENT SYSTEM

GOG Galaxy Pipeline

Nowa usługa webowa - Dev PortalGOG Galaxy Pipeline 2.0

Nowa usługa webowa - Dev Portal

• Interfejs graficzny do Content System API

• Możliwość publikacji wybranej wersji gry w GOG Galaxy

• Technologie: Varnish Cache, PHP 5.6, Symfony2, HHVM, AngularJS

CONTENT SYSTEM

Budowa i działanie systemu - Dev Portal

CLOUD STORAGE

GOG GALAXY

desktop web

GAME RECEIVER

CLOUD STORAGE

CONTENT SYSTEM

DEV PORTAL

PYTANIA?

GOG Galaxy Pipeline

Plany na przyszłość

Plany na przyszłość

• Pełna kontrola developerów nad całością procesu wydawania gier?

• Obsługa wielu gier AAA

• Dalsza optymalizacja oraz usprawnianie systemów

• PHP7 ?

Podsumowanie wydania Wiedźmina 3 na GOG Galaxy

hvps://www.youtube.com/watch?v=9vh5mxm5Jy8

PYTANIA?

SZUKAMY WEBDEVÓW Więcej informacji u mnie lub na stronie GOG.com/work

DZIĘKUJĘ ZA UWAGĘ