4Developers 2015: Wykorzystanie technologii webowych w aplikacjach desktopowych na przykładzie...

47

Transcript of 4Developers 2015: Wykorzystanie technologii webowych w aplikacjach desktopowych na przykładzie...

Page 1: 4Developers 2015: Wykorzystanie technologii webowych w aplikacjach desktopowych na przykładzie projektu GOG.com Galaxy - Piotr Marzec
Page 2: 4Developers 2015: Wykorzystanie technologii webowych w aplikacjach desktopowych na przykładzie projektu GOG.com Galaxy - Piotr Marzec

WYKORZYSTANIE  TECHNOLOGII  WEBOWYCH  W  APLIKACJACH  DESKTOPOWYCH  

na  przykładzie  projektu  GOG.com  Galaxy

Piotr  Marzec

Page 3: 4Developers 2015: Wykorzystanie technologii webowych w aplikacjach desktopowych na przykładzie projektu GOG.com Galaxy - Piotr Marzec

O  mnie

GOG.com  Galaxy  Team  Leader  

Czym  się  zajmuję?  Projektowanie  systemów  

Koordynowanie  ich  implementacji  przez  trzy  odzielne  zespoły  programistyczne.  

Od  czasu  do  czasu  kilka  linijek  w  PHP  ;)

Page 4: 4Developers 2015: Wykorzystanie technologii webowych w aplikacjach desktopowych na przykładzie projektu GOG.com Galaxy - Piotr Marzec

GOG.com  -­‐  plaForma  cyfrowej  dystrybucji  gier

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

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

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

Klienci Ponad  2.7  miliona  unikalnych  wejść  miesięcznie  z  całego  świata  

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

Page 5: 4Developers 2015: Wykorzystanie technologii webowych w aplikacjach desktopowych na przykładzie projektu GOG.com Galaxy - Piotr Marzec

Agenda

1. Założenia  projektu  GOG.com  Galaxy  

2. Analiza  wybranych  problemów  

3. Wykorzystane  rozwiązania

Page 6: 4Developers 2015: Wykorzystanie technologii webowych w aplikacjach desktopowych na przykładzie projektu GOG.com Galaxy - Piotr Marzec

GOG.com  Galaxy

Komponenty  projektu

Galaxy  Client Desktopowa  aplikacja  kliencka  

Galaxy  SDK Biblioteka  dla  twórców  gier

Backend Wysoko  dostępne,  skalowalne  mikro  web  serwisy    

GOG.com    Website PlaForma  sprzedaży  i  dystrybucji  elektronicznej

Page 7: 4Developers 2015: Wykorzystanie technologii webowych w aplikacjach desktopowych na przykładzie projektu GOG.com Galaxy - Piotr Marzec

GOG.com  Galaxy  -­‐  komponenty

Galaxy  Client  

• Autoryzacja  użytkownika  

• Dostęp  do  sklepu  wraz  z  możliwością  kupowania  gier  

• Prosta  instalacja  i  automatyczny  update  posiadanych  gier  

• Moje  Achivementy,  pozycja  na  leaderboardach  

• Przyjaciele,  ich  aktywność  i  chat  

• MulaplaFormowość:  Windows,  Mac  OS  X,  Linux

Page 8: 4Developers 2015: Wykorzystanie technologii webowych w aplikacjach desktopowych na przykładzie projektu GOG.com Galaxy - Piotr Marzec

GOG.com  Galaxy  -­‐  komponenty

Galaxy  SDK  

• Współdzielenie  tożsamości  użytkownika  z  Galaxy  Client  

• Mulaplayer  -­‐  matchmaking,  networking  z  NAT  traversal,  backend  

• Achivementy,  Leaderboardy,  Statystyki  

• Overlay  -­‐  dostęp  do  funkcjonalności  Galaxy  Client  w  trakcie  gry  

• MulaplaFormowość:  Windows,  Mac  OS  X,  Linux

Page 9: 4Developers 2015: Wykorzystanie technologii webowych w aplikacjach desktopowych na przykładzie projektu GOG.com Galaxy - Piotr Marzec

GOG.com  Galaxy  -­‐  komponenty

GOG.COM  WEBSITEGALAXY  SDK

GALAXY  CLIENT GALAXY  BACKEND

desktop web

Page 10: 4Developers 2015: Wykorzystanie technologii webowych w aplikacjach desktopowych na przykładzie projektu GOG.com Galaxy - Piotr Marzec

