Zachodniopomorski Uniwersytet Technologiczny w Szczecinie

Wydział Informatyki - Informatyka (S1)

Sylabus przedmiotu Gry komputerowe:

Informacje podstawowe

Kierunek studiów Informatyka
Forma studiów studia stacjonarne Poziom pierwszego stopnia
Tytuł zawodowy absolwenta inżynier
Obszary studiów nauki techniczne, studia inżynierskie
Profil ogólnoakademicki
Moduł
Przedmiot Gry komputerowe
Specjalność przedmiot wspólny
Jednostka prowadząca Katedra Systemów Multimedialnych
Nauczyciel odpowiedzialny Bartosz Bazyluk <azyluk@wi.zut.edu.pl>
Inni nauczyciele
ECTS (planowane) 3,0 ECTS (formy) 3,0
Forma zaliczenia zaliczenie Język polski
Blok obieralny Grupa obieralna

Formy dydaktyczne

Forma dydaktycznaKODSemestrGodzinyECTSWagaZaliczenie
wykładyW4 15 1,00,30zaliczenie
projektyP4 15 2,00,70zaliczenie

Wymagania wstępne

KODWymaganie wstępne
W-1Opanowany zakres wiedzy, umiejętności oraz kompetencji związanych z przedmiotami: Grafika komputerowa i wizualizacja (inf., S1, semestr 3) oraz Programowanie obiektowe (inf., S1, semestr 3).
W-2Umiejętność programowania w języku C/C++, wykorzystania standardowych bibliotek i umiejętność zastosowania w praktyce paradygmatu obiektowego.
W-3Podstawowa wiedza z matematyki stosowanej i fizyki w zakresie obliczeń wektorowo-macierzowych, trygonometrii, optyki, kinematyki.

Cele przedmiotu

KODCel modułu/przedmiotu
C-1Zapoznanie z architekturą gier komputerowych.
C-2Podnoszenie kompetencji w zakresie samodzielnej realizacji projektów informatycznych.
C-3Podnoszenie kompetencji w zakresie umiejętności programowania.
C-4Zapoznanie z problemami z zakresu programowania gier komputerowych.
C-5Zapoznanie z technikami projektowania i programowania aplikacji grafiki komputerowej czasu rzeczywistego.
C-6Zdobycie kompetencji personalnych w zakresie umiejętności czytania dokumentacji technicznej (API OpenGL, biblioteka GLUT), wykorzystywania opisów i wiedzy zbgromadzonej w internecie do programowania własnych aplikacji.
C-7Zdobycie kompetencji społecznych w zakresie współpracy z innymi studentami, wymiany informacji o sposobie rozwiązywania konkretnych problemów implementacyjnych, porównywanie jakości własnych rozwiązań do osiągnięć innych osób.
C-8Zdobycie kompetencji personalnych związanych z prezentacją oraz obroną własnych rozwiązań projektowych i programistycznych.

Treści programowe z podziałem na formy zajęć

