Prison of Carbon Refleksje na temat procesu tworzenia gry i projektowania. Dla koła naukowego RPG Jakub SceNtriC

Podobne dokumenty
Prison of Carbon Refleksje na temat procesu tworzenia gry i projektowania. Dla koła naukowego RPG Jakub SceNtriC

Referat Pracy Dyplomowej

Sieciowe Technologie Mobilne. Laboratorium 2

MonoGame. Wieloplatformowe gry w C# Mateusz Cicheński

Pliki zorganizowano w strukturze drzewiastej odzwierciedlając strukturę logiczną aplikacji:

Projektowanie, tworzenie aplikacji mobilnych na platformie Android

Spis treści. Księgarnia PWN: Roland Zimek - Swish Max3

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

Programowanie dla początkujących w 24 godziny / Greg Perry, Dean Miller. Gliwice, cop Spis treści

Kompleksowe tworzenie aplikacji klasy Desktop z wykorzystaniem SWT i

Spis treści. Księgarnia PWN: Roland Zimek - SWiSH Max2 i SWiSH Max3. Wprowadzenie... 9

Kurs programowania. Wstęp - wykład 0. Wojciech Macyna. 22 lutego 2016

Programowanie obiektowe

Java w 21 dni / Rogers Cadenhead. Gliwice, cop Spis treści. O autorze 11. Wprowadzenie 13 TYDZIEŃ I JĘZYK JAVA

Tworzenie prostych gier w programie GameMaker

PROGRAM NAUCZANIA DLA ZAWODU TECHNIK INFORMATYK, O STRUKTURZE PRZEDMIOTOWEJ

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

SpriteKit. Biblioteka do tworzenia gier wbudowana w SDK. Wspiera grafikę 2D w oparciu o sprite y

Prison of Carbon Refleksje na temat procesu tworzenia gry i projektowania. Dla koła naukowego RPG Jakub SceNtriC

Warstwa integracji. wg. D.Alur, J.Crupi, D. Malks, Core J2EE. Wzorce projektowe.

Sieciowe Technologie Mobilne. Laboratorium 4

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

CPT-CAD - Program do tworzenia dokumentacji geologicznej i geotechnicznej

Programowanie Multimediów. Programowanie Multimediów JAVA. wprowadzenie do programowania (3/3) [1]

Programowanie MorphX Ax

Ćwiczenie 25 Działania matematyczne we Flashu

Projektowanie graficzne. Wykład 2. Open Office Draw

I. Spis treści I. Spis treści... 2 II. Kreator szablonów Tworzenie szablonu Menu... 4 a. Opis ikon Dodanie nowego elementu...

Analiza i projektowanie aplikacji Java

Efektywne tworzenie aplikacji webowych z wykorzystaniem AngularJS, HTML5 i JavaScript

Struktury systemów operacyjnych

Język Java część 2 (przykładowa aplikacja)

System zarządzający grami programistycznymi Meridius

Aplikacje mobilne. Pliki zasobów, grafiki, menu, podpinanie zdarzeń. dr Tomasz Jach Instytut Informatyki, Uniwersytet Śląski

Unreal Engine w 24 godziny : nauka tworzenia gier / Aram Cookson, Ryan DowlingSoka, Clinton Crumpler. Gliwice, cop Spis treści.

SPOSOBY POMIARU KĄTÓW W PROGRAMIE AutoCAD

Księgarnia PWN: Andrzej Jaskulski - AutoCAD 2010/LT Podstawy projektowania parametrycznego i nieparametrycznego

Programowanie obiektowe

PyGame Gra w Ponga. Spis treści

Tworzenie aplikacji na platformie Android

Sklejanie warstw wektorowych wersja 1.02 Instrukcja

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

Szczegółowy opis zamówienia:

akademia androida Pierwsze kroki w Androidzie część I

GUI - projektowanie interfejsów

Wypożyczalnia VIDEO. Technologie obiektowe

Witryny i aplikacje internetowe - rozkład godzin dla technikum informatycznego

