Lekcja ta, powstała na prośbę kilku moich czytelników. Przedstawie w niej sposób, ładowania, przechowywania i wyświetlania klatek animacji. Oczywiście jest to jeden ze sposobów, ale starałem się opracować system, który będzie prosty do zrozumienia i jego dalszej rozbudowy.
Pewnie nie możecie, już się doczekać, aby zobaczyć efekt tej lekcji, więc zabieram się za omawianie.
Animacje jako takie, omówiłem w lekcji 2, dobrze jest sobie ją przypomnieć.
Jak już wiesz, animacja składa się z dwóch lub więcej klatek, tego samego obiektu, ale lekko zmodyfikowanych. Na potrzeby tej lekcji przygotowałem dwie animacje. Animacja gracza i animacja jednego z bloku na planszy.
Umiemy już przesuwać gracza i wykrywać kolizje. Czas na coś bardziej efektownego, czyli na interakcje gracza z otoczeniem. Pokaże, w jaki sposób zaimplementować, przesuwanie bloków, zabieranie i umieszczanie w nowym miejscu, oraz zmianę stanu bloku, na przykład wszelkie przełączniki, otwieranie i zamykanie drzwi itp.
Przygotowałem nieco zmodyfikowaną tablicę MAP, w której już nie mamy 2 elementów 1 i 2, ale jest ich aż 5.
Numer, to identyfikatory bloków. Dzięki nim, program wie, jaki kolor klocka ustawić (albo inne elementy).
Oczywiście, taka mapa jest bardzo prymitywna, bo nie zawiera żadnych dodatkowych informacji, ale na potrzeby tej lekcji wystarczy. W grze, dobrze mieć tablicę obiektów, gdzie obiektem, jest każde pole mapy.
W poprzedniej lekcji, pokazałem już jak to zrobić, przy wykorzystaniu klasy Tile. W tej lekcji, nadal będziemy z niej korzystać, tylko tym razem nieco rozbudowanej. Czytaj więcej »
W tej lekcji zajmiemy się wykrywaniem kolizji na mapie izometrycznej. Istotną sprawą jest kolejność rysowania elementów świata, aby postać gracza przesłaniała je, lub chowała się za nie, na przykład za drzewem, zależnie od tego w jakim miejscu się znajduje. Wiele osób o to pyta, więc postaram się w miarę prosty i dokładny sposób to opisać.
Na poniższym rysunki widać różnice, przy wyświetlaniu zwykłym z lewej, i po zastosowaniu sortowania z prawej. Jak można zauważyć, z lewej nasz czerwony klocek, robi co chce, włażąc pod ścianę. Jak nauczyć go posłuszeństwa, wyjaśnię w dalszej części.
Ważną czynnością w grach, jest wyświetlanie tekstu. O ile sama biblioteka pygame posiada funkcję, do jego wyświetlania w trybie graficznym, tyle w OpenGL musimy to zrobić sami. Musimy więc sami zadbać o jego obsługę.
Są conajmniej trzy metody wyświetlania tekstu w OpenGL. Generowanie z bitmapy, generowanie z pliku TTF i użycie biblioteki GLUT. Każda ma swoje wady i zalety, opiszę każdą metodę, a Ty wybierz taką która Ci odpowiada.
Najprostrzy sposób, to użycie biblioteki GLUT. Aby skorzystać z tej biblioteki, dodaj import
from OpenGL.GLUT import *
i ją zaninicjuj poleceniem glutInit(). Polecenie to, wstaw do funkcji opengl_init(). Teraz napiszemy funkcję draw_text(), która wyświetla tekst. Czytaj więcej »
Witam Cię, w kolejnej lekcji. Jak wspomniałem poprzednio, dziś zajmiemy się obsługą myszki w świecie izometrycznym. Jest to istotna sprawa, ponieważ musimy wykorzystać pewne przekształcenia. Będą to przekształcenia pozycji ekranowej na izometryczną i izometryczną na ekranową. Jak widzisz na rysunku, współrzędne ekranu inaczej się układają niż współrzędne izometryczne. W związku z tym musimy je przekonwertować.

