Gry Komputerowe Laboratorium 1. Zajęcia organizacyjne Animacja z uwzględnieniem czasu. mgr inż. Michał Chwesiuk 1/22. Szczecin,

Podobne dokumenty
Wprowadzenie do QT OpenGL

Gry Komputerowe - laboratorium 0

PRZYJĘTE ZASADY GRY...3 ZAŁOŻENIA PROJEKTU...4 CZYM JEST I DLACZEGO QT?...5 DIAGRAM KLAS...7 DIAGRAM GRY SINGLE PLAYER...8 DIAGRAM MULTIPLAYERA...

KARTA PRZEDMIOTU. Programowanie wieloplatformowe, D1_1

Gry Komputerowe Laboratorium 4. Teksturowanie Kolizje obiektów z otoczeniem. mgr inż. Michał Chwesiuk 1/29. Szczecin, r

Zaawansowana Grafika Komputerowa

Gry Komputerowe - laboratorium 2. Kamera FPP / TPP. mgr inż. Michał Chwesiuk 1/11. Szczecin, r

PRZEWODNIK PO PRZEDMIOCIE

D O K U M E N T A C J A

GRAFIKA CZASU RZECZYWISTEGO Wstęp do programowania grafiki czasu rzeczywistego.

Grafika komputerowa i wizualizacja

Gry Komputerowe Laboratorium 3. Organizacja obiektów sceny Kolizje obiektów. mgr inż. Michał Chwesiuk 1/20. Szczecin, r

GLKit. Wykład 10. Programowanie aplikacji mobilnych na urządzenia Apple (IOS i ObjectiveC) #import "Fraction.h" #import <stdio.h>

Architektury Usług Internetowych. Laboratorium 2. Usługi sieciowe

INŻYNIERIA OPROGRAMOWANIA

Instrukcja instalacji PS Bonus Pack do IBM SPSS Statistics 20 w systemie operacyjnym Windows

Politechnika Poznańska, Instytut Informatyki, TWO/GE. Programowanie dla ios

Informatyka I stopień (I stopień / II stopień) Ogólnoakademicki (ogólno akademicki / praktyczny)

GRY KOMPUTEROWE 3D OpenGL DirectX Ogre3D Crystal Space ClanLib Irrlicht SDL Ardor3D jmonkey Engine GRY KOMPUTEROWE 2D ORX Troll2D

Laboratorium 1 Temat: Przygotowanie środowiska programistycznego. Poznanie edytora. Kompilacja i uruchomienie prostych programów przykładowych.

Informatyka I stopień (I stopień / II stopień) ogólnoakademicki (ogólno akademicki / praktyczny)

Android - wprowadzenie. Łukasz Przywarty

Informatyka I stopień (I stopień / II stopień) Ogólnoakademicki (ogólno akademicki / praktyczny)

Cechy systemu X Window: otwartość niezależność od producentów i od sprzętu, dostępny kod źródłowy; architektura klient-serwer;

Informatyka I stopień (I stopień / II stopień) Ogólnoakademicki (ogólno akademicki / praktyczny) kierunkowy (podstawowy / kierunkowy / inny HES)

Systemy Geoinformatyczne

Instalacja i opis podstawowych funkcji programu Dev-C++

Dotacje na innowacje. Inwestujemy w waszą przyszłość.

Programowanie Systemów Czasu Rzeczywistego

Referat Pracy Dyplomowej

Instrukcja procesu aktywacji oraz obsługi systemu Banku Internetowego dla BS Mikołajki

Inżynieria systemów mobilnych

MonoGame. Wieloplatformowe gry w C# Mateusz Cicheński

System zarządzający grami programistycznymi Meridius

Generated by Foxit PDF Creator Foxit Software For evaluation only. System Szablonów

Konspekt pracy inżynierskiej

PROJEKT WSPÓŁFINANSOWANY ZE ŚRODKÓW UNII EUROPEJSKIEJ W RAMACH EUROPEJSKIEGO FUNDUSZU SPOŁECZNEGO OPIS PRZEDMIOTU. studia pierwszego stopnia

Zaawansowane programowanie w języku C++

Projektowanie gier komputerowych. dr inż. Mariusz Szwoch

Systemy graficzne. dr inż. Mariusz Szwoch

Krótka Historia. Co to jest NetBeans? Historia. NetBeans Platform NetBeans IDE NetBeans Mobility Pack Zintegrowane moduły. Paczki do NetBeans.

OpenAI Gym. Adam Szczepaniak, Kamil Walkowiak

Unity 3D - pierwsze skrypty

KURSY PROGRAMOWANIA DLA DZIECI