KODTreść programowaGodziny
projekty
T-P-1Architektura aplikacji grafiki czasu rzeczywistego.2
T-P-2Implementacja interaktywnej kamery pierwszoosobowej.2
T-P-3Wykorzystanie technik oświetlenia w oparciu o nieprogramowalny potok renderowania. Źródła światła i cechy materiału.2
T-P-4Definicja geometrii złożonej bryły trójwymiarowej.2
T-P-5Teksturowanie powierzchni brył trójwymiarowych.2
T-P-6Implementacja modelu oświetlenia Phonga i cieniowania gładkiego w oparciu o programowalny potok renderowania.3
T-P-7Techniki detekcji i reakcji na kolizje.2
15
wykłady
T-W-1Wstęp do tworzenia gier komputerowych 1. Dziedziny powiązane z tworzeniem gier 2. Architektura systemu grafiki komputerowej czasu rzeczywistego1
T-W-2Synteza trójwymiarowej grafiki komputerowej w czasie rzeczywistym 1. Pojęcie sceny, modelu, syntezy obrazu 2. Przekształcenia geometryczne w przestrzeni trójwymiarowej1
T-W-3Wirtualna kamera jako część sceny 1. Projekcja perspektywiczna, rzutowanie prostokątne 2. Cechy widoku i projekcji wirtualnej kamery 3. Obsługa wejścia od użytkownika w GLUT 4. Interaktywna kamera pierwszoosobowa2
T-W-4Definicja geometrii i rasteryzacja 1. Rasteryzacja z wykorzystaniem prymitywów 2. Sposoby definicji zbioru punktów 3. Optymalizacja renderowania dużych zbiorów wierzchołków1
T-W-5Oświetlenie 1. Oświetlenie a cieniowanie 2. Oświetlenie globalne, oświetlenie lokalne 3. Model oświetlenia Phonga 4. Rachunek wektorowy w modelu Phonga2
T-W-6Teksturowanie 1. Tekstura jako macierz danych 2. Mapowanie tekstur na powierzchnię elementów sceny 3. Metody filtracji tekstur 4. Zastosowania teksturowania2
T-W-7Zarządzanie sceną i przestrzenią 1. Sposoby reprezentacji hierarchii obiektów sceny 2. Metody przestrzennej organizacji sceny 3. Metody optymalizacji renderowania sceny2
T-W-8Interakcja gracza ze światem gry 1. Realizacja akcji inicjowanych przez gracza: użycie przedmiotu, strzelanie, ekwipunek postaci 2. Statyczne i dynamiczne metody detekcji kolizji 3. Reakcja na kolizje 4. Wykrywanie elementów sceny wybranych przez gracza2
T-W-9Programy cieniujące 1. Programowalny potok renderowania w OpenGL 2. Tworzenie programów cieniujących w języku GLSL 3. Vertex shader, fragment shader, geometry shader2
15

Obciążenie pracą studenta - formy aktywności

KODForma aktywnościGodziny
projekty
A-P-1Uczestnictwo w zajęciach15
A-P-2Praca własna związana z implementacją gry komputerowej.44
A-P-3Prezentacja projektu zaliczeniowego1
60
wykłady
A-W-1Uczestnictwo w zajęciach15
A-W-2Studia literaturowe7
A-W-3Przygotowanie do zaliczenia7
A-W-4Udział w teście zaliczeniowym1
30

Metody nauczania / narzędzia dydaktyczne

KODMetoda nauczania / narzędzie dydaktyczne
M-1wykład informacyjny, problemowy i konwersatoryjny
M-2dyskusja dydaktyczna związana z wykładem
M-3prezentacja slajdów i filmów związanych z tematyką gier komputerowych
M-4ćwiczenia z zakresu programowania grafiki czasu rzeczywistego w oparciu o OpenGL i programowania logiki gry komputerowej

Sposoby oceny

KODSposób oceny
S-1Ocena formująca: ocena formująca: kontrola postępów w tworzeniu gry komputerowej
S-2Ocena podsumowująca: ocena podsumowująca: ocena praktycznej pracy studenta w ciągu semestru i obrona zaprezentowanego przez niego projektu zaliczeniowego
S-3Ocena podsumowująca: ocena podsumowująca: test z wiedzy teoretycznej
S-4Ocena formująca: ocena formująca: ocena prezentowanego przez studenta inżynierskiego podejścia do rozwiązywania problemów podczas implementacji gry komputerowej

Zamierzone efekty kształcenia - wiedza

Zamierzone efekty kształceniaOdniesienie do efektów kształcenia dla kierunku studiówOdniesienie do efektów zdefiniowanych dla obszaru kształceniaOdniesienie do efektów kształcenia prowadzących do uzyskania tytułu zawodowego inżynieraCel przedmiotuTreści programoweMetody nauczaniaSposób oceny
I_1A_C/17_W01
zdobycie wiedzy na temat sposobu działania i implementacji gier komputerowych
I_1A_W13, I_1A_W16C-1, C-4, C-5T-W-1, T-W-2, T-W-3, T-W-4, T-W-5, T-W-6, T-W-9, T-W-7, T-W-8M-3, M-1, M-2S-3

Zamierzone efekty kształcenia - umiejętności

Zamierzone efekty kształceniaOdniesienie do efektów kształcenia dla kierunku studiówOdniesienie do efektów zdefiniowanych dla obszaru kształceniaOdniesienie do efektów kształcenia prowadzących do uzyskania tytułu zawodowego inżynieraCel przedmiotuTreści programoweMetody nauczaniaSposób oceny
I_1A_C/17_U01
Umiejętność praktycznego rozwiązywania problemów technicznych metodami programistycznymi na przykładzie implementacji technik grafiki czasu rzeczywistego na potrzeby stworzenia gry komputerowej.
I_1A_U01, I_1A_U15, I_1A_U19, I_1A_U05C-1, C-4, C-5T-P-1, T-P-2, T-P-3, T-P-4, T-P-5, T-P-6, T-P-7M-4S-1, S-2, S-4

