Inspiracja

Podczas ostatniej wielogodzinnej podróży pociągiem nikt z nas nie zabrał ze sobą kart. To zwróciło naszą uwagę na bardzo ograniczone pole manewru na obecnych platformach.

Co zrobiliśmy

Stworzyliśmy aplikację webową udostępniającą użytkownikom karty do gry. Użytkownicy mogą tworzyć pokoje do gry lub wchodzić do istniejących.

Jak to zrobiliśmy

Nasza aplikacja webowa podąża za najnowszymi standardami aplikacji webowych tworzonych na urządzenia mobilne. Wykorzystujemy Vue.js, Node.js, najnowsze javascriptowe API do obsługi żyroskopu, HTML5... Naszą infrastrukturę postawiliśmy na Amazon Web Services. Zaprojektowaliśmy naszą infrastrukturę, aby była w pełni skalowalna. Do serwowania frontendu wykorzystujemy wysokiej dostępności data storage - AWS S3 podpięty do sieci dostarczania treści (CDN - CloudFront), który propaguje naszą stronę na wiele serwerów na wszystkich kontynentach w celu zmniejszenia czasu ładowania strony i pełnej dostępności. Również naszą część backendową hostujemy na wysoce skalowalnych serwerach w chmurze, poprzedzonymi load balancerem. Do obu części naszej platformy mamy skonfigurowany continuous deployment zapewniający nam szybkość wdrażania kolejnych wersji. Całość infrastruktury jest opisana kodem dzięki Terraform.

Wyzwania

Zrzutowanie koordynatów dwuwymiarowych na płaszczyznę 3D i dalsze przeliczenia między tymi dwoma płaszczyznami. Zaimplementowanie perspektywy osobno dla każdego z graczy. Zsynchronizowanie urządzeń graczy. Wprowadzenie żyroskopu. Zaprojektowanie wysoce skalowalnej infrastruktury dla wielu użytkowników. Brak snu.

Osiągnięcia

Napisanie działającej aplikacji i postawienie jej na AWS.

Czego się nauczyliśmy

Obsługi Terraform, Pushera, powtórzyliśmy również zagadnienia z dziedziny algebry :)

Plany na przyszłość e1337 - Cards4YOU

  • Wprowadzenie mikropłatności - sprzedaż skinów do kart.
  • Wprowadzenie innych talii i gier.
  • Wykorzystanie akcelerometru w celu detekcji zderzenia dwóch smartfonów i implementacja przekazywania karty w ten sposób.
Share this project:

Updates