GOG.com  Galaxy  -­‐  komponenty

GOG.COMGALAXY  SDK

GALAXY  CLIENT GALAXY  BACKEND

desktop web

Page 11: 4Developers 2015: Wykorzystanie technologii webowych w aplikacjach desktopowych na przykładzie projektu GOG.com Galaxy - Piotr Marzec

GOG.com  Galaxy

Analiza  wybranych  problemów

Page 12: 4Developers 2015: Wykorzystanie technologii webowych w aplikacjach desktopowych na przykładzie projektu GOG.com Galaxy - Piotr Marzec

GOG.com  Galaxy  -­‐  problem  #1

GOG.com  -­‐  monolityczna  web  aplikacja  

• Zintegrowany  system  kont  użytkowników  

• Brak  API  dla  zewnętrznych  aplikacji  

• Utrudnione  skalowanie  

• Single  point  of  failure

Page 13: 4Developers 2015: Wykorzystanie technologii webowych w aplikacjach desktopowych na przykładzie projektu GOG.com Galaxy - Piotr Marzec

GOG.com  Galaxy  -­‐  problem  #1

Wydzielenie  współdzielonych  funkcjonalności  

do  dedykowanych  mikro-­‐web-­‐serwisów

Page 14: 4Developers 2015: Wykorzystanie technologii webowych w aplikacjach desktopowych na przykładzie projektu GOG.com Galaxy - Piotr Marzec

GOG.com  Galaxy  -­‐  problem  #1

Galaxy  Accounts  -­‐  system  kont  użytkowników:  

• storage  podstawowych  danych  użytkowników  

• autoryzacja  credenaali  (wraz  z  UI)  

• zarządzanie  kontem  (reset  hasła,  zmiana  adresu  email)  

• key/value  store  dla  każdej  aplikacji/gry  

• zarządzanie  dostępem  do  pozostałych  mikro  serwisów

Page 15: 4Developers 2015: Wykorzystanie technologii webowych w aplikacjach desktopowych na przykładzie projektu GOG.com Galaxy - Piotr Marzec

GOG.com  Galaxy  Accounts

USERS

• REST  API  

• storage  danych   użytkowników  

• storage  credenNali  

• key/value  store

LOGIN

• UI  web  app  

• formularze  logowanie  i  rejestracji  

• UI  zarządzania  kontem  

• password  reset  emails

AUTH

• OAuth  2.0  Server  

• punkt  startowy,  jedynausługa  znana  klientom  

• autoryzacja  użytkowników  

• autoryzacja  i  generowanietokenów  OAuth

Page 16: 4Developers 2015: Wykorzystanie technologii webowych w aplikacjach desktopowych na przykładzie projektu GOG.com Galaxy - Piotr Marzec

GOG.com  Galaxy  Accounts

USERSLOGINAUTH

GOG.COM  WEBSITE

GALAXY  CLIENT

Page 17: 4Developers 2015: Wykorzystanie technologii webowych w aplikacjach desktopowych na przykładzie projektu GOG.com Galaxy - Piotr Marzec

GOG.com  Galaxy  Accounts

AUTH

GOG.COM  WEBSITE

GALAXY  CLIENT

USERSLOGIN

OAuth2

OAuth2

Page 18: 4Developers 2015: Wykorzystanie technologii webowych w aplikacjach desktopowych na przykładzie projektu GOG.com Galaxy - Piotr Marzec

GOG.com  Galaxy  Accounts

Technologia:  PHP  /  Symfony2

Page 19: 4Developers 2015: Wykorzystanie technologii webowych w aplikacjach desktopowych na przykładzie projektu GOG.com Galaxy - Piotr Marzec

Dostęp  do  sklepu  GOG.com  w  aplikacji  Galaxy  Client:  

• współdzielenie  tożsamości  użytkownika  

• wykorzystanie  jak  największej  ilości  już  działających  mechanizmów  

• unikanie  duplikowania  implementacji

GOG.com  Galaxy  -­‐  problem  #2

Page 20: 4Developers 2015: Wykorzystanie technologii webowych w aplikacjach desktopowych na przykładzie projektu GOG.com Galaxy - Piotr Marzec

GOG.com  Galaxy  -­‐  problem  #2

Embed  już  istniejącej  i  działającej  web  aplikacji  

GOG.com  w  desktopowej  aplikacji  Galaxy  Client  

+  

OAuth  Tokens