Tematy dyplomów inżynierskich 2009 Katedra Inżynierii Oprogramowania

Systemy Robotów Autonomicznych

Specyfikacja dla Zadania 1: Kurs programowania sterowników PLC dla uczniów grupy I w ZSP nr 2 w Brzesku.

Tworzenie natywnych aplikacji na urządzenia mobilne - PhoneGap Tomasz Margalski

Wprowadzenie do środowiska Qt Creator

Rys. 1. Główne okno programu QT Creator. Na rysunku 2 oznaczone zostały cztery przyciski, odpowiadają kolejno następującym funkcjom:

Katedra Inżynierii Oprogramowania Tematy prac dyplomowych inżynierskich STUDIA NIESTACJONARNE (ZAOCZNE)

Laborki GUI. dr Przemysław Juszczuk. Katedra Inżynierii Wiedzy

System wspomagania harmonogramowania przedsięwzięć budowlanych

Gry społecznościowe. wykład 0. Joanna Kołodziejczyk. 24 lutego Joanna Kołodziejczyk Gry społecznościowe 24 lutego / 11

Podstawy Informatyki Wprowadzenie do języka C dr inż. Jarosław Bułat

KORZYSTANIE Z BAZY DANYCH UpToDate

PRZEWODNIK PO PRZEDMIOCIE

APLIKACJE KLIENT-SERWER Client-Server Applications Forma studiów: Stacjonarne Poziom kwalifikacji: I stopnia. Liczba godzin/tydzień: 2W, 2L

MentorGraphics ModelSim

Język Java i technologie Web - opis przedmiotu

HermesEX. Dokumentacja serwisowa v

PRZEWODNIK PO PRZEDMIOCIE

Rok akademicki: 2014/2015 Kod: MIO s Punkty ECTS: 4. Poziom studiów: Studia I stopnia Forma i tryb studiów: -

Podstawy programowania. Wprowadzenie

edycja 1 opracowany zgodnie z Zarządzeniami Wewnętrznymi PWr. nr 14/2012 i 15/2012 i 34/2012

Aktualizowanie systemów operacyjnych

SPECYFIKACJA TECHNICZNA OPROGRAMOWANIA

Zagadnienia egzaminacyjne AUTOMATYKA I ROBOTYKA. Stacjonarne I-go stopnia TYP STUDIÓW STOPIEŃ STUDIÓW SPECJALNOŚĆ

edycja 3 opracowany zgodnie z Zarządzeniami Wewnętrznymi PWr. nr 14/2012 i 15/2012 i 34/2012

Laboratorium grafiki i multimediów

RAPORT KOŃCOWY PROJEKTU

USB 2.0 DVD MAKER INSTRUKCJA OBSŁUGI. Nr produktu Strona 1 z 6

StacjaSQL.2012 / PIERWSZE URUCHOMIENIE I PODSTAWOWE USTAWIENIA / / USUNIĘCIE "BAZY TESTOWEJ, PRZEJŚCIE NA WERSJĘ KOMERCYJNĄ / oraz. str.

Informatyka I. Standard JDBC Programowanie aplikacji bazodanowych w języku Java

Wprowadzenie do biblioteki klas C++

Egzamin / zaliczenie na ocenę*

Załącznik KARTA PRZEDMIOTU. KARTA PRZEDMIOTU Wydział Automatyki, Elektroniki i Informatyki, Rok akademicki: 2009/2010

IBM SPSS Statistics - Essentials for Python: Instrukcje instalacji dla Windows

Specyfikacja dla Zadania 1: Kurs programowania sterowników PLC dla uczniów grupy I w ZSP nr 2 w Brzesku.

PRZEWODNIK PO PRZEDMIOCIE

Programowanie w C. dr inż. Stanisław Wszelak

GRAFIKA CZASU RZECZYWISTEGO Wprowadzenie do OpenGL

Elektrotechnika I stopień (I stopień / II stopień) ogólnoakademicki (ogólno akademicki / praktyczny) niestacjonarne (stacjonarne / niestacjonarne)

SPOSOBY POMIARU KĄTÓW W PROGRAMIE AutoCAD

PLAN WYNIKOWY PROGRAMOWANIE APLIKACJI INTERNETOWYCH. KL III TI 4 godziny tygodniowo (4x30 tygodni =120 godzin ),

ZESTAW LABORATORYJNY I ZESTAW FARMACEUTYCZNY : Instrukcja instalacji

Aplikacja serwerowa Platformy Prezentacyjnej Opis produktu

profili Twój aktualny profil i kliknij na przycisk Kopiuj, po czym wpisz nazwę dla nowego profilu (będzie ona widoczna przy uruchamianiu systemu).

