Tworzenie gier w Unity – czym jest Unity

Tworzenie gier w Unity – czym jest Unity

Czym jest Unity

Unity to środowisko do tworzenia gier trójwymiarowych oraz dwuwymiarowych lub animacji. Działa na systemach Microsoft Windows, MacOS oraz Linux. Umożliwia tworzenie aplikacji na przeglądarki, komputery PC, konsole gier lub urządzenia mobilne. Umożliwia pisanie skryptów w językach: Unity Script, C# oraz Boo (usunięte w wersji 5). Unity 5 jest dostępny w wersji bezpłatnej dla twórców o niższych dochodach niż 100 tysięcy dolarów rocznie.

Możliwy jest import bibliotek dynamicznych DLL, czyli bibliotek łączonych dynamicznie, współdzielonych w środowisku Windows, przechowujących implementacje różnych podprogramów programu. Gry z Unity oprócz platform jak Windows, Linux, Android obsługują także hełmy rzeczywistości wirtualnej.

Pojęcia związane ze środowiskiem Unity

Współrzędne

W aplikacjach 3D znane jest pojęcie współrzędnych, są osie X i Y, które określają położenie w poziomie i pionie, oraz oś Z, która reprezentuje głębię. W aplikacjach 3D informacje o obiekcie są pokazywane w formacie X, Y, Z – są to współrzędne kartezjańskie. Współrzędne 3D w środowisku Unity są podawane w nawiasach np. (4, 5, 4) i takie podawanie współrzędnych jest wymagane. Współrzędne (4, 5, 4) oznaczają, że obiekt jest umieszczony w trójwymiarze 4 jednostki od punktu 0 na osi X, 5 jednostek od punktu 0 na osi Y oraz 4 jednostki od punktu 0 w kierunku do przodu na osi Z.

Przestrzeń modelu i świata

Kluczowa jest różnica między przestrzenią modelu i przestrzenią świata. Wszystkie współrzędne obiektów w przestrzeni 3D odnoszą się do punktu zerowego. Jednakże możemy używać przestrzeni modelu aby zdefiniować współrzędne danego obiektu do innego. Pojawia nam się hierarchia (Hierarchy), czyli przeciągany obiekt do innego w tym oknie staje się potomkiem, a jego współrzędny odnoszą się w stosunku do obiektu rodzica.

Każdy obiekt ma swój punkt zerowy, z którego rozpoczynają się osie współrzędnych, np. środek obiektu. Możemy tak tworzyć powiązania pomiędzy obiektami i dzięki temu zmieniać odległości między nimi. Aby współrzędne jakiegoś obiektu 3D po zaimportowaniu do środowiska Unity zostały poprawnie odczytane, należy upewnić się, że modele 3D z innego środowiska pracy 3D mają położenie (0, 0, 0).

Wektory

Wektor jest to obiekt opisywany za pomocą wielkości: długości, kierunku wraz ze zwrotem, znany jest z matematyki elementarnej, inżynierii czy z fizyki. Wektory mogą być dodawane, odejmowane czy mnożone przez liczbę. Mnożenie przez liczbę, nazywaną skalarem, zmienia moduł (długość) wektora, np. rozciąga go zachowując kierunek. Graficzne jest przedstawiany jako strzałka, której długość symbolizuje moduł, kierunek odpowiada kierunkowi prostej zawierającej odcinek i zwrot, który wskazuje grot strzałki.

Wektory w przestrzeni kartezjańskiej

W przestrzeni kartezjańskiej wektor może być przedstawiony przez wskazanie punktów początkowego i końcowego, rozważa się także wektory zaczepione, które określane są przez współrzędne punktu końcowego wektora. Wektor o początku w A i końcu w B oznacza się jako AB. Długość odcinka opisuje moduł, a kierunek wskazuje przesunięcie B względem A. Dwa wektory zaczepione AB i CD dają ten sam wektor swobodny, jeżeli mają ten sam moduł oraz kierunek i zwrot. Punkty A = (1,0,0) oraz B = (0,1,0) w przestrzeni określają wektor swobodny AB, który wskazuje z punktu x=1 na osi x do punktu y=1 na osi y.

