Mikołaj Kania Waldemar Korłub Jakub Krajewski
Wprowadzenie do projektowania gry strategicznej w oparciu o XNA Framework
Mobilizacja Nasibu Isle XNA Framework Wirtualny świat rozgrywki Elementy 2D Elementy 3D Teren Środowisko Obiekty Optymalizacja Podsumowanie Plan prezentacji
Mobilizacja Microsoft Imagine Cup 2010 Praca dyplomowa inżynierska Adaptacja nowoczesnych technik trójwymiarowej wizualizacji komputerowej, baz wiedzy i algorytmów decyzyjnych, na potrzeby symulatora rozwijającej się społeczności afrykańskiej Promotor: dr inż. Jacek Lebiedź Projekt grupowy Interaktywny symulator zachowań w środowisku agentowym Promotor: dr hab. inż. Jerzy Balicki
Nasibu Isle W pełni trójwymiarowa gra strategiczna Fabuła związana z celami milenijnymi ONZ Gra oparta o własny system agentowy XNA Game Studio 3.1 Autorski, stworzony od podstaw silnik graficzny
XNA Framework Jeden z wymogów konkursu Imagine Cup Zalety: C# Zarządzane środowisko Biblioteki wspomagające obliczenia wektorowe i macierzowe (XNA Math) Wady: Wydajność platformy.net w stosunku do czystego C/C++ Brak kompatybilności wstecznej w kolejnych wersjach
Wirtualny świat rozgrywki
Wirtualny świat rozgrywki Prosta gra strategiczna - Co potrzebujemy? Warstwa 2D Elastyczny system okienek i widgetów do tworzenia interfejsu Ekrany ładowania, menu główne Powiadomienia o zajściach w grze Warstwa 3D Model rzeźby terenu Środowisko (niebo,woda) Roślinność Obiekty Jednostki
Elementy 2D XNA wspiera elementy grafiki 2D Prosta koncepcja systemu okienkowego:
Warstwa 3D - teren Jak przechowywać dane o topografii terenu? Duży model 3D (z zewnętrznego programu) Mapa wysokości w postaci bitmapy, przekształcona do postaci dużej siatki wierzchołków Mapa wysokości w postaci bitmapy jako nośnik danych (wymaga Shader Model 3 dla Vertex Texture Fetch)
Warstwa 3D - teren Mapa wysokości w postaci bitmapy jako nośnik danych zalety: Mniejsza ilość danych Możliwość szybkiej zmiany topografii terenu bez konieczności zmiany siatki wierzchołków Poprzez mozaikowanie bitmap można w praktyce wyświetlić teren o dowolnych rozmiarach
Mapa wysokości Nasibu Isle
Siatka terenu Nasibu Isle
Wastwa 3D teren
Vertex Texture Fetch Tworzymy jeden segment NxN wierzchołków Umieszczamy go w dowolnym miejscu mapy Odczytujemy dane z bitmapy dla wierzchołków z uwzględnieniem przesunięcia
Siatka terenu Nasibu Isle
Środowisko Niebo: Skydome: Woda: Najprościej: Dwa duże trójkąty przecinające siatkę terenu + Pixel Shader symulujący fale Trudniej: Gęsta siatka trójkątów + dynamiczna korekta pozycji w Vertex Shader dla symulacji fal
Woda Reflection (odbicia od lustra wody) Refraction (widoczność dna poniżej poziomu wody) Falowanie zrealizowane poprzez manipulacje wektorami normalnymi Specular lighting (połysk)
Woda Nasibu Isle
Woda Nasibu Isle
Optymalizacja terenu
Optymalizacja terenu
Optymalizacja terenu
Optymalizacja terenu
Drzewo czwórkowe
Drzewo czwórkowe Liść drzewa czwórkowego segment NxN
Drzewo czwórkowe
Level of Detail
Level of Detail
Level of Detail Mapa rysowana za pomocą identycznych segmentów NxN wierzchołków Tworzymy segmenty o identycznej szerokości, ale innej ziarnistości (2^M mniejszej) Dobieramy ziarnistość segmentu na podstawie: Odległość od kamery Amplituda terenu
Wady
Wady
Wady
Obiekty, modele, roślinność Używamy mechanizmu drzewa czwórkowego Instancje modeli przechowywane w kontenerach w liściach drzewa czwórkowego Selekcja widocznych segmentów wyznacza także widoczne modele
Obiekty, modele, roślinność Możemy użyć różnych modeli reprezentujących ten sam obiekt, ale o różnym poziomie szczegółowości Poziom szczegółowości dobieramy analogicznie na podstawie odległości od kamery Najniższy poziom szczegółowości dla najbardziej oddalonych obiektów oraz dla drzew można zrealizować za pomocą tzw. Billboardów
Billboard Billboard jest reprezentacją modelu w formie dwuwymiarowej (rzut na płaszczyznę - zdjęcie ) Model 3D Billboard
Billboard x 21837
Podsumowanie Przepis na grę strategiczną: Pomysł na formę rozgrywki i fabułę Środowisko wytwarzania XNA Framework pozwalający skupić się na problemach algorytmicznych Zaplanowanie modelu wirtualnego świata Algorytmy zarządzania siatką terenu Efekty pogodowe i środowiskowe Zarządzanie modelami i obiektami świata wirtualnego Interfejs użytkownika Implementacja rozgrywki poruszanie modelami zarządzanymi przez silnik graficzny + obsługa okienek interfejsu 2D do interakcji w użytkownikiem + oczywiście kilka nieprzespanych nocy :-)
Literatura Kania M., Korłub W., Koziel Ł., Krajewski J., Smooth start for strategy game development supported by XNA Framework, Gdańsk University of Technology, 2011 XNA Shader Programming, http://digitalerr0r.wordpress.com/tutorials/, June 2011 Riemer's XNA Tutorial, http://www.riemers.net/, June 2011
Pytania?
Dziękuję za uwagę!