Po dłuższej przerwie, udostępniam obiecaną lekcje. W poprzednich lekcjach, pokazywałem jak obsługiwać duszki, klawiaturę, jak rysować świat 2D i jak poruszać w nim obiektami. Dla jednych była to ciekawa przygoda, dla innych być może przypomnienie tego co już znali. Celem było wprowadzenie do właściwego tematu tego kursu, jakim jest tworzenie świata w rzucie izometrycznym. W tej lekcji, pokaże jak tworzyć kafle i jak budować z nich świat.
Rzut izometryczny, dodaje efekt trójwymiarowości. Świat nie jest pokazany z góry, ale jest lekko obrócony, a dokładnie o 45 stopni.

Zgodnie z obietnicą, dziś zajmiemy się tworzeniem mapy 2D, za pomocą kafli (ang. tiles). Jest ona zbudowana z wielu obrazków, ułożonych jeden obok drugiego, tak jak układa się płytki.

Oś Y ekranu, jest w przeciwną stronę, niż uczyłeś się na matematyce. (0,0) to lewy górny róg ekranu. Ułożone w rzędach i kolumnach płytki, tworzą mapę. Mapa oczywiście nie jest zapisywana w postaci płytek, jest w postaci jedno lub dwuwymiarowej tablicy, która informuje jaka płytka znajduję się na danej pozycji. Taka mapa łatwa jest do zapisania na dysku i późniejszego odczytania. Dla uproszczenia, zdefiniujemy mapę, w tablicy. Czytaj więcej »
Dzisiejsze gry wymagają wsparcia sprzętowego grafiki, aby odciążyć procesor. Dzięki temu, gry są szybsze i ładniejsze. Czy ciekawsze to nie koniecznie, wszystko zależy od pomysłu i realizacji.
Sprzętowe wsparcie graficzne umożliwiają DirectX i OpenGL. Pierwsze jest tylko na Windows, a OpenGL działa na wszystkich graficznych systemach operacyjnych, dlatego skupimy się jedynie na tej bibliotece graficznej.
Pygame, sam w sobie nie posiada obsługi OpenGL, ale można go prosto połączyć z PyOpenGL, zakładam, że masz już go zainstalowany, jak zalecałem w pierwszej części jeśli nie, to zrób to teraz.
Na początek garść teorii. Musisz nauczyć się umieszczać obiekty 2D w przestrzeni 3D.
OpenGL operuje na wielokątach (ang. polygon). Można rysować pojedyńcze piksle, ale operacje takie są bardzo powolne i nie nadają się do tworzenie gier. Aby umieścić obrazek na ekranie, trzeba utworzyć w przestrzeni 3D, czworokąt i nałożyć na niego teksturę, w postaci naszego obrazka. Do utworzenia czworokątu, potrzebujemy współrzędnych czterech wierzchołków.

Wiemy już jak tworzyć duszki i poruszać nimi. Ale dało się zauważyć, że duszkom coś brakuje. Kolizji.
Czym są kolizje? Jeśli próbujesz wyjść z pokoju przez ścianę, to nastąpi kolizja ze ścianą, która nie wypuści cie z niego. Jeśli kolizji by nie było, jak w naszym ostatnim przykładzie, to można by było przechodzić przez ściany jak duchy.
Kiedy więc zachodzi kolizja? Gdy dwa obiekty w grze, zachodzą na siebie, czyli jakaś część duszka, znajduje się w tym samym miejscu ekranu, co inny duszek.
Metody wykrywania kolizji
Jest wiele sposobów wykrywania kolizji. Najdokładniejszym jest sprawdzanie każdego piksela, duszka z innym duszkiem. Metoda ta ma jednak wady. Jest bardzo czasochłonna. W grze, gdzie wszystko dynamicznie się zmienia, nie jest konieczna aż taka dokładność.
Kolizja okręgów
Najprostszym sposobem jest przybliżenie obiektu do okręgu.

W poprzedniej części, nauczyliśmy się tworzyć okno, obsługiwać pętle zdarzeń i wyświetlać obrazki na ekranie. W tej części nauczymy się tworzyć duszki i poruszać nimi.
Co to są duszki
Duszki (ang. sprites), to małe ruchome obrazki wyświetlane na ekranie. Są nimi np, postacie, potworki wszelkie ruchome elementy gry. Duszki mogą być statyczne, które nie zmieniają kształtu ani wyglądu i animowane. Najpierw zajmiemy się duszkami statycznymi.
Tworzymy duszka
Tworzymy więc jakiś obrazek, którym będziemy sterować w formacie PNG, oczywiście bez tła, albo pobierz gotowy, który przygotowałem.