TRAVEL OFFICE MANAGEMENT SP. Z O.O. System TOM 24. Oferta na LCD. Opis modułu Oferty na LCD w nowej wersji systemu TOM 24 Data aktualizacji

Programowanie obiektowe

Multi-projekt z przedmiotów Inżynieria oprogramowania, Współczesne bazy danych i Programowanie w języku Java

Procesowa specyfikacja systemów IT

Programowanie aplikacji na urządzenia mobilne

Brain Game. Wstęp. Scratch

Programowanie dla ios

Dokumentacja projektu Makao karciana gra sieciowa

POMOC / INSTRUKCJA OBSŁUGI

Wykonać Ćwiczenie: Active Directory, konfiguracja Podstawowa

Wzorce projektowe. dr inż. Marcin Pietroo

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...

Laboratorium 9 (Więcej Aktywności, w Androidzie)

Grafika komputerowa i wizualizacja

Zakres treści Czas. 2 Określenie charakteru i tematyki strony. Rodzaje witryn. Projekt graficzny witryny. Opracowanie skryptów

Programowanie obiektowe - 1.

Wprowadzenie do projektu QualitySpy

5-6. Struktura dokumentu html. 2 Określenie charakteru i tematyki strony. Rodzaje witryn. Projekt graficzny witryny. Opracowanie skryptów

SPIS TREŚCI: KARTY GRAFICZNE... 15

Podstawy programowania, Poniedziałek , 8-10 Projekt, część 3

ActionLab - oprogramowanie do tworzenia labiryntów interaktywnych V1.0.1

Obiektowy model dokumentu. Katedra Mikroelektroniki i Technik Informatycznych

Aplikacje w środowisku VBA. Visual Basic for Aplications

Pisząc okienkowy program w Matlabie wykorzystujemy gotowe obiekty graficzne, lub możemy tworzyć własne obiekty dziedzicząc już zdefiniowane.

Spadające jabłuszka. licencja CC-BY-SA Uznanie autorstwa Na tych samych warunkach 3.0 Polska. Strona 51

Analiza i projektowanie obiektowe 2016/2017. Wykład 8: Przypisywanie obiektom odpowiedzialności (2)

EXSO-CORE - specyfikacja

Wprowadzenie do programowania aplikacji mobilnych

UML a kod w C++ i Javie. Przypadki użycia. Diagramy klas. Klasy użytkowników i wykorzystywane funkcje. Związki pomiędzy przypadkami.

Architektura gier komputerowych na wybranych przykładach. Krzysztof Rosiński

Dokumentacja wstępna TIN. Rozproszone repozytorium oparte o WebDAV

Ćwiczenie 23 Praca z plikiem.psd

Ćwiczenie Nr 6 Przegląd pozostałych najważniejszych mechanizmów systemu operacyjnego Windows

PAMIĘĆ OPERACYJNA...107

Spis treści. S t r o n a 2

E.14.1 Tworzenie stron internetowych / Krzysztof T. Czarkowski, Ilona Nowosad. Warszawa, Spis treści

PHP 5 język obiektowy

Podstawowe elementy GUI cz. 2 i 3 - zadania

Uniwersytet Łódzki Wydział Matematyki i Informatyki, Katedra Analizy Nieliniowej. Wstęp. Programowanie w Javie 2. mgr inż.

Instrukcja z przedmiotu: Zarządzanie dokumentacją techniczną

Programowanie obiektowe

Projektowanie logiki aplikacji

Programowanie w Javie 2. Płock, 26 luty 2014 r.

Google Earth. Co to jest Google Earth? Co to jest KML? Skąd można pobrać Google Earth?

Temat: Ułatwienia wynikające z zastosowania Frameworku CakePHP podczas budowania stron internetowych

Unity 3D - własny ekran startowy i menu gry

Spis treści CZĘŚĆ I. NIEPARAMETRYCZNE PROJEKTOWANIE 2D...31

PROE wykład 2 operacje na wskaźnikach. dr inż. Jacek Naruniec