Własności wektorów:

  • równość – „dwa wektory są równe, jeżeli mają równe wartości i kierunki (wraz ze zwrotami). Równoważnie będą one równe, jeśli odpowiadające współrzędne tych wektorów będą równe”,
  • dodawanie i odejmowanie,
  • mnożenie przez skalar – „wektor może być pomnożony lub przeskalowany za pomocą liczby rzeczywistej r. Liczby te nazywane są skalarami”,
  • długość,
  • iloczyn skalarny.

Kamery

Są niezbędne, są niejako oknem na ekranie monitora, przez które możemy obserwować trójwymiarowy świat. Mogą być animowanie lub przymocowane do postaci lub obiektów, mogą być umieszczone w dowolnym miejscu. Kamera główna wyświetla zawsze to co będzie widzieć gracz. Kamera główna w Unity jest oznaczona jako Main Camera.

Model projekcji

Model projekcji określa, czy obraz jest dwuwymiarowy czy trójwymiarowy czyli w perspektywie czy w rzucie prostokątnym. Pole widzenia kamer ma kształt piramidy. Domyślnym trybem działania kamery w środowisku Unity jest kamera w trójwymiarze. Gdy tworzymy gry dwuwymiarowe, to włączamy tryb projekcji prostokątnej i możemy na wyświetlaczu półprzezroczystym HUD prezentować, np. mapę czy wskaźnik zdrowia. W silnikach gier, takie efekty jak, np. oświetlenie są stosowane w kamerze aby poprawić symulację wyglądu świata. Można dodawać także, różne efekty kinowe.

W wielu nowoczesnych grach trójwymiarowych możemy zauważyć efekt wykorzystywania wielu innych kamer, których nie wyświetla kamera gracza.

Możliwe jest sterowanie poszczególnymi procesami renderowania pewnych elementów w grze, dzięki przypisaniu obiektów do określonych warstw. Dzięki temu możemy sterować określonym tworzeniem elementów dwu- lub trójwymiarowych.

Wielokąty i krawędzie

Aplikacje modelujące 3D łączą wielokąty w różne kształty, które są łączone w siatkę. Środowisko Unity przekształca wszystkie wielokąty na trójkąty. Trójkąty są zbudowane z kolei z trzech połączonych ze sobą krawędzi. Miejsce w którym łączą się krawędzie nazywamy punktami lub wierzchołkami. Natomiast kolizje, to punkty zderzenia wierzchołków wyznaczane przez silniki gier. Komponent Mesh Collider pozwala w grze, np. FPS strzelance wyznaczyć położenie miejsca na obiekcie, w które uderzy pocisk.

Oprócz tworzenia trójwymiarowych kształtów, które dla gracza są widoczne, istnieją także siatki, które mają wiele innych zadań. Mogą być na przykład używane do zdefiniowania obiektu, który jest wykorzystywany podczas wyznaczania kolizji, który powinien być mniej złożony od właściwego przedmiotu, lecz mieć w przybliżeniu taki sam kształt jak on. Dzięki temu uzyskujemy poprawę wydajności, gdyż silnik fizyczny nie musi sprawdzać złożonej siatki, aby wykryć kolizję.

Gdy tworzymy gry, kluczowe dla projektanta jest zrozumienie ważności parametru liczby wielokątów. Liczba wielokątów jest sumą wielokątów w używanych modelach, ale czasem również w rekwizytach czy też na całym poziomie gry. Im większa jest liczba wielokątów, tym więcej pracy dla sprzętu komputerowego, który musi wygenerować obiekty na ekranie. Można zauważyć dużą różnicę w szczegółowości między dawnymi grami 3D, a obecnymi. Widać różnicę, np. między Quake 1996r., a Gears of War 2006, gdzie w ciągu 10 lat zwiększył się znacznie poziom szczegółów. Obecnie w grach jest większy poziom realizmu, dzięki temu, że projektanci mogą modelować światy trójwymiarowe dla gier, które zawierają więcej wielokątów. Obecnie coraz więcej platform staje się mobilnych i sieciowych, gry mogą dzięki Unity być uruchamiane w przeglądarce internetowej. Smartfony są zdolne do uruchamiania gier trójwymiarowych.

