Katedra Inżynierii Wiedzy, Uniwersytet Ekonomiczny w Katowicach Wykład 1
e-mail: przemyslaw.juszczuk@ue.katowice.pl pjuszczuk.pl
Warunki zaliczenia Test z części teoretycznej (materiały z wykładów); Projekt realizowany podczas ćwiczeń (możliwa praca w grupie 2-osobowej); Szczegóły projektu podane będą z wyprzedzeniem wraz z dokładnym opisem wymagań. Termin zdania projektu ustalany będzie na zajęciach. Materiały z wykładów oraz ćwiczeń wraz z opisem projektów dostępne będą online.
Zakres przedmiotu Wprowadzenie - gry i narzędzia Interfejsy użytkownika Użytkownik a interfejs Diagramy UML i diagramy Windows Navigation Diagram Prototypowanie Tyfloinformatyka Unity Android Studio
Gry i narzędzia Narzędzia narzędzia graficzne - przygotowanie elementów graficznych (np. tekstury), np. GIMP do obróbki grafiki rastrowej (Adobe Photoshop), InkScape do obróbki grafiki wektorowej (Adobe Illustrator), Tiled - edytor do tworzenia poziomów (tzw. kafelki), MakeHuman - darmowe narzędzie do generowania siatek humanoidalnych (animacja postaci w połączeniu ze szkieletem i modelem RigidBody). oprawa dźwiękowa - edytory dźwięku takie jak Audacity, generowanie dźwięków akcji (atak, uderzenie w ścianę) - SFXR, lub mikrofon + nagrywanie.
Unreal Engine pierwsza wersja (mechanizm renderowania, system wykrywania kolizji, system sztucznej inteligencji) - 1998 rok (gra Unreal); Unreal Tournament - wersja 1.5 (1999r.); Aktualna wersja 4, a od 2015 roku silnik jest darmowy (oprócz produkcji komercyjnych, które zarobią powyżej 3 tys dolarów).
Doom Engine pierwsza wersja stworzona przez Id Software na potrzeby gry Doom (1993 rok); od 1999 roku kod silnika opublikowany został na licencji darmowej; silnik doczekał się wielu modyfikacji dotyczących np. obsługi OpenGL. Quake Engine silnik opracowany w 1996 roku (na potrzeby gry Quake); jeden z pierwszych silników posiadających grafikę 3D przygotowany przez Johna Carmacka (ten sam, który napisał silnik Doom Engine).
Narzędzia graficzne - Blender Blender jako darmowa alternatywa dla Photoshopa; Wsparcie dla obliczeń GPU; modelowanie; przygotowanie modelu i przekształcenie w postać (szkielet i poruszanie się); rzeźbienie w materiałach; symulacje (woda, dym, włosy, ubranie); efekty cząsteczkowe jak deszcz, czy iskry; kamera i śledzenie obiektów; zestawy dodatkowych bibliotek; gotowe projekty, matriały, modele.
Rysunek: Blender (źródło: oficjalna strona Blender)
Rysunek: Blender (źródło: oficjalna strona Blendera)
Rysunek: SFXR
Da się przygotować coś bez złożonej grafiki? gry niezależne (indie games, indyki) - tworzone przez mały zespół/ jedną osobę bez wsparcia finansowego; ze względu na ograniczone koszty - często brak fizycznego nośnika; Podstawowym atutem jest innowacyjność (Minecraft).
Rysunek: Minecraft
Gry retro a grafika retro gry nieco starsze - najczęściej z lat 1980; gry w stylu retro - (Hotline miami, Fez, Super meatboy) - nowe gry, w których stosowana jest grafika w stylu retro; ograniczona paleta kolorów; skalowanie pikseli (w celu wyraźnego zaznaczenia poszczególnych pikseli): jeden piksel to np. siatka 10 na 10 pikseli;
Rysunek: Piksele i sztuczne zwiększenie wielkości piksela w wyższej rozdzielczości
Unity 3D - gry Pillars of Eternity; Deus Ex; Might and Magic X; Slender; Unity 3D - ogólnie zintegrowane środowisko do tworzenia gier 2D, 3D oraz materiałów interaktywnych; wieloplatformowość - Windows, Linux, Mac, apki mobilne, konsole; możliwość pisania skryptów w trzech językach: C#, UnityScript (JavaScript), Boo (inspirowany Pythonem).
Interfejsy użytkownika Rysunek: System informatyczny
Rysunek: Pięciowarstwowy model logicznego rozdzielania zadań (wg. D.Alur, J.Crupi, D. Malks, Core J2EE. Wzorce projektowe.)
Rysunek: MS-DOS
Rysunek: Xerox Star 1981
Rysunek: Apple Lisa 1983
Rysunek: Macintosh 1984
Rysunek: Windows 1.0 1985
Rysunek: Windows 2.0 1987
Rysunek: Windows 3.0 1990
Rysunek: System 7 na Macintosha 1991
Rysunek: Windows 95 1995
Rysunek: Mac OS 8 1997
Rysunek: Windows XP 2001
Rysunek: Mac OS X 10.2 Jaguar 2002
Rysunek: Ikony kosza na śmieci
Rysunek: Photoshop CS3
Interfejs użytkownika dobry projekt interfejsu jest warunkiem niezbednym powdzenia systemu; interfejs trudny w użyciu/posiadający liczne błędy w najlepszym wypadku doprowadzi do wielu pomyłek; w najgorszym wypadku użytkownicy mogą odmówić jego używania pomimo jego dobrej funkcjonalności; użytkownicy mogą mieć problemy z użytkowaniem systemu, jeżeli przestawine w nim informacje są błędne/niespójne.
Właściwości graficznego interfejsu okna - umożliwiają wyświetlanie informacji; ikony - reprezentują różnego rodzaju informacje; menu - obiekty umożliwiające wybranie określonej funkcji systemu; wskazywanie - możliwość wyboru konkretnego elementu z menu; grafika - elementy graficzne mogą zostać połączone z informacjami tekstowymi.
Rysunek: Proces projektowania interfejsu
Ogólna charakterystyka użytkownika Dane podstawowe: wiek, poziom wykształcenia; Klasyfikacja: przynależność organizacyjna, doświadczenie i umiejętności; Preferencje i uprzedzenia użytkownika; Cel korzystania z systemu; Podział na role w systemie; Scenariusze zadań dostępne dla każdej roli w systemie.
Rodzaje interakcji z użytkownikiem działanie bezpośrednie - użytkownik porozumiewa się bezpośrednio z obiektami - np. przeciągnięcie pliku do kosza; wybór z menu - wybór jednej z opcji dostępnych w obiekcie menu; wypełnienie formularza - wypełnienie pól/odpowiedź na pytania prowadzi do pewnej akcji; język poleceń - wydawanie specjalnych poleceń (wraz z parametrami) umożliwiających podjęcie akcji systemu; język naturalny - wydawanie poleceń w języku naturalnym.
Rysunek: Podstawowy podział interfejsów
Podstawowe zasady projektowania interfejsu Wygląd - interfejs powinien być podzielony na obszary przeznaczone do różnych celów; Uświadamianie zawartości - interfejs powinien uświadamiać użytkownika, w którym miejscu się znajdują i co oznaczają poszczególne elementy; Estetyka - równowaga pomiędzy funkcjonalnością a czytelnością; Doświadczenie użytkownika - uwzględnienie możliwości obsługi przez początkującego oraz zaawansowanego użytkownika; Spójność - interfejs powinien umożliwiać użytkownikowi przewidywanie skutków podejmowanych działań; Minimalizacja wysiłku - ograniczenie liczby kroków wiodących do celu do minimum.
Zasady projektowania interfejsu II zasada zbliżenia do użytkownika - użytkownik nie powinien być zmuszony do adaptowania się do systemu; potwierdzanie akcji destrukcyjnych; zapewnienie możliwości anulowania - czyli przywrócenia stanu systemu sprzed wykonania polecenia;
Czynniki określające funkcjonalność - projektowanie czynniki ludzkie - wpływ stresu, zmysły człowieka, proces zapamiętywania i zapominania; interakcjaa HCI - Human Computer Interaction - zagadnienia związane z logiką i funkcjonalnością parametrów, korzystanie z operacji we/wy, ergonomia korzystania z komputera; Projektowanie zorientowane na użytkownika - nie opiera się na zasadzie klient ma zawsze rację.
Rysunek: MVC dla interakcji z użytkownikiem
Rysunek: Przykładowa strona z podziałem na obszar nawigacyny
Zasady podziału każdy obszar interfejsu powinien mieć jasno wytyczone granice; każdy obszar powinien mieć określone przeznaczenie; każdy obszar powinien zawierać informacje potrzebne do realizacji wybranego zadania; obszary informacyjne powinny być uszeregowane w kolejności przetwarzania informacji przez użytkownika;
Uświadamianie zawartości wszystkie okna oraz sekcje powinny mieć tytuły jednoznacznie identyfikujące ich zawartość; menu powinno pokazywać ścieżkę - wskazywać sposób, w jaki użytkownik dostał się do danego punktu; przyciski powinny mieć napis jednoznacznie identyfikujący ich funkcje; forma informacji na sąsiadujących obszarach powinna być różna, np. tekst - grafika; jeżeli informacje nie są różne - powinny być oddzielone dodatkowym elementem; każde pole edycji musi mieć etykietę jednoznacznie identyfikującą to pole; pola edycji, których format nie jest oczywisty (np. data) muszą mieć dodatkowe oznaczenie formatu;
Estetyka interfejs powinien być funkcjonalny oraz mieć przyjemny wygląd; ilość wolnego miejsca pomiędzy elementami powinna być zależna od doświadczenia użytkownika - im mniej doświadczenia, tym więcej wolnego miejsca; należy unikać tworzenia dużych raportów i formularzy (kilkadziesiąt pól); tekst główny prezentowany czcionką 8-10 pkt; należy unikać stosowania dwóch różnych czcionek. Zdecydowanie unikać stosowania czcionek ozdobnych; stosowane kolory powinny być stonowane i nie powinny męczyć oka; kolor nie może być jedynym wyróżnikiem informacji.
Doświadczenie użytkownika a interfejs interfejs powinien być na tyle łatwy, aby początkujący użytkownik był w stanie go opanować; interfejs powinien ułatwiać i przyspieszać wykonywanie działać zaawansowanych użytkowników; menu powinno prezentować wszystkie dostępne funkcje; menu na każdym poziomie powinno być ograniczone i nie zawierać nadmiarowych informacji; najczęściej stosowane opcje powinny być dostępne bezpośrednio poprzez przyciski narzędziowe; przyciski powinny być logicznie pogrupowane; w przypadku bardziej złożonych aplikacji wskazane jest umożliwienie użytkownikowi konfiguracji paska menu; system podpowiedzi i skrótów klawiszowych dla bardziej złożonych aplikacji;
Spójność interfejs powinien być spójny dla zapewnienia przewidywalności podejmowanych działań przez użytkownika; wszystkie elementy: raporty i formularze powinny być zaprojektowane w jednolity sposób; jeżeli dana aplikacja powiązana jest z innymi narzędziami - to wszystkie powiązane elementy powinny być spójne.
Minimalizacja wysiłku interfejs powinien być przygotowany tak, aby minimalizować wysiłek użytkownika włożony w wykonanie czynności; 3 kliknięcia - czyli zalecana maksymalna liczba kliknięć służąca do wybrania interesującej użytkownika funkcji; dla bardziej złożonych aplikacji zaleca się łączenie kilku funkcji w jedną.
Dobór kolorów i schematów kolorów można stosować intensywne kolory, ale nie intensywne; najlepiej, by kolory były do siebie dopasowane (np. niebieski i zielony, czerwony i żółty itp.) lub kontrastowe: bialy i czarny; kolor tła nie powinien być zbyt intensywny; tło musi być spokojne, najlepiej jednolite, ewentualnie ze stopniowymi przejsciami koloru; stosowanie drobnych elementów i obiektów jako tła nie jest zalecane; niebieski jest bardziej prestiżowym kolorem (podobnie jak większość chłodnych kolorów i fioletowy).
Dobór kolorów i schematów kolorów II ograniczenie liczby stosowanych kolorów; zmiany kolorów do oznaczenia zmian stanów systemu; powiązanie kolorów z relizacją zadań - zadania podobne powinny być poznaczone kolorem podobnym; zwracanie uwagi na niektóre związki kolorów np. czerwony z niebieskim - które powodują szybkie zmęczenie oczu.
Rysunek: Projektowanie interfejsu
Rysunek: Use case 1
Rysunek: Use case 2
WND - Window Navigation Diagram każdy element wykresu reprezentuje pojedynczy komponent - menu lub formatkę; przejścia pomiedzy komponentami oznaczone są jako pojedyncza lub podwójna strzałka; strzałka pojedyncza oznacza, że informacja zwrotna do komponentu nadrzędnego nie jest potrzebna; każdy komponent opisany jest jako stereotyp, np. << form >>; każdy komponent ma etykietę.
Rysunek: Window Navigation Diagram WND
Storyboarding koncepcja bazuje na rysowaniu na kartce/tablicy odręcznch szkiców interfejsu wraz z ewentualnym zaznaczeniem przepływu pomiędzy funkcjami; jedna z najłatwiejszych technik projektowania interfejsu; stosowana najczęściej do elementów, których działanie jest dobrze znane;
Rysunek: Storyboarding
Prototypowanie HTML zastosowanie języka HTML do opracowania prototypu interfejsu; istotną wadą jest fakt, iż opracowane elementy niekoniecznie pojawią się dokładnie w takim samym formacie, co końcowy produkt.
Prototypowanie językowe opracowanie prototypu interfejsu w docelowym języku aplikacji; finalny produkt wizualnie będzie odpowiadał dokładnie elementom, które widoczne będą na ekranie; wadą tego podejścia jest znacznie większy nakład czasowy wymagany do opracowania prototypu.
Ocena interfejsu ocena heurystyczna - zgodność z zasadami; przegląd interfejsu z użytkownikiem; ocena interaktywna u użytkownika; formalne testowanie użyteczności.
Rysunek: Za dużo tekstu
Rysunek: Za mało tekstu
Rysunek: Niewielka funkcjonalność przy zbyt dużej liczbie opcji
Rysunek: Możliwość bezmyślnych działań użytkownika
Rysunek: Źle dobrane kolory
Tyfloinformatyka Tyfloinformatyk Specjalista z zakresu technologii wspomagającej - osoba, która ma wiedzę na temat aktualnego poziomu rozwoju tej technologii, potrafi dobrać sprzęt i oprogramowanie wspomagające do rodzaju i stopnia dysfunkcji wzroku użytkownika komputera i nauczyć efektywnego ich używania. Osoby niepełnosprawne należą do tzw. grupy ryzyka, którą cechuje niekorzystne położenie i dyskryminacja w zatrudnieniu na rynku pracy. W Polsce jest 5.457 tys. osób niepełnosprawnych, z czego ok. 59% jest w wieku produkcyjnym. Większość z nich (83%) jest bierna zawodowo.
Technologia wspomagająca Sprzęt komputerowy i oprogramowanie umożliwiające używanie komputera przez osoby niewidome i słabo widzące; programy udźwiękowiające oraz urządzenia brajlowskie; programy powiększające ekran; elektroniczne urządzenia powiększające dokumenty; notatniki brajlowskie; grafiki wypukłe.
Windows JAWS - Job Access With Speech Blind and Low Vision Group at Freedom Scientific of St. Petersburg; najpopularniejszy czytnik ekranowy na świecie; JAWS pozwala na użycie skryptów pisanych w wewnętrzym języku skryptowym JAWS; wsparcie składu HTML; wbudowany OCR rozpoznający grafiki na ekranie;
Rysunek: Windows JAWS Rysunek: MAGic - powiększanie ekranu
Rysunek: MAGic - klawiatura Rysunek: Kontrast kolorów
Rysunek: Przykład schematu kolorów z kontrastem
Rysunek: Przykład schematu kolorów z kontrastem II
Android Studio Rysunek: Widgety w środowisku Android
Właściwości Widgetów wysokość, szerokość, czcionka; wielkość elementu - match (dopasowanie do elementu rodzica); padding - margines wewnętrzny między ramką a obiektem (dlatego najpierw umieszczamy elementy wewnętrz pojemnika np. layout, a dopiero potem padding); margin - margines zewnętrzny pomiędzy ramką a sąsiednimi obiektami.
Podstawy GUI View - prosty komponent; View group - layout (grupua). Rysunek: GUI - ekran Activity
Rysunek: GUI - plik XML
View groups - LinearLayout i RelativeLayout układ w poziomie; układ w pionie; układ ustalany na podstawie parametru: android:orientation. View groups - RelativeLayout układ w odniesieniu do rodzica - np. Container; odniesienie: Bottom Parent, Top Parent, (left, right, center); położenie elementów w odniesieniu do innyc elementów;
View groups - waga ustalając LinearLayout i zmieniając wielkość danej kontrolki View na wartość 0 możemy przypisać jej wagę; waga oznacza, jaką częśc widoku będzie zajmować dany View; Przykładowo: 3 elementy, każdy z wagą 1 oznaczają, iż poszczególne elementy będą rozmieszczone na ekranie równomiernie.
Jak zapewnić sobie wsparcie dla różnych urządzeń? rozmiary w postaci dip (px = dp ( dip 160 )); dla tekstów używamy sp; < supports screens > - wskazujemy, jakie rozmiary ekranu są wspierane; dostarczamy różne elementy resources (dla różnych ekranów); stosujemy różne layout.
dpi, dip, dp, dps, sp? dpi - dots per inch (kropki na cal) - 160 (w przypadku ekranu o niższej rozdzielczości), lub 240 (w przypadku ekranu o większej rozdzielczości); pixels = dpi razy szerokość (1.5 cala), a więc odpowiednio 240 lub 360 pikseli; gęstość - 1.0 - dla ekranów o niższej rozdzielczości oraz 1.5 dla większej rozdzielczości; Denisity-independent pixels (dip,dp, dps) - 240; scale-independent pixels - zależy od ustawień dotyczących czcionki.
Rysunek: Więcej szczegółów. Źródło: stackoverflow.com
Plik strings.xml i zasoby tworzenie aplikacji wielojęzycznych; ciągi znaków (jak np. opis przycisku) nie powinny być wpisane jako stałe w pliku layout.xml; korzystanie z informacji z pliku strings.xml umożliwi przygotowanie wersji dedykowanych dla różnych języków Rysunek: Struktura katalogów dla plikow strings.xml
The Draw 9-patch tool - tworzenie elementów GUI 9 części obrazy (np. przyciski) ze specjalnym rodzajem skalowania; określenie wyglądu obramowań; używane do android:background; cały obrazek podzielony jest na 9 obszarów. 4 narożniki - statyczne; 4 obszary pomiędzy narożnikami - powielane w jednym wymiarze (na szerokość, lub na wysokość); środek - skalowalny.
Bardziej złożone struktury więcej elementów niż 9; możliwe skalowanie tylko poziomo, lub tylko pionowo; wybrane fragmenty ramki mogą być stale. Rysunek: Przykład ramki
Rysunek: Stany przycisków Interaktywność kontrolek interaktywność kontrolek; osobne grafiki dla poszczególnych stanów przycisku; nie mamy Listenera do przycisku.
Stany kontrolek android:state enabled czy element jest aktywny; android:state focused czy element ma fokus; android:state pressed czy element jest wciśnięty; android:state checked czy element jest wybrany.
Na koniec o powiadomieniach Toast - interaktywność (brak) - Krótko widoczne informacje wyświetlane domyślnie pośrodku dolnej części ekranu. Pasek stanu - interaktywność (mała) - Zdarzenia oczekujące akcji użytkownika (np. powiadomienie o sms, albo o e-mailu); Okno dialogowe - interaktywność (duża).
Dziękuję za uwagę