Page 21: 4Developers 2015: Wykorzystanie technologii webowych w aplikacjach desktopowych na przykładzie projektu GOG.com Galaxy - Piotr Marzec

GOG.com  Galaxy  -­‐  problem  #2

GOG.com  Galaxy  Client

naave  ui

naave  ui

naave  ui

naave  ui

naave  ui

naave  ui

naave  ui

naave  ui

naave  ui naave  ui naave  ui naave  ui

Page 22: 4Developers 2015: Wykorzystanie technologii webowych w aplikacjach desktopowych na przykładzie projektu GOG.com Galaxy - Piotr Marzec

GOG.com  Galaxy  -­‐  problem  #2

Technologia:  C++,  Chromium  (CEF)

(wkrótce  możliwa  przesiadka  na  QT)

Page 23: 4Developers 2015: Wykorzystanie technologii webowych w aplikacjach desktopowych na przykładzie projektu GOG.com Galaxy - Piotr Marzec

GOG.com  Galaxy  -­‐  problem  #3

GOG.com  Galaxy  Client

naave  ui

naave  ui

naave  ui

naave  ui

naave  ui

naave  ui

naave  ui

naave  ui

naave  ui naave  ui naave  ui naave  ui

Page 24: 4Developers 2015: Wykorzystanie technologii webowych w aplikacjach desktopowych na przykładzie projektu GOG.com Galaxy - Piotr Marzec

GOG.com  Galaxy  -­‐  problem  #3

Jednolity  UI/UX  aplikacji  desktopowej  Galaxy  Client  

i  web  aplikacji  GOG.com

Page 25: 4Developers 2015: Wykorzystanie technologii webowych w aplikacjach desktopowych na przykładzie projektu GOG.com Galaxy - Piotr Marzec

GOG.com  Galaxy  -­‐  problem  #3

Próby  stylowania  natywnych  kontrolek  systemowych:  

• natywne  kontrolki  są…  brzydkie  

• natywne  kontrolki  są  niespójne  z  designem  GOG.com  

• natywne  kontrolki  są  niespójne  między  systemami  operacyjnymi  

• robienie  własnych  natywnych  kontrolek  to  ślepa  uliczka  

• konieczność  stylowania  natywnych  kontrolek  na  każdym  systemie

Webdesign  jest  w  DNA  zespołu  GOG.com

Page 26: 4Developers 2015: Wykorzystanie technologii webowych w aplikacjach desktopowych na przykładzie projektu GOG.com Galaxy - Piotr Marzec

GOG.com  Galaxy  -­‐  problem  #3

UI  aplikacji  dektopowej  wykoany  w  całości  

w  technologiach  webowych

Page 27: 4Developers 2015: Wykorzystanie technologii webowych w aplikacjach desktopowych na przykładzie projektu GOG.com Galaxy - Piotr Marzec

GOG.com  Galaxy  -­‐  problem  #3

GOG.com  Galaxy  Client

Page 28: 4Developers 2015: Wykorzystanie technologii webowych w aplikacjach desktopowych na przykładzie projektu GOG.com Galaxy - Piotr Marzec

GOG.com  Galaxy  -­‐  problem  #3

Technologie  desktop:  

• C++  

• Chromium  (CEF)

Technologie  web:  

• HTML5  +  CSS3  (Compass)  

• Angular  JS  +  CoffeeScript  

• PHP  /  Symfony2

Page 29: 4Developers 2015: Wykorzystanie technologii webowych w aplikacjach desktopowych na przykładzie projektu GOG.com Galaxy - Piotr Marzec

GOG.com  Galaxy  -­‐  problem  #4

Dwustronna  komunikacja  pomiędzy  webowym  UI  

a  desktopową  aplikacją

Page 30: 4Developers 2015: Wykorzystanie technologii webowych w aplikacjach desktopowych na przykładzie projektu GOG.com Galaxy - Piotr Marzec

GOG.com  Galaxy  -­‐  problem  #4

GALAXY  CLIENT  APP HTML  UI

kontroler widok

przesyłanie  zmiany  stanu  aplikacji

Chromium  injected    JavaScript  object

Page 31: 4Developers 2015: Wykorzystanie technologii webowych w aplikacjach desktopowych na przykładzie projektu GOG.com Galaxy - Piotr Marzec

GOG.com  Galaxy  -­‐  problem  #4

var message = { action: ‘game.install’, data: {…} };

sendToClient(message); // injected function

Wysyłanie  wiadomości  z  UI  do  aplikacji