Materiały, tekstury i procedury cieniowania

Materiały to pojęcie używane powszechnie we wszystkich aplikacjach 3D, ponieważ umożliwiają zdefiniowanie wizualnego wyglądu trójwymiarowego modelu. Mogą przyjmować postać od podstawowych kolorów do odbijających powierzchni wykorzystujących obrazy.

Pojedynczy materiał współpracuje z procedurą cieniowania, która jest z kolei skryptem definiującym sposób jego renderowania. W czasie takiej procedury cieniowania, odbijającego na materiale zostaną utworzone odbicia od innych obiektów, ale zachowa on swój kolor lub wygląd obrazu użytego jako tekstura. Używanie materiałów w Unity jest stosunkowo proste. Materiały, które zostały stworzone w pakiecie modelowania trójwymiarowego zostaną automatycznie odtworzone przez silnik, a następnie przekształcone w zasoby, które możesz wykorzystać dowolną ilość razy. Jest także możliwe przypisywanie obrazów do tekstur i wybieranie odpowiedniej procedury cieniowania z biblioteki, którą otrzymujesz razem z programem. Możesz także napisać własny skrypt cieniowania lub skopiować skrypty stworzone przez społeczność Unity.

Bardzo ważne jest zwracanie uwagi na rozdzielczość tekstur tworzonych, np. w Adobe Photoshop. Tekstury o wyższej rozdzielczości będą lepsze, jednak będą trudniejsze do renderowania. Tekstury, które są importowane do Unity zostają przeskalowane do rozdzielczości, która jest potęgą liczby 2. Można także używać tekstur o rozmiarach, które nie są wielokrotnością liczby 2, lecz są wykorzystywane w graficznych elementach interfejsu.

Bryła sztywna

Projektanci gier, tworząc gry używają silników fizycznych, które udostępniają możliwości symulacji zachowania się elementów gry w świecie rzeczywistym. Unity wykorzystuje system PhysX firmy Nvidia, który jest popularnym silnikiem fizycznym. Generalnie w silnikach gier nie ma założenia, że obiekty powinny podlegać prawom fizyki. Jest tak, ponieważ wymagałoby to bardzo dużej mocy obliczeniowej. W grze wyścigowej samochody powinny być przetwarzane przez silnik fizyczny, ale drzewa, ściany już nie. Także komponent fizyki bryły sztywnej, jest przypisany wszystkim obiektom, które są w ruchu. Moc sprzętu cały czas rośnie, więc fizyka bryły sztywnej jest stosowana coraz częściej. Silniki fizyczne dla gier używają systemu dynamiki bryły sztywnej do tworzenia bardziej realistycznego ruchu. Obiekty nie są statyczne, lecz mają także masę, ciężar, prędkość i tarcie.

Wykrywanie kolizji

Wykrywanie kolizji to zagadnienie ważniejsze od animacji trójwymiarowej. Polega ono na wykrywaniu detekcji kolizji między obiektami. Tworząc obiekt 3D i przypisanie mu komponentu zderzacza, tworzymy sieć, która, np. wykrywa kolizje z innymi zderzaczami. Rodzaje zderzaczy, to podstawowe (primitives) i siatkowe (meshes). Kształty podstawowe, to proste geometryczne obiekty, takie jak skrzynki, kule i kapsuły. Są często stosowane, gdyż są łatwe do przetworzenia. Używa się ich także wtedy, gdy nie zachodzi potrzeba uzyskania dużej dokładności działania. Zderzacz siatkowy wykorzystuje kształt obiektu, do którego został przypisany. Im bardziej złożona jest siatka, tym bardziej dokładny i szczegółowy będzie zderzacz, lecz wtedy jest trudniejszy do przetworzenia. Można oczywiście utworzyć mniej złożoną siatkę, która będzie renderowana, aby uzyskać prostszy i bardziej wydajny zderzacz siatkowy. Przykładem może być gra w kręgle. Prosty zderzacz kulisty będzie otaczać kulę, a same kręgle będą wykorzystywać prosty zderzacz kapsułowy lub zderzacz siatkowy. Silnik fizyczny wygeneruje odpowiednią reakcję. Zderzacz siatkowy, bardziej odpowiadałby kształtowi modelu kręgla, lecz wymagałoby to większej mocy obliczeniowej komputera.