Zamierzone efekty kształcenia - inne kompetencje społeczne i personalne

Zamierzone efekty kształceniaOdniesienie do efektów kształcenia dla kierunku studiówOdniesienie do efektów zdefiniowanych dla obszaru kształceniaOdniesienie do efektów kształcenia prowadzących do uzyskania tytułu zawodowego inżynieraCel przedmiotuTreści programoweMetody nauczaniaSposób oceny
I_1A_C/17_K01
Kompetencje personalne w zakresie umiejętności odszukania wiedzy i wykorzystania jej w praktyce w implementacji gry komputerowej, kompetencje personalne w zakresie prezentacji i obrony proponowanych rozwiązań technicznych, kompretencje społeczne w zakresie konsultowania się w związku z rozwiązywaniem określonych problemów.
I_1A_K07, I_1A_K01C-2, C-5, C-6, C-7, C-8T-P-1, T-P-2, T-P-3, T-P-4, T-P-5, T-P-6, T-P-7M-2, M-4S-2

Kryterium oceny - wiedza

Efekt kształceniaOcenaKryterium oceny
I_1A_C/17_W01
zdobycie wiedzy na temat sposobu działania i implementacji gier komputerowych
2,0Niedostateczne opanowanie wiedzy prezentowanej na wykładzie.
3,0Opanowanie wiedzy prezentowanej na wykładzie w stopniu dostatecznym.
3,5Ponad dostateczne opanowanie wiedzy prezentowanej na wykładzie.
4,0Dobre opanowanie wiedzy prezentowanej na wykładzie.
4,5Bardzo dobre opanowanie wiedzy prezentowanej na wykładzie.
5,0Wyróżniające opanowanie wiedzy prezentowanej na wykładzie.

Kryterium oceny - umiejętności

Efekt kształceniaOcenaKryterium oceny
I_1A_C/17_U01
Umiejętność praktycznego rozwiązywania problemów technicznych metodami programistycznymi na przykładzie implementacji technik grafiki czasu rzeczywistego na potrzeby stworzenia gry komputerowej.
2,0
3,0Ukończenie implementacji własnej gry komputerowej obejmujące jej podstawową funkcjonalność.
3,5
4,0
4,5
5,0

Kryterium oceny - inne kompetencje społeczne i personalne

Efekt kształceniaOcenaKryterium oceny
I_1A_C/17_K01
Kompetencje personalne w zakresie umiejętności odszukania wiedzy i wykorzystania jej w praktyce w implementacji gry komputerowej, kompetencje personalne w zakresie prezentacji i obrony proponowanych rozwiązań technicznych, kompretencje społeczne w zakresie konsultowania się w związku z rozwiązywaniem określonych problemów.
2,0
3,0Ukończenie implementacji własnej gry komputerowej obejmujące jej podstawową funkcjonalność.
3,5
4,0
4,5
5,0

Literatura podstawowa

  1. M. McShaffry, D. Graham, Game Coding Complete, Cengage Learning PTR, Stany Zjednoczone, 2012, 4
  2. Tomas Akenine-Moller, Eric Haines, Naty Hoffman, Real-Time Rendering, AK Peters, 2008, 3
  3. Dave Shreiner, Mason Woo, Jackie Neider, Tom Davis, OpenGL Programming Guide (Sixth Edition) - The Official Guide to Learning OpenGL, Version 2.1, Addison-Wesley Professional, 2007, 6

Literatura dodatkowa

  1. J.D. Foley, A. van Dam, S.K. FEiner, J.F. Highes, R.L. Phillips, Wprowadzenie do grafiki komputerowej, WNT, Warszawa, 1995, 1
  2. Jan Zabrodzki (pz), Grafika komputerowa metody i narzędzia, WNT, Warszawa, 1994, 1

Treści programowe - projekty

