Programowanie Gier
Transkrypt
Programowanie Gier
Programowanie Gier Wykład 3 Dr Krzysztof Podlaski Grafika w J2ME • Klasa Canvas – metoda związana z rysowaniem: • public void paint(Graphics g) » Przykład2_4 » Przykład2_5 J2ME Przechowywanie danych • Użytkowanie stałej pamięci urządzenia • The Record Managment System (RMS) – Zapis „bazodanowy” • klasa RecordStore » addRecord(…) » deleteRecord(…) – Otwieramy „bazę” – RecordStore » wykonujemy potrzebne działania – Zamykamy RecordStore » Kosztowne operacje otwierania i zamykania » Kosztowne utrzymywanie otwartego RecordStore RMS • Zapis i odczyt z RecordStore • Przykład 2_6 Obsługa połączeo • Sieciowe połaczenia • Przykład2_7 • Przykład2_8 (wysyłanie metodą POST) • Połączenie Bluetooth • Inicjalizacja połączenia • Wyszukanie „drugiego kooca” • Przesyłanie danych Grafika w grach • Ekran 2 wymiarowy – Naturalna grafika 2D • Gry planszowe – Jak zrobid grafikę 3D na płaskim ekranie ? • Jak na zdjęciu • Wykresy trójwymiarowe na lekcjach matematyki • Skomplikowane struktury = zbiory wielokątów Żródło: Wikipedia Grafika 3D • Dokładna grafika 3D – Oświetlenie obiektów • Refleksy światła – Animacje • Ruch, obracanie obiektów – Dużo czasochłonnych obliczeo matematycznych – Algebra się przydaje • Wspomaganie – Karty graficzne /akceleratory A jak 3D na komórki • Mało zasobów – Słaby procesor – Brak wspomagania obliczeo • Nie ma karty graficznej/akceleratora – Wracamy do czasów lat 80-tych • Techniki z gier Wolfenstein, Doom – Ray casting – Nowe komórki wspomagają 3D • Java Mobile 3D API Ray casting • Technika śledzenia promieni światła • Śledzimy promienie światła trafiające do oka/kamery • Wielkośd obiektu określamy na podstawie odległości • Przykładowa aplikacja – Raycasting-Java-Applet by Peter Paulis • Chodzenie po labiryncie Labirynt • Tworzymy mapę pomieszczenia – Dzielimy na sektory (np. 4px4px) • Zamieniamy na macierz liczbową Labirynt cd. • Wyznaczamy promienie – Sprawdzamy przez jakie sektory przebiega • Algorytm DDA • Wysokośd ściany? – Na podstawie odlegości Dane wstępne • Pole widzenia ludzika • 60 stopni (rzeczywiste pole ok. 90 stopni) • Wysokośd ścian i naszego ludka • Np. człowiek ½ wysokości ściany • Położenie początkowe (2D) • Wielkośd płaszczyzny projekcji • Ekranu Algorytm DDA • Iteracyjnie szukamy kolejnych sektorów – którą ścianą promieo wychodzi z sektora? • Odlegośd do kolejnej siatki pionowej k • Odległośd do kolejnej siatki poziomej • Znamy kąt α • Troszkę geometrii Tworzymy obraz J.Grzyb, J2ME tworzenie gier Efekt rybiego oka Efekt • Przykładowa aplikacja – http://www.permadi.com/java/rayc/index.html Ray Tracing • Lepsze podejście Żródło: Wikipedia Java Mobile 3D • Java Mobile 3D – Wspomaganie grafiki 3D dla małych urządzeo – Nie mylid z Java 3D API (Java SE) – Około 30 klas w pakiecie • javax.microedition.m3g – Dwa tryby • immediate mode – Operacje niskiego poziomu • retained mode – Programowanie wysokiego poziomu