Dalsze pojęcia

Dzięki Unity tworzenie gier komputerowych jest prostsze, poprzez udostępnienie szeregu logicznych etapów, które pozwalają na zbudowanie dowolnego scenariusza. System Unity nie jest związany z konkretnym typem gier, więc możesz stworzyć projekt od samego początku i maksymalnie wykorzystać swoją wyobraźnię. Możesz podzielić projekt na łatwo zarządzane elementy, które składają się z komponentów. Komponent składa się ze zmiennych, które opisują jego właściwości lub zawierają ustawienia, dzięki czemu możliwe jest sterowanie. Możesz mieć pełną kontrolę nad komponentem.

Jeśli chciałbyś w grze umieścić odbijającą się piłkę, musisz najpierw utworzyć kulę. Dzięki Unity możesz to zrobić bardzo szybko i utworzyć obiekt gry z siatką kulistą. Będzie on zawierał dodatkowo komponent renderowania, dzięki czemu będzie widoczny. Później trzeba dodać komponent bryły sztywnej i dzięki temu będzie można zobaczyć twój obiekt oraz zostanie zastosowany silnik fizyczny dla niego. By kula odbiła się od podłoża należy dodać w komponencie zderzacza, w zmiennej Physic Material wartość Bouncy. Użycie takich metod w innych bardziej skomplikowanych przypadkach spowoduje, że w tych przypadkach łatwiejsze będzie wykonanie.

Przejdźmy dalej, dalsze pojęcia to zasoby, sceny czy komponenty. W Unity każdy plik używany w grze jest zasobem, pliki projektu są przechowywane w katalogu Assets. W jednej scenie możesz oczywiście umieścić całą grę przez dynamiczne ładowanie treści lub możesz zastosować wiele scen. Jeśli zastosujemy większą ilość scen, to możemy testować oddzielnie każdy element gry. Sceny możesz tworzyć przy użyciu widoków Hierarchy i Scene.

Aktywnym obiektem w scenie jest GameObject, a zasoby w panelu Project, jak modele czy prefabrykaty mogą stać się obiektami gry przez ich dodanie do bieżącej sceny. W widoku Hierarchy możesz klikając na Create umieścić obiekty, takie jak systemy cząstek i kształty podstawowe. Wszystkie nowe obiekty zawierają składnik Transform (transformacja). Przekazuje on silnikowi Unity położenie, obrót i skalę obiektu, a każdy parametr ma współrzędne X, Y i Z. Do obiektów możesz dodać inne komponenty i dodawać wymagane funkcjonalności co będzie tworzyć nowe fragmenty gry. Gdy dołączasz komponent możesz używać określone składniki silnika gier w danym obiekcie. Komponenty, które znajdują się już w systemie Unity, to np. komponent bryły sztywnej, jak i światła czy kamery.

Następnym pojęciem jest skrypt, który jest komponentem środowiska Unity. Skrypty możemy tworzyć w językach C# oraz JavaScript. Istnieje także możliwość używania języka Boo (pochodzącego od języka Python). Zalecany jest jednak bardziej C#. Gdy używamy systemu Unity nie wymaga się tego, w jaki sposób został zakodowany jego własny silnik, jednak skrypty będą używane przez tworzącego grę praktycznie cały czas. Każdy ze skryptów będzie dla Ciebie zapewne zrozumiały po zapoznaniu się z kilkoma przykładami, ponieważ Unity zawiera własną klasę typu Behaviour o nazwie Monobehaviour. Jest to zestaw skryptowych poleceń, które można wykorzystywać. By tworzyć skrypty można używać oddzielnego edytora o nazwie Monodevelop. Jednak można używać także własnego edytora skryptowego, jak Visual Studio.