Przygotowanie do nowoczesnego programowania po stronie przeglądarki. (HTML5, CSS3, JS, wzorce, architektura, narzędzia)

Programowanie obiektowe

MVVM i XAML w Visual Studio 2015 / Jacek Matulewski. Gliwice, cop Spis treści

Programowanie na poziomie sprzętu. Programowanie w Windows API

Transkrypt:

Prison of Carbon Refleksje na temat procesu tworzenia gry i projektowania Dla koła naukowego RPG Jakub SceNtriC Rojek @SceNtriC_ scentric@gmail.com

Adżenda for tudej Prison of Carbon co to? Refleksje projektowe Refleksje techniczne Refleksje biznesowe

Refleksje techniczne

Cost Off-the-Shelf (COTS) Eclipse Juno + ADK + Logcat LibGDX (http://libgdx.badlogicgames.com/) Java + OpenGL (obudowany)

LibGDX Możliwe jednoczesne tworzenie kodu na Androida, ios, HTML5 i Desktop Prosta darmowa biblioteka, dużo tutoriali Tak naprawdę wrapper na OpenGL oraz interfejs mobilny Wiele ułatwień (m.in. obsługa pamięci) Niezły tutorial, kiepska dokumentacja Alternatywa: PlayN

Struktura projektu Starter na Androida (jedynie konfiguracja) Główna klasa Javy (PrisonOfCarbon) Core (m.in. operacje matematyczne) Data (encje, loadery, managery) Logic (logika obiektów, mapy, obsługa kolizji) View (wyświetlanie mapy, GUI)

Ogólne założenia projektu kodu Obiektowość (ale nie do przesady) Podział na warstwy Brak strachu przed singletonami, choć mają swoje wady Pozycja obiektów wyrażona jest w wartościach całkowitych Wszystkie obiekty wywodzą się z jednej klasy

Encje Wszystkie obiekty poza mapą wywodzą się z klasy WorldObject, niektóre mają dodatkowe klasy bazowe Typy obiektów są identyfikowane prostą nazwą klasy, co jest wygodne, ale ciut wolniejsze niż mechanizmy Javy czy wartości numeryczne

Pozycja obiektów Przyjęto liczby całkowite jako współrzędne A co z przejściami z pola na pole? Decyzja o braku refaktoryzacji błąd Dodatkowe zmienne translation (od 0 do 1) oraz translationdir (kierunek i zwrot ruchu) Wiele problemów przy obliczaniu ścieżek, animacji, zmianach kierunku (czary)

Wczytywanie zasobów Własne kontenery zasobów graficznych i dźwiękowych przechowujący pod kluczami zasoby wczytane loaderami z XML Powolny i problematyczny, singleton Dostępny AssetManager w LibGDX Polecane uzupełnienie go o dostęp pod kluczami (zwykle równe nazwie obiektów) oraz opakowanie w potrzebne rzeczy

Implementacja osiągnięć Paskudnie (nie)zaprojektowane Skompletowanie osiągnięcia polega na osiągnięciu statystyk większych lub równych wymaganym przez osiągnięcie Kilkadziesiąt różnych parametrów Sprawdzanie osiągnięć po każdej znaczącej akcji w grze (informacja od logiki), drabinka ifów

http://pseudodev.blogspot.com/2013/06/prosty-system-interakcji-pomiedzy.html

Założenia logiki (1/3) Osobne klasy dla trybów rozgrywki (referencja na aktualny tryb w PrisonOfCarbon wygodne rozwiązanie, kwestia przepięcia referencji) Dwa tryby wieczne MainMenu i Game Każdy tryb nadpisuje metody create, update, render i inne Tryby mają wskaźniki na poszczególne partie logiki Trzeba uważać przy obsłudze interfejsu kwestia przycisków systemowych

Założenia logiki (2/3) Każda klasa logiki implementuje interfejs ILogic (PlayerGameLogic, MapLogic, ) Każda klasa ma metody modyfikujące parametry obiektów i obsługę kolizji MapLogic sprawdza czy uaktualnienie jakiegoś obiektu nie zwróciło nowej pozycji i sprawdzane są kolizje (nieefektywne), a później wywoływane handlecollision

Założenia logiki (3/3) handlecollision odpalają poszczególne metody w logice Warto zadbać o ograniczenie przeszukiwania interakcji pomiędzy obiektami (gdy to możliwe) Czy przesunięcie się obiektu to jedyny moment, kiedy trzeba sprawdzić kolizję? Wiele operacji w różnych miejscach (zadawanie obrażeń) duplikacja a odseparowanie MapLogic jedyna logika posiadająca swój obiekt (mapę)

Wyszukiwanie ścieżki Duże ułatwienie kafelki oraz ruch możliwy maksymalnie w cztery strony http://www.policyalmanac.org/games/astartutorial_pl.htm Lekkie modyfikacje co do preferencji równoważnych pól (na ostatnim miejscu bramy wyjściowe i obszary niebezpieczne) Różne testy ścieżek patrolowych potworów ujawniały kolejne błędy, łatane dodatkowymi parametrami automatyczne chodzenie postaci musi być bardzo dobrze zaprojektowane i zweryfikowane na sucho Inny problem badanie pól pomiędzy dwoma polami

Wyświetlanie Korzystanie z danych obiektów i logiki Pozycje elementów na ekranie stałe, parametryzowane przez wymiary ekranu Obszar przeznaczony na dany element (mapa, elementy HUDa) zaszyte w logice (zaburzenie architektury) Brak założenia internacjonalizacji obecnie ciężko przetłumaczyć Prison of Carbon Postarać się o lepszą czcionkę

Grafika (1/3) Przy okazji GDD została opracowana wstępna lista potrzebnych zasobów (gfx i audio) Grafika wektorowa (Inkscape) http://2dgameartforprogrammers.blogspot.com/ Kiepska jakość ze względu na kiepskiego wykonawcę Rozmiar grafik ma ogromny wpływ na rozmiar aplikacji i prędkość wczytywania ograniczać, gdy tylko to możliwe Styl rysunkowy wyraźne kontury, jednolite barwy Grafika musi być spójna i utrzymana w jednakowym stylu

Grafika (2/3)

Grafika (3/3)

Grafiki (anty)koncepcyjne (1/5) Gracz oraz przeciwnicy mają różne klatki w zależności od zwrotu poruszania się oraz animacji chodu Warto szkicować dynamiczne obiekty, później łatwiejsze rysowanie Dobry materiał do pokazywania na Twitterze i innych serwisach Narysowanie postaci, a później tworzenie osobnych plików z lekkimi przesunięciami

Grafiki (anty)konce pcyjne (2/5) http://game400.com/wpcontent/uploads/2013/03/fant asy1.png

Grafiki (anty)konce pcyjne (3/5) http://static1.wikia.nocoo kie.net/ cb2012073111 1358/harrypotter/pl/imag es/9/9e/zgredek.jpg

Grafiki (anty)konce pcyjne (4/5) http://static4.wikia.nocoo kie.net/ cb2009091917 0056/pacman/images/2/2 b/clydeeghost.png

Grafiki (anty)koncep cyjne (5/5) http://upload.wikimedia.org/wikip edia/en/6/65/gruntz_coverart.p ng

Muzyka i dźwięk http://freesound.org/ - niezła baza darmowych dźwięków Wszystkie efekty dźwiękowe na CC0 Często konieczność korekty w Audacity Stosunkowo łatwo znaleźć dźwięk, trudniej tło muzyczne Trzeba tak zaprojektować klasy, aby LibGDX nie przestawał odgrywać muzyki w tle przy zmianie okien np. w menu

Podsumowanie LibGDX jest niezłym wyborem na grę multiplatformową Warto dobrze przemyśleć architekturę aplikacji Można stosować podejście obiektowe (ale czy jest to najlepsze?) O spójność grafiki jest trudniej niż dźwięków

Dziękuję za uwagę!