Gra 2D, część 9: Efektowne przejścia między stanami

25.08.2010 - Marcin Milewski
TrudnośćTrudność

Efekty przejścia są znanym i prostym sposobem na realizację płynnego przejścia między dwoma obrazami. Efekty te są znane przede wszystkim z narzędzi do tworzenia slajdów (jak MS PowerPoint czy OpenOffice Impress) oraz filmów, ale także z gier komputerowych. Nie może ich zabraknąć również w naszej grze :)

Poprzedni artykuł - Dobrze mieć wybór... poziomu Następny artykuł - Nowa szata graficzna

Co zrobimy?

Obowiązkowymi efektami każdej gry są fade-in i fade-out (znane też jako fade-from-color i fade-to-color), czyli odpowiednio usuwanie i dodawanie zacieniowania (stopniowe pojawianie się i znikanie obrazu). Są one proste w implementacji, gdyż sprowadzają się do odpowiedniej manipulacji przezroczystością obrazu. Znajdą swoje miejsce także w naszej grze.

Następnie zaimplementujemy nieco bardziej zaawansowany efekt (właściwie całą rodzinę efektów). Będzie on parametryzowany, więc zobaczymy, jak poradzić sobie z dużą liczbą możliwości w elegancki, łatwy w użyciu i rozszerzalny sposób.

Poniżej znajduje się film przedstawiający kombinację efektów, które będzie można uzyskać dzięki naszemu rozwiązaniu. Przykładowa scena składa się z kilku prostokątów, ale do prostego pokazu powinna w zupełności wystarczyć.

Podstawowe założenia

W tym artykule chcemy skonstruować prosty mechanizm do tworzenia efektów przejścia między stanami gry. Nasz system będzie oferował podstawowe możliwości w zakresie obsługi oraz dodawania nowych efektów. Przed rozpoczęciem implementacji przyjrzyjmy się ograniczeniom oraz wymaganiom, które będziemy chcieli spełnić:

  1. Wykorzystywany kolor to czarny - wykorzystane przez nas efekty będą jako domyślny kolor wykorzystywały czarny. Choć nie będzie możliwa modyfikacja tego koloru, to już niedługo przekonamy się jak łatwo można rozszerzyć program o odpowiednią funkcjonalność.
  2. Brak tekstur - drugim założeniem jest niewykorzystywanie tekstur w implementowanych efektach. Oczywiście każde przejście może korzystać z nich we własnym zakresie, ponieważ nie ograniczamy w żaden sposób dostępu do biblioteki OpenGL. Zobaczymy, że z odrobiną fantazji możemy stworzyć całkiem niezłe efekty bez wykorzystania obrazków.
  3. Co najwyżej dwa stany - nasz interfejs będzie zakładał, że każde przejście odbywa się między dwoma stanami aplikacji (klasy dziedziczące po AppState). Każdy z efektów będzie mógł korzystać z obydwu, tylko jednego lub nawet żadnego ze stanów. Ustawianie ich nie będzie wymaganiem, ale dodatkową możliwością. Naturalnym rozszerzeniem byłoby umożliwienie wykorzystania dowolnej liczby stanów, ale nie wydaje się to być najważniejszą funkcjonalnością - ile takich efektów można sobie wyobrazić?
  4. Wygoda użytkowania - wykorzystanie mechanizmu powinno być możliwie intuicyjne i proste. Idealnym rozwiązaniem byłoby, gdyby dodanie efektu przejścia do już istniejącego stanu zajmowało jeden wiersz kodu. Czy to możliwe? Przekonamy się już niebawem.

Zupełnie nowa grafika - już wkrótce!

Już niedługo opublikowane zostaną artykuły opisujące jak sprawnie tworzyć grafikę do gier 2d. To na prawdę łatwe! Zobaczmy czego będzie się można z nich nauczyć:

0
Twoja ocena: Brak

Copyright © 2008-2010 Wrocławski Portal Informatyczny

design: rafalpolito.com