Tworzenie gier w środowisku Unity pozwala także przechowywać obiekty w postaci zasobów możliwych do ponownego użycia w innych częściach aplikacji. Mogę być one klonowane w dowolnym momencie. Poprzez tworzenie złożonych obiektów można także sprawnie konstruować szablon do wygenerowania jego wielu egzemplarzy, które możemy modyfikować.

Scene i Hierarchy

W panelu Scene możemy oglądać elementy w 3D, lub w rzutach płaskich (z góry, boku i przodu). Gdy obrócimy widok w rzucie płaskim, zostanie wyświetlona scena w postaci izometrycznej. Panel Scene może być uważany za w pełni renderowany widok „edycji” gry, którą tworzymy. Gdy przeciągniemy zasób do tego okna lub widoku Hierarchy, to spowoduje to powstanie jego konkretyzacji w postaci obiektu gry. Widok Scene jest powiązany z panelem Hierarchy. Z oknem Scene są powiązane narzędzia sterujące, takie jak Hand, Translate, Rotate i Scale. Narzędzie Hand umożliwia poruszanie się po oknie Scene. Możemy za jego pomocą zmieniać widok prezentowany w panelu Scene. Gdy przytrzymamy klawisz Alt, wybierzemy Hand i wciśniemy lewy przycisk myszy, to obrócimy widok wokół punktu centralnego, na który patrzymy. Gdy wciśniemy prawy przycisk myszy, będziemy mogli przybliżać i oddalać widok kółkiem myszy. Narzędzie Translate to aktywne narzędzie selekcji, możemy za jego pomocą, np. przemieszczać obiekt. Narzędzie Rotate umożliwia obracanie obiektu wokół własnej osi. Narzędzie Scale jest bardzo podobne do narzędzi Translate i Rotate. Możemy za jego pomocą zmieniać rozmiar lub skalować obiekt.

Jeśli wybierzemy obiekt w panelu Scene lub Hierarchy, w drugim panelu zostanie on automatycznie zaznaczony i dzięki temu możemy przejrzeć właściwości obiektu w oknie Inspector.

By poruszać się po oknie Scene klawiaturą i myszą możemy użyć inspekcji dynamicznej czyli Flythrough wciskając lewy przycisk myszy i poruszając nią lub naciskać klawisze W, A, S i D by przesuwać obiekt.

W oknie Scene mamy także dostępne Tryb rysowania, Tryb renderowania, oświetlenie sceny, nakładki i ich włączanie i wyłączanie, odsłuchiwanie źródeł dźwięku, gadżety, takie jak kamery, źródła świateł i inne komponenty. Widzimy także pole wyszukiwania, które jest powiązane z panelem Hierarchy. W polu wyszukiwania możemy wpisać nazwę obiektu i wyszukać go w Scene. W panelu Hierarchy znajduje się przycisk Create, który pozwala na tworzenie obiektów.

Zdjęcia na stronie i fanpage’u flyingcomp zostały umieszczone legalnie z darmowego banku zdjęć: pixabay.

Tekst „Tworzenie gier Unity” opracowany został przez Adama Stopę w oparciu o źródła:

  1. Premiera Unity Engine 5 – nowy model płatności (pol.).
  2. Wikipedia.pl
  3. „Projektowanie gier w środowisku Unity 3.x” – Will Goldstone.

Image by Nina Stock from Pixabay

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *

error: Content is protected !!

By continuing to use the site, you agree to the use of cookies. more information

The cookie settings on this website are set to "allow cookies" to give you the best browsing experience possible. If you continue to use this website without changing your cookie settings or you click "Accept" below then you are consenting to this.

Close