Page 32: 4Developers 2015: Wykorzystanie technologii webowych w aplikacjach desktopowych na przykładzie projektu GOG.com Galaxy - Piotr Marzec

GOG.com  Galaxy  -­‐  problem  #4

function receiveFromClient(message) { // hook into Angular service to route the message }

Wysyłanie  wiadomości  z  aplikacji  do  UI

Page 33: 4Developers 2015: Wykorzystanie technologii webowych w aplikacjach desktopowych na przykładzie projektu GOG.com Galaxy - Piotr Marzec

GOG.com  Galaxy  -­‐  problem  #5

Aplikacja  mulaplaFormowa  

Windows  +  Mac  OS  X  +  Linux

Page 34: 4Developers 2015: Wykorzystanie technologii webowych w aplikacjach desktopowych na przykładzie projektu GOG.com Galaxy - Piotr Marzec

GOG.com  Galaxy  -­‐  problem  #5

Bieżący  stos  technologinczny:  

• C++  

• CEF  (lub  QT)  

• HTML/CSS/JS  

• Minimalny  kontener  natywny  dla  każdego  systemu

Page 35: 4Developers 2015: Wykorzystanie technologii webowych w aplikacjach desktopowych na przykładzie projektu GOG.com Galaxy - Piotr Marzec

GOG.com  Galaxy  Client

Efekt  końcowy?

Page 36: 4Developers 2015: Wykorzystanie technologii webowych w aplikacjach desktopowych na przykładzie projektu GOG.com Galaxy - Piotr Marzec
Page 37: 4Developers 2015: Wykorzystanie technologii webowych w aplikacjach desktopowych na przykładzie projektu GOG.com Galaxy - Piotr Marzec
Page 38: 4Developers 2015: Wykorzystanie technologii webowych w aplikacjach desktopowych na przykładzie projektu GOG.com Galaxy - Piotr Marzec
Page 39: 4Developers 2015: Wykorzystanie technologii webowych w aplikacjach desktopowych na przykładzie projektu GOG.com Galaxy - Piotr Marzec
Page 40: 4Developers 2015: Wykorzystanie technologii webowych w aplikacjach desktopowych na przykładzie projektu GOG.com Galaxy - Piotr Marzec
Page 41: 4Developers 2015: Wykorzystanie technologii webowych w aplikacjach desktopowych na przykładzie projektu GOG.com Galaxy - Piotr Marzec

Galaxy  SDK

Mulaplayer  i  matchmaking

Page 42: 4Developers 2015: Wykorzystanie technologii webowych w aplikacjach desktopowych na przykładzie projektu GOG.com Galaxy - Piotr Marzec

Galaxy  SDK

Mulaplayer:  

• P2P  FCM  

• NAT  Punch  through  

• NAT  Proxy  

• mulaplayer  servers  (uczestnik  FCM)  

• wewnętrzne  technologie  GOG.com

Page 43: 4Developers 2015: Wykorzystanie technologii webowych w aplikacjach desktopowych na przykładzie projektu GOG.com Galaxy - Piotr Marzec

Galaxy  SDK

Matchmaking:  

• REST  WEB  API  

• persystentny  storage  lobby  i  ich  uczestników  

• wyszukiwanie  aktywnych  lobby  wg  dowolnych  kryteriów  

• garbage  collecang

Page 44: 4Developers 2015: Wykorzystanie technologii webowych w aplikacjach desktopowych na przykładzie projektu GOG.com Galaxy - Piotr Marzec

Galaxy  SDK

Achievementy,  Leaderboardy

GALAXY  CLIENT

• lista  odblokowanychachievementów  

• pozycja  na  leaderboarch

GALAXY  BACKEND

• REST  API  

• persystentny  storage

GALAXY  SDK

• zintegrowane  z  logiką  gry  

• odblokowuje  achievementy  

• wpisuje  wyniki  do   leaderboardów

Page 45: 4Developers 2015: Wykorzystanie technologii webowych w aplikacjach desktopowych na przykładzie projektu GOG.com Galaxy - Piotr Marzec

PYTANIA?  

Page 46: 4Developers 2015: Wykorzystanie technologii webowych w aplikacjach desktopowych na przykładzie projektu GOG.com Galaxy - Piotr Marzec

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

Page 47: 4Developers 2015: Wykorzystanie technologii webowych w aplikacjach desktopowych na przykładzie projektu GOG.com Galaxy - Piotr Marzec

DZIĘKUJĘ  ZA  UWAGĘ