Detekcja kolizji w grach JavaScriptowych

Adv-js-games-teaser-big

Tagi JavaScript

JavaScript jest jednym z najbardziej uniwersalnych języków wykorzystywanych do tworzenia gier komputerowych. Jego największą zaletą jest multiplatformowość oraz szybki rozwój licznych bibliotek i frameworków. Tym razem jednak skupimy się na podwalinach teoretycznych niezbędnych w programowaniu gier, będzie to swoiste święto algorytmiki. Niech nikt jednak nie spodziewa się suchego wykładu, DevMeeting to przede wszystkim zespołowe programowanie i ciekawa aplikacja do zaimplementowania. Podczas dwunastogodzinnego warsztatu uczestnicy napiszą własną wersją gry Asteroids, nieśmiertelnego klasyka z 1979 roku autorstwa Atari Inc.

Dla kogo?

DevMeeting skierowany jest głównie do doświadczonych programistów JavaScript, którzy posiadają wiedzę z zakresu OOP i mają swobodę w budowaniu złożonych aplikacji. Warsztaty mogą być również bardzo interesujące dla game developerów niekoniecznie biegłych w Javascript.

Szczegółowe zagadnienia

  • Krótkie i treściwe repetytorium z fizyki, powtórka zagadnień z podstawówki (lub gimnazjum w przypadku młodszych uczestników DevMeetingu) dotyczących ruchu w przestrzeni dwuwymiarowej.
  • Matematyka wektorów (dodawanie, odejmowanie, mnożenie, obliczanie długości wektora…).
  • Szczegółowe przedstawienie sposobów wykrywania kolizji dla kształtów o zróżnicowanej konfiguracji:
  • test odległości pomiędzy punktami,
  • obliczanie odległości pomiędzy punktem, a najbliższym mu punktem danego trójkąta,
  • obliczanie odległości pomiędzy punktem, a najbliższym mu punktem wielościanu wypukłego,
  • twierdzenie SAT (Separating Axis Theorem) czyli szukanie kolizji obiektów na podstawie ich rzutów na poszczególne osie symetrii.

Omówienie algorytmów optymalizacji wydajności:

  • partycjonowanie przestrzeni czyli redukcja problemu n^2 do n*log(n),
  • wykorzystywanie drzewa czwórkowego lub ósemkowego.

Obsługa reakcji na kolizje

Obsługa reakcji na kolizje nachodzących na siebie obiektów (odbicie, tarcie…), analiza sił składowych, które towarzyszą tym zdarzeniom.

Warsztaty, które się odbyły

Gliwice, 16 lipca relacja

  • _igp5377
  • _igp5397
  • _igp5404
  • _igp5431

Devmeetings @ facebook

Prowadzący

1

Frontend developer, współautor jednej z pierwszych polskich gier przeglądarkowych – Tanadu. Zafascynowany JavaScriptem, szczególnie w kontekście przeglądarek: od optymalizacji wydajności animacji, przez czystą architekturę dużych aplikacji webowych, po integrację z backendem (np. opartym o Node.js). Kiedy akurat nie pisze testów w QUnit, uczestniczy w budowie frameworka Unify (cross-platformowy JS).

Dyskusja

Aby wziąć udział w dyskusji, musisz się zalogować .
Jeśli nie posiadasz jeszcze konta, prosimy się zarejestrować .