KODTreść programowaGodziny
T-P-1Architektura aplikacji grafiki czasu rzeczywistego.2
T-P-2Implementacja interaktywnej kamery pierwszoosobowej.2
T-P-3Wykorzystanie technik oświetlenia w oparciu o nieprogramowalny potok renderowania. Źródła światła i cechy materiału.2
T-P-4Definicja geometrii złożonej bryły trójwymiarowej.2
T-P-5Teksturowanie powierzchni brył trójwymiarowych.2
T-P-6Implementacja modelu oświetlenia Phonga i cieniowania gładkiego w oparciu o programowalny potok renderowania.3
T-P-7Techniki detekcji i reakcji na kolizje.2
15

Treści programowe - wykłady

KODTreść programowaGodziny
T-W-1Wstęp do tworzenia gier komputerowych 1. Dziedziny powiązane z tworzeniem gier 2. Architektura systemu grafiki komputerowej czasu rzeczywistego1
T-W-2Synteza trójwymiarowej grafiki komputerowej w czasie rzeczywistym 1. Pojęcie sceny, modelu, syntezy obrazu 2. Przekształcenia geometryczne w przestrzeni trójwymiarowej1
T-W-3Wirtualna kamera jako część sceny 1. Projekcja perspektywiczna, rzutowanie prostokątne 2. Cechy widoku i projekcji wirtualnej kamery 3. Obsługa wejścia od użytkownika w GLUT 4. Interaktywna kamera pierwszoosobowa2
T-W-4Definicja geometrii i rasteryzacja 1. Rasteryzacja z wykorzystaniem prymitywów 2. Sposoby definicji zbioru punktów 3. Optymalizacja renderowania dużych zbiorów wierzchołków1
T-W-5Oświetlenie 1. Oświetlenie a cieniowanie 2. Oświetlenie globalne, oświetlenie lokalne 3. Model oświetlenia Phonga 4. Rachunek wektorowy w modelu Phonga2
T-W-6Teksturowanie 1. Tekstura jako macierz danych 2. Mapowanie tekstur na powierzchnię elementów sceny 3. Metody filtracji tekstur 4. Zastosowania teksturowania2
T-W-7Zarządzanie sceną i przestrzenią 1. Sposoby reprezentacji hierarchii obiektów sceny 2. Metody przestrzennej organizacji sceny 3. Metody optymalizacji renderowania sceny2
T-W-8Interakcja gracza ze światem gry 1. Realizacja akcji inicjowanych przez gracza: użycie przedmiotu, strzelanie, ekwipunek postaci 2. Statyczne i dynamiczne metody detekcji kolizji 3. Reakcja na kolizje 4. Wykrywanie elementów sceny wybranych przez gracza2
T-W-9Programy cieniujące 1. Programowalny potok renderowania w OpenGL 2. Tworzenie programów cieniujących w języku GLSL 3. Vertex shader, fragment shader, geometry shader2
15

Formy aktywności - projekty

KODForma aktywnościGodziny
A-P-1Uczestnictwo w zajęciach15
A-P-2Praca własna związana z implementacją gry komputerowej.44
A-P-3Prezentacja projektu zaliczeniowego1
60
(*) 1 punkt ECTS, odpowiada około 30 godzinom aktywności studenta

Formy aktywności - wykłady