KARTA PRZEDMIOTU. Aplikacje mobilne i wbudowane, D1.8

Dodatkowo planowane jest przeprowadzenie oceny algorytmów w praktycznym wykorzystaniu przez kilku niezależnych użytkowników ukończonej aplikacji.

Podstawy programowania w Qt4

Projektowanie, tworzenie aplikacji mobilnych na platformie Android

Implementacja aplikacji sieciowych z wykorzystaniem środowiska Qt

Wykład 1 Wprowadzenie

PRZEWODNIK PO PRZEDMIOCIE

Projekt inżynierski uwagi

Skrypty piszemy dla duszków, czyli obiektów, które chcemy oprogramować i dla sceny tła, na którym wykonuje się program.

Typy przetwarzania. Przetwarzanie zcentralizowane. Przetwarzanie rozproszone

R o g e r A c c e s s C o n t r o l S y s t e m 5

Efektywne tworzenie aplikacji webowych z wykorzystaniem AngularJS, HTML5 i JavaScript

Transkrypt:

Gry Komputerowe Laboratorium 1 Zajęcia organizacyjne mgr inż. Michał Chwesiuk 1/22

projektowych Zajęcia projektowe składają się zajęć (plus jedno zajęcie godzinne). Zajęcia polegają na programowania grafiki Celem zajęć komputerowej Na każdych zajęciach będzie do wykonania zadanie, ma pomóc w implementacji gry. Łącznie będzie omówione 6 tematów. Wymagana frekwencja na przyzwoitym poziomie. Warunkiem koniecznym do otrzymania oceny pozytywnej z projektu jest oddanie gry! z 15 godzin, co daje nauce podstawowych czasu rzeczywistego w jest korzystając implementacja własnej z poznanych nam 7 technik OpenGL. gry technik. które 2/22

projektowych Warunkiem koniecznym do otrzymania oceny pozytywnej z projektu jest oddanie gry! Pod koniec semestru należy oddać paczkę zawierającą kody źródłowe (bez zbędnych plików), oraz skompilowaną wersję aplikacji. Gra musi wykorzystywać OpenGL, oraz być napisana w C++ w środowisku Qt Creator Korzystanie z frameworków, bibliotek wpływających na strukturę projektu oraz wszelkich gotowych silników jest zakazane. Silnik należy zaimplementować własnoręcznie. Korzystanie z bibliotek do obsługi dźwięku oraz silników fizycznych z kolei będzie mile widziane. 3/22

projektowych Gra musi zawierać scenę 3D, teksturowanie, oświetlenie, interakcje z graczem, animacje/ruch obiektów na scenie i wykrywanie kolizji. Koniecznym jest aby gra była grywalna, to znaczy żeby zasady rozgrywki były jasno określone i występowały możliwości wygranej i przegranej (w uzasadnionych przypadkach nie jest to konieczne). Gra musi być wynikiem pracy indywidualnej! Koncepcja gry musi być przedstawiona najpóźniej na trzecich laboratoriach. Bardzo mile widziana jest kreatywność! Labirynty i kolejne klony gier, tj. mario, space invaders pojawiają się w ilościach hurtowych co roku. Każde urozmaicenie rozgrywki skutkuje większą zabawą podczas pracy oraz lepszą oceną. 4/22

projektowych Gry są oceniane w trzygwiazdkowej skali w czterech kategoriach: Efekty - użyte techniki grafiki czasu rzeczywistego (np. shadery, efekty cząsteczkowe, odbicia, VBO,...) Wygląd - użycie własnych elementów, dopracowanie wizualne, spójność, czasochłonność prac nad wyglądem Grywalność - logika rozgrywki, dopracowanie zasad, czy graczowi chce się grać Kod - jakość kodu, architektura aplikacji, obiektowość Punkty za uzyskane gwiazdki w kategoriach: Punkty za jedną gwiazdkę - 0.50 pkt Punkty za dwie gwiazdki - 1.00 pkt Punkty za trzy gwiazdki - 1.50 pkt Zdobyte punkty są równoznaczne ocenie. Zaliczenie zajęć projektowych wymaga zdobycia minimum trzech punktów. 5/22

Przykład gier 6/22

Konspekty Gier Każdy powinien przygotować pomysł na grę maksymalnie do trzecich zajęć projektowych. Pomysł może być przedstawiony w ramach konspektu, przedstawienia wizji na forum grupy, lub w rozmowie prywatnej z prowadzącym zajęcia. 7/22

