This is the Polish translation of In-Practice/2D-Game/Breakout article of learnopengl.com tutorial series.

W trakcie tych samouczków dowiedzieliśmy się sporo o wewnętrznych działaniach OpenGL i o tym, jak możemy ich użyć do tworzenia ciekawych grafik. Jednak oprócz kilku demonstracji technicznych, tak naprawdę nie stworzyliśmy praktycznej aplikacji z OpenGL. Jest to wprowadzenie do większej serii samouczków o tworzeniu stosunkowo prostej gry 2D przy użyciu OpenGL. Seria samouczków pokaże, jak możemy wykorzystać OpenGL w większym, bardziej skomplikowanym projekcie. Zwróć uwagę, że seria niekoniecznie wprowadza nowe koncepcje OpenGL, ale mniej więcej pokazuje, jak możemy zastosować poznane pojęcia do większej całości.

Ponieważ raczej chcę by przykład był prosty, opieram naszą grę 2D na już istniejącej grze zręcznościowej 2D. Przedstawiam Breakout, klasyczną grę 2D wydaną w 1976 roku na konsoli Atari 2600. Breakout wymaga, aby gracz, który kontroluje małe poziome wiosło (ang. paddle) w celu zniszczenia wszystkich cegieł, odbijając małą kulkę od każdej cegły, nie pozwalając, by piłka dotarła do dolnej krawędzi ekranu. Gdy gracz zniszczy wszystkie cegły, kończy grę.

Poniżej możemy zobaczyć, jak pierwotnie wyglądał Breakout na Atari 2600:

Zdjęcie Atari 2600 Breakout

Gra ma następujące mechaniki:

  • Małe wiosło jest kontrolowane przez gracza i może poruszać się tylko w granicach ekranu; albo w lewo, albo w prawo.
  • Piłka porusza się po ekranie, a każda kolizja powoduje, że piłka zmienia kierunek w zależności od miejsca uderzenia; dotyczy to granic ekranu, cegieł i wiosła.
  • Jeśli piłka dotrze do dolnej krawędzi ekranu, gracz albo przegrywa, albo traci życie.
  • Gdy tylko cegła dotknie piłki, zostaje zniszczona.
  • Gracz wygrywa, gdy tylko wszystkie cegły zostaną zniszczone.
  • Kierunek piłki może być manipulowany przez odległość piłki od środka wiosła.

Ponieważ od czasu do czasu piłka może znaleźć małą szczelinę docierając do obszaru nad ceglaną ścianą, będzie nadal odbijać się w górę i w dół między górną krawędzią poziomu a górną krawędzią cegły. Piłka odbija się tak do momentu, aż w końcu znów znajdzie szczelinę. Jest to logiczne, skąd gra otrzymała swoją nazwę, ponieważ piłka ma za zadanie się wydostać (ang. break out).

OpenGL Breakout

Ta klasyczna gra zręcznościowa będzie podstawą grą 2D, którą całkowicie zaimplementujemy w OpenGL. Ta wersja Breakout będzie działać na karcie graficznej, co daje nam możliwość ulepszenia klasycznej gry Breakout o dodatkowe funkcjonalności.

Oprócz klasycznej mechaniki, nasza wersja Breakout będzie zawierała:

  • Najlepszą grafikę, jaką kiedykolwiek widziałeś
  • Efekty cząsteczkowe
  • Zaawansowane renderowanie tekstu
  • PowerUp`y
  • Efekty postprocessingu
  • Wiele poziomów (dostosowywanych)

Aby Cię podekscytować, możesz zobaczyć, jak będzie wyglądać gra po zakończeniu serii samouczków:

Wersja OpenGL Breakout

Te samouczki połączą wiele pojęć omawianych w poprzednich samouczkach i pokażą, jak mogą one współpracować jako całość. Dlatego ważne jest, abyś przynajmniej ukończył sekcję Pierwsze kroki, zanim przejdziesz do tych samouczków.

Ponadto kilka samouczków będzie wymagać pojęć z innych samouczków (na przykład Framebuffery z sekcji Zaawansowany OpenGL). W razie potrzeby, wymagane tutoriale będą wymienione.

Jeżeli jesteś gotów zacząć, przejdź do kolejnego samouczka z tej serii.