KODForma aktywnościGodziny
A-W-1Uczestnictwo w zajęciach15
A-W-2Studia literaturowe7
A-W-3Przygotowanie do zaliczenia7
A-W-4Udział w teście zaliczeniowym1
30
(*) 1 punkt ECTS, odpowiada około 30 godzinom aktywności studenta
PoleKODZnaczenie kodu
Zamierzone efekty kształceniaI_1A_C/17_W01zdobycie wiedzy na temat sposobu działania i implementacji gier komputerowych
Odniesienie do efektów kształcenia dla kierunku studiówI_1A_W13zna podstawy grafiki komputerowej i technik wizualizacji
I_1A_W16ma wiedzę dotyczącą możliwości zastosowania informatyki w różnych dziedzinach aktywności ludzkiej (np. w przemyśle, zarządzaniu i medycynie)
Cel przedmiotuC-1Zapoznanie z architekturą gier komputerowych.
C-4Zapoznanie z problemami z zakresu programowania gier komputerowych.
C-5Zapoznanie z technikami projektowania i programowania aplikacji grafiki komputerowej czasu rzeczywistego.
Treści programoweT-W-1Wstęp do tworzenia gier komputerowych 1. Dziedziny powiązane z tworzeniem gier 2. Architektura systemu grafiki komputerowej czasu rzeczywistego
T-W-2Synteza trójwymiarowej grafiki komputerowej w czasie rzeczywistym 1. Pojęcie sceny, modelu, syntezy obrazu 2. Przekształcenia geometryczne w przestrzeni trójwymiarowej
T-W-3Wirtualna kamera jako część sceny 1. Projekcja perspektywiczna, rzutowanie prostokątne 2. Cechy widoku i projekcji wirtualnej kamery 3. Obsługa wejścia od użytkownika w GLUT 4. Interaktywna kamera pierwszoosobowa
T-W-4Definicja geometrii i rasteryzacja 1. Rasteryzacja z wykorzystaniem prymitywów 2. Sposoby definicji zbioru punktów 3. Optymalizacja renderowania dużych zbiorów wierzchołków
T-W-5Oświetlenie 1. Oświetlenie a cieniowanie 2. Oświetlenie globalne, oświetlenie lokalne 3. Model oświetlenia Phonga 4. Rachunek wektorowy w modelu Phonga
T-W-6Teksturowanie 1. Tekstura jako macierz danych 2. Mapowanie tekstur na powierzchnię elementów sceny 3. Metody filtracji tekstur 4. Zastosowania teksturowania
T-W-9Programy cieniujące 1. Programowalny potok renderowania w OpenGL 2. Tworzenie programów cieniujących w języku GLSL 3. Vertex shader, fragment shader, geometry shader
T-W-7Zarządzanie sceną i przestrzenią 1. Sposoby reprezentacji hierarchii obiektów sceny 2. Metody przestrzennej organizacji sceny 3. Metody optymalizacji renderowania sceny
T-W-8Interakcja gracza ze światem gry 1. Realizacja akcji inicjowanych przez gracza: użycie przedmiotu, strzelanie, ekwipunek postaci 2. Statyczne i dynamiczne metody detekcji kolizji 3. Reakcja na kolizje 4. Wykrywanie elementów sceny wybranych przez gracza
Metody nauczaniaM-3prezentacja slajdów i filmów związanych z tematyką gier komputerowych
M-1wykład informacyjny, problemowy i konwersatoryjny
M-2dyskusja dydaktyczna związana z wykładem
Sposób ocenyS-3Ocena podsumowująca: ocena podsumowująca: test z wiedzy teoretycznej
Kryteria ocenyOcenaKryterium oceny
2,0Niedostateczne opanowanie wiedzy prezentowanej na wykładzie.
3,0Opanowanie wiedzy prezentowanej na wykładzie w stopniu dostatecznym.
3,5Ponad dostateczne opanowanie wiedzy prezentowanej na wykładzie.
4,0Dobre opanowanie wiedzy prezentowanej na wykładzie.
4,5Bardzo dobre opanowanie wiedzy prezentowanej na wykładzie.
5,0Wyróżniające opanowanie wiedzy prezentowanej na wykładzie.
PoleKODZnaczenie kodu
Zamierzone efekty kształceniaI_1A_C/17_U01Umiejętność praktycznego rozwiązywania problemów technicznych metodami programistycznymi na przykładzie implementacji technik grafiki czasu rzeczywistego na potrzeby stworzenia gry komputerowej.
Odniesienie do efektów kształcenia dla kierunku studiówI_1A_U01potrafi w zakresie podstawowym projektować, implementować i testować oprogramowanie
I_1A_U15potrafi wykorzystywać poznane metody, modele matematyczne oraz symulacje komputerowe do rozwiązywania prostych problemów inżynierskich
I_1A_U19ma umiejętność wyboru algorytmu i struktur danych do rozwiązania określonego zadania inżynierskiego
I_1A_U05potrafi tworzyć i posługiwać się dokumentacją techniczną
Cel przedmiotuC-1Zapoznanie z architekturą gier komputerowych.
C-4Zapoznanie z problemami z zakresu programowania gier komputerowych.
C-5Zapoznanie z technikami projektowania i programowania aplikacji grafiki komputerowej czasu rzeczywistego.
Treści programoweT-P-1Architektura aplikacji grafiki czasu rzeczywistego.
T-P-2Implementacja interaktywnej kamery pierwszoosobowej.
T-P-3Wykorzystanie technik oświetlenia w oparciu o nieprogramowalny potok renderowania. Źródła światła i cechy materiału.
T-P-4Definicja geometrii złożonej bryły trójwymiarowej.
T-P-5Teksturowanie powierzchni brył trójwymiarowych.
T-P-6Implementacja modelu oświetlenia Phonga i cieniowania gładkiego w oparciu o programowalny potok renderowania.
T-P-7Techniki detekcji i reakcji na kolizje.
Metody nauczaniaM-4ćwiczenia z zakresu programowania grafiki czasu rzeczywistego w oparciu o OpenGL i programowania logiki gry komputerowej
Sposób ocenyS-1Ocena formująca: ocena formująca: kontrola postępów w tworzeniu gry komputerowej
S-2Ocena podsumowująca: ocena podsumowująca: ocena praktycznej pracy studenta w ciągu semestru i obrona zaprezentowanego przez niego projektu zaliczeniowego
S-4Ocena formująca: ocena formująca: ocena prezentowanego przez studenta inżynierskiego podejścia do rozwiązywania problemów podczas implementacji gry komputerowej
Kryteria ocenyOcenaKryterium oceny
2,0
3,0Ukończenie implementacji własnej gry komputerowej obejmujące jej podstawową funkcjonalność.
3,5
4,0
4,5
5,0
PoleKODZnaczenie kodu
Zamierzone efekty kształceniaI_1A_C/17_K01Kompetencje personalne w zakresie umiejętności odszukania wiedzy i wykorzystania jej w praktyce w implementacji gry komputerowej, kompetencje personalne w zakresie prezentacji i obrony proponowanych rozwiązań technicznych, kompretencje społeczne w zakresie konsultowania się w związku z rozwiązywaniem określonych problemów.
Odniesienie do efektów kształcenia dla kierunku studiówI_1A_K07rozumie społeczny i zawodowy kontekst informatyki oraz związanych z nim aspektów prawnych i etycznych
I_1A_K01świadomie rozumie potrzeby dokształcania i dzielenia się wiedzą
Cel przedmiotuC-2Podnoszenie kompetencji w zakresie samodzielnej realizacji projektów informatycznych.
C-5Zapoznanie z technikami projektowania i programowania aplikacji grafiki komputerowej czasu rzeczywistego.
C-6Zdobycie kompetencji personalnych w zakresie umiejętności czytania dokumentacji technicznej (API OpenGL, biblioteka GLUT), wykorzystywania opisów i wiedzy zbgromadzonej w internecie do programowania własnych aplikacji.
C-7Zdobycie kompetencji społecznych w zakresie współpracy z innymi studentami, wymiany informacji o sposobie rozwiązywania konkretnych problemów implementacyjnych, porównywanie jakości własnych rozwiązań do osiągnięć innych osób.
C-8Zdobycie kompetencji personalnych związanych z prezentacją oraz obroną własnych rozwiązań projektowych i programistycznych.
Treści programoweT-P-1Architektura aplikacji grafiki czasu rzeczywistego.
T-P-2Implementacja interaktywnej kamery pierwszoosobowej.
T-P-3Wykorzystanie technik oświetlenia w oparciu o nieprogramowalny potok renderowania. Źródła światła i cechy materiału.
T-P-4Definicja geometrii złożonej bryły trójwymiarowej.
T-P-5Teksturowanie powierzchni brył trójwymiarowych.
T-P-6Implementacja modelu oświetlenia Phonga i cieniowania gładkiego w oparciu o programowalny potok renderowania.
T-P-7Techniki detekcji i reakcji na kolizje.
Metody nauczaniaM-2dyskusja dydaktyczna związana z wykładem
M-4ćwiczenia z zakresu programowania grafiki czasu rzeczywistego w oparciu o OpenGL i programowania logiki gry komputerowej
Sposób ocenyS-2Ocena podsumowująca: ocena podsumowująca: ocena praktycznej pracy studenta w ciągu semestru i obrona zaprezentowanego przez niego projektu zaliczeniowego
Kryteria ocenyOcenaKryterium oceny
2,0
3,0Ukończenie implementacji własnej gry komputerowej obejmujące jej podstawową funkcjonalność.
3,5
4,0
4,5
5,0