Tematy zajęć laboratoryjnych 1. rzeczywistego 2. Kamera FPP/TPP 3. Organizacja sceny, kolizje 4. Oświetlenie 5. Teksturowanie 8/22

i przygotowanie projektu 9/22

OpenGL - Open Graphics Library Open Graphics Library API pozwalające na wykorzystanie akceleracji sprzętowej do renderowania grafiki czasu rzeczywistego. OpenGL nie jest biblioteką! Jest to zbiór funkcji i numerycznych stałych, które są interpretowane przez system operacyjny i/lub sterownik karty graficznej. Działanie OpenGL można rozumieć jako maszynę stanu, raz ustawiona wartość parametru systemu pozostaje taka sama do momentu jej zmiany. Główną Konkurencja: Nie obejmuje obsługi wejścia i integracji z systemem operacyjnym w celu utworzenia kontekstu. zaletą Microsoft jest DirectX i wieloplatformowość. Khronos Group Vulcan. 10/22

Środowisko QT Qt - zestaw przenośnych bibliotek i narzędzi programistycznych dedykowanych dla języków C++, QML i Java. Środowisko Qt jest dostępne dla platform: X11 (m.in. GNU/Linux, BSD, Solaris), Windows, Mac OS X, Haiku oraz dla urządzeń wbudowanych opartych na Linuksie (Qt Extended), Windows CE, Symbian, Android. Biblioteki Qt zawierają niezależne od platformy systemowej moduły obsługi procesów, plików, sieci, grafiki trójwymiarowej (OpenGL), baz danych (SQL), języka XML, lokalizacji, wielowątkowości, zaawansowanej obsługi napisów oraz wtyczek. https://www.qt.io 11/22

Qt - instalacja https://www.qt.io 12/22

Widok okna QT Creator Wczytanie projektu Tworzenie nowego projektu Otwieranie istniejącego projektu 13/22

Widok okna QT Creator Wczytanie projektu Tworzenie nowego projektu Otwieranie istniejącego projektu Otwórz projekt -> wybieramy z wypakowanego projektu plik qlglgame.pro 14/22

Widok okna QT Creator Wczytanie projektu Następnie należy zaznaczyć odpowiedni Desktop GT Wersja MinGW 32/64 bit. Potwierdzić wybór przyciskiem Skonfiguruj projekt. zestaw narzędzi 15/22

Widok okna QT Creator Widok projektu Uruchom projekt Uruchom projekt z opcją debugowania Zbuduj projekt 16/22

Widok okna QT Creator Struktura projektu 17/22

Przed skompilowaniem qtglgame 18/22

19/22

Ruch ręki robota float robotarmangle = 0; W klasie GLWidget stwóz zmienną typu float robotarmangle. W funkcji GLWidget::paintGL() zamień kąt obrotu lewej ręki robota ze stałego na zależny od stworzonej zmiennej. m_world.rotate(-15.0f, 0, 0, 1); // stary m_world.rotate(30*sin(robotarmangle), 0, 0, 1); Na końcu funkcji GLWidget::paintGL() robotarmangle (obok timer++) inkrementuj zmienną robotarmangle++; W wyniku robot powinien dynamicznie ruszać ręką. W załączonym przykładzie ruch ręki nie jest zależny od czasu, nie jesteśmy w stanie ustalić szybkości kątowej ruchu. Wynika to z faktu że rysowanie i update świata jest wykonywany jednocześnie. Jest to błędne podejście. 20/22

Funkcja aktualizacji świata - Update() void updategl(); W klasie GLWidget stwórz metodę void updategl() Zzmień w klasie GLWidget int m_timer na QElapsedTimer timer, oraz stwórz zmienną float lastupdatetime (wymagany #include <QElapsedTimer>), także zmienną float FPS. QElapsedTimer timer; float lastupdatetime; float FPS; Na końcu funkcji GLWidget::initializeGL() zamień timer = 0. lastupdatetime = 0; timer.start(); FPS = 60; W pliku glwidget.cpp stwórz funkcję ciało funkcji GLWidget::updateGL() i w środku inkrementuj robotarmangle. void GLWidget::updateGL() { robotarmangle = robotarmangle + 1; } void 21/22

Funkcja aktualizacji świata - Update() W metodzie GLWidget::paintGL() zastąp dwie linijki m_timer++; robotarmangle++; poniższym kodem : float timertime = timer.elapsed() * 0.001f; float deltatime = timertime - lastupdatetime; if(deltatime >= (1.0f / FPS) { updategl(); lastupdatetime = timertime; } Dzięki zastosowanym zmianom, funkcja Update() będzie uruchamiana 60 razy na sekundę, co daje nam większą kontrolę nad aktualizacją świata. 22/22