Top Banner
RAZVOJ IGRICA Danijel Pobi, dipl. Ing. Računarstva
25

Razvoj igrica

Mar 21, 2016

Download

Documents

taurus

Razvoj igrica. Danijel Pobi, dipl. Ing. Računarstva. Plan predavanja. Osnove programiranja C/C++ Razlike Pascala i C/C++ OOP (Obijektno orijentirano programiranje) Visual Studio Osnove računalne grafike Grafika na elektroničkim uređajima Osnovni elementi Scena - PowerPoint PPT Presentation
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Razvoj igrica

RAZVOJ IGRICA

Danijel Pobi, dipl. Ing. Računarstva

Page 2: Razvoj igrica

Plan predavanja Osnove programiranja C/C++

Razlike Pascala i C/C++ OOP (Obijektno orijentirano programiranje) Visual Studio

Osnove računalne grafike Grafika na elektroničkim uređajima Osnovni elementi Scena

Praktični rad na Ogre rendering engine-u Stvaranje scene i elementi Skripte Alati

Platforme i višeplatformski razvoj

Page 3: Razvoj igrica

OSNOVE PROGRAMIRANJA C/C++Zašto C++?

PASCAL C/C++Rijeđe korišten (time i slaba

dokumentacija)Jednostavan za učenjeMali broj bibliotekaObjectPascal/DelphiDetekcija type grešaka

prilikom kompajliranjaVećina raspoloživih

biblioteka su wraperi oko postojećih C/C++ biblioteka i API-a

Vodeći programski jezik (industrijski standard)

Kompliciranije za učitiOgroman broj bibliotekaC++ (Java, C#)Veća fleksibilnost i veća

šansa pogreškeVelik broj biblioteka

omogućava rad za sve platforme, sustave i zadatke

Page 4: Razvoj igrica

OSNOVE PROGRAMIRANJA C/C++Podatkovni tipovi

PASCAL C/C++

integerrealcharbooleantype, vararraypacked array[n] of char^integer

intfloatchar- (false 0, true <>0)enum[]char[n], char**int

Page 5: Razvoj igrica

OSNOVE PROGRAMIRANJA C/C++Kontrola toka

PASCAL C/C++if uvjet then naredbe

else naredbe

while uvjet do naredbe

repeatu naredbe until uvjet

for izraz to izraz do naredbeFor izraz downto izraz do naredbe

Case izraz of izraz : naredbe.

if (uvjet) naredbeelse naredbe

while (uvjet) naredbe

do naredbe while (uvjet)

for (izraz;uvjet;izraz) naredbe

switch(izraz){ case izraz: naredbe ..... default: naredbe}

Page 6: Razvoj igrica

OSNOVE PROGRAMIRANJA C/C++Funkcije i procedure

PASCAL C/C++

function i procedure

function f(x,y:integer):integer;

procedure f(q: integer);

nema procedura, sve su funkcije

int f(int x, int y);

void k(int q);

Page 7: Razvoj igrica

OSNOVE PROGRAMIRANJA C/C++Hello World!

PASCAL C/C++

program HelloWorld;

beginwriteln(‘Hello World!’);end.

#include <iostream>

void main() {

std::cout<<“Hello World!”;

}

Page 8: Razvoj igrica

OSNOVE PROGRAMIRANJA C/C++varijable

PASCAL C /C++var i: integer;

mora se deklarirati izvan samog begin-end dijela

i:=100;

var pozdrav: string;

pozdrav:=‘Pozdrav’;

Read and Readln

int i;

može se deklarirati bilo gdje unutar programa

i=100;

string pozdrav=”Pozdrav”;

cin

Page 9: Razvoj igrica

OSNOVE PROGRAMIRANJA C/C++Memory management

PASCAL C/C++

Statičko zauzimanje po varijabliGetmem()Freemem()Addr, Compare, Cseg, Dseg, FillByte, FillChar, High, IndexByte, Move, New, Ofs, Sptr-Ukratko jako kompliciran memory management

Statičko zauzimanje po varijablinewdelete -Sve ostale funkcije i metode se oslanjaju na ove osnovne dvije-Jednostavan, moćan, ali time i lagano za pogriješit

Page 10: Razvoj igrica

OSNOVE PROGRAMIRANJA C/C++OOP

Class (klasa) Method (metoda) Abstraction (abstrakcija) Encapsulation (enkapsulacija) Polimorphism (polimorfizam) Dynamic dispatch (dinamično slanje) Inheretance (nasljeđivanje) Instance (instanca) Recursion (rekurzija)

Page 11: Razvoj igrica

OSNOVE PROGRAMIRANJA C/C++Klasa• Class• Interface

(sučelje)• Member

accessibility (pristup)

• private• protected• public

#include <iostream>

using namespace std;

class Vozilo{public:string ime;int godiste;float snaga;float tezina;

Vozilo();~ Vozilo();}

void main(){Vozilo auto();auto.ime=”Ariel Atom”;auto.godiste=2009;auto.snaga=200;auto.tezina=500;cout<<”Sportski auto je ”<<auto.ime;}

Page 12: Razvoj igrica

OSNOVE PROGRAMIRANJA C/C++Metoda• Metode u klasama se mogu

smatrati kao procedure, one definiraju ponašanje klase

• Metode kao i klase mogu biti private, protected i public

• Metode mogu biti povezane za klasu statično (tijekom kompajliranja) i dinamično (tijekom izvođenja programa)

• Abstraktna metoda i sučelje• Overload• Override• virtual

#include <iostream>

using namespace std;

class Vozilo{public:string ime;float snaga;float tezina;

Vozilo();~ Vozilo();

void setSnaga(float ks){snaga=ks;}

void setTezina(float kg){tezina=kg;}

float HPperTon(){return snaga/(tezina/1000);}}

void main(){Vozilo auto();auto.setSnaga(200);auto.setTezina(500);cout<<ja.HPperTon();}

Page 13: Razvoj igrica

OSNOVE PROGRAMIRANJA C/C++Abstrakcija• „Abstrakcija u

programiranju je proces kojim se podaci i program definirani sa prezentacijom svoje forme sličnom svom značenju”

• Abstrakcija podataka i programa su različiti koncepti koji se objedinjuju u modernim OOP programskim jezicima

• C# object• Java superclass

• Ključna riječ virtual• Važan koncept abstrakcije

programskih slojeva

Mreža Video

Aplikacijski Sloj

HID

Zvuk

Simulacijska Logika

Timer File System

Page 14: Razvoj igrica

OSNOVE PROGRAMIRANJA C/C++Enkapsulacija• Enkapsulacija se koristi da

bi se sakrile vrijednosti ili stanja struktura podataka unutar klase da bi se spriječio neovlašteni direktan pristup

• sučelje i implementacija• Iznimno važno priradu s

bibliotekama i povezivanju na njih

• Moguće i u starijim jezicima, ali mehanizmi su bili prekomplicirani i neučinkoviti (API pozivi na neprozirne tipove (opaque types) koji direktno rade na memoriji)

//Vozilo.h#include <iostream>

using namespace std;

class Vozilo{string ime;float snaga;float tezina;

Vozilo();~ Vozilo();void setSnaga(float ks);void setTezina(float kg);float HPperTon();}

//Vozilo.cpp

void Vozilo::setSnaga(float ks){snaga=ks;}

void Vozilo::setTezina(float kg){tezina=kg;}

float Vozilo::HPperTon(){return snaga/(tezina/1000);}

Page 15: Razvoj igrica

OSNOVE PROGRAMIRANJA C/C++Polimorfizam

• Omogućava da se vrijednosti različitih podatkovnih tipova obračuju koristeći jedinstveno sučelje

• 3 vrste polimorfizma: • Ad-hoc• Parametric • Subtype

• Jako često korišten koncept prilikom izrada raznih biblioteka, tj. klasa za rad s različitim podatkovnim strukturama i objektima

• Primjer Liste, Stogovi, Hrpe, Stabla, ...

Page 16: Razvoj igrica

OSNOVE PROGRAMIRANJA C/C++Dynamic dispatch

• To je proces odabira koja implementacija polimorfnog operatora će se pozvati prilikom izvođenja

• Problem kod polimorfizma je što često nemožemo do izvođenja programa znati s kojim točno podatkovnim tipom radimo ili se podatkovni tip mijenja tijekom izvođenja

Page 17: Razvoj igrica

OSNOVE PROGRAMIRANJA C/C++Nasljeđivanje• Odnos među objektima• Nasljeđivanje se ovdje odnosi

na to da klasa može nasljediti atribute i ponašanje od neke prijašnje klase (bazna klasa, superklasa ili roditeljska klasa)

• Ovim načinom se stvara hijerarhija klasa (u kojoj imamo rezultatne klase: derivirane klase, podklase i dječije klase (child classes))

• Nasljeđivanjem imamo veliku modularnost programiranja gdje možemo novim klasama proširivat, mijenjat i prepravaljat nasljeđenu klasu

• Pozitivno: overriding, code reuse

• Negativno: previše nasljeđivanja može usporiti izvođenje

class Vozilo{int težina;float snaga;}

class Automobil:Vozilo{int colindri;string rezultatNurberring;}

class Avion:Vozilo{float rasponKrila;float maxVisinaLeta;}

Page 18: Razvoj igrica

OSNOVE PROGRAMIRANJA C/C++Instance• Instanca je specifična

realizacija objekta• Svaki objekt se može

varirati na više načina, a svaka realizirana varijanta objekta je instanca.

• Svaki program koji se izvršava je instanca programa.

• Objekt je instanca klase

Page 19: Razvoj igrica

OSNOVE PROGRAMIRANJA C/C++Rekurzija

• Misli se na objektnu rekurziju gdje klasa može zvati samu sebe

• ključna riječ „this” (self ili me)• svi OOP jezici imaju konstantni pokazivač ili

referencu sami na sebe kako bi trenutni objekt mogao pozivati svoje metode i koristiti svoje varijable

• Jako moćan saveznik, ali još gori neprijatelj• Kod nekihi programskih jezika može se promjeniti

vrijednost, ali time se ne mijenja vrijednost objekta, nego identitet objekta na koji se ostatak metoda referiraj

• Mogu se u nekim slučajevima direkno castati u drugio podatkovni tip s eksplicitnim this pointerom

Page 20: Razvoj igrica

OSNOVE PROGRAMIRANJA C/C++Biblioteke (library)

Biblioteka je kolekcija implementacija ponašanja napisana u obliku jezika s točno definiranim sučeljima s kojima se ponašanje potiče

Organizirano je tako da se može koristiti s više programa koji nemaju nikakvu vezu jedan s drugim

Primjeri iostream, math, API-i poput DirectX i OpenGL,....

Page 21: Razvoj igrica

OSNOVE PROGRAMIRANJA C/C++Biblioteke (library)

Više vrsta biblioteka: Statične Dijeljene Objektne i klasne Udaljene ...

Dva načina povezivanja: Statički (lib) Dinamički (dll)

Page 22: Razvoj igrica

OSNOVE PROGRAMIRANJA C/C++Biblioteke (library)

STATIČKE DINAMIČKEPovezivanje tijekom kompajliranjaVeliki krajnji program (exe file)Dijelovi potrebni izvođenju se direktno kopiraju u izvršnu datotekuIzmjena na biblioteci zahtjeva ponovno kompajliranje programaBrže se izvodi jer je sav kod u istoj datoteci Primjena u programima gdje nema izmjena, kritična važnost brzine i sigurnosti

Povezivanje tijekom izvođenjaMali krajnji program (mali exe file)Nema kopiranja dijelova, samo se stavljaju poveznice na bibliotekuIzmjena zahtjeva samo zamjenu biblioteke ako nije bilo izmjena sučelja (ekstremni slučaj)Malo sporije nego statično zbog stalne potrebe za komunikacijom s drugim datotekamaPogodno za komponente koje su pod stalnim razvojem i optimizacijama (DirectX i ostale komponente operativnog sustava kao, driveri, framework, itd...)

Page 23: Razvoj igrica

Visual Studio Trenutno najbolji razvojni alat

(IDE=interactive developement enviroment) Mogućnost razvoja za sve platforme i sve

sustave Mogućnost korištenja više programskih jezika

C++, C#, VB, SQL, F#, HTML, JavaScript, ... Neradi na svim operativnim sustavima, nego

samo na Windows OS-u Alternative: Eclypse, CodeBlock, Xcode,

Notepad ...

Page 24: Razvoj igrica

Visual StudioDemonstracija kreiranja projektaIzvođenjeDebugging (brakpoint)Debug i release mod

Page 25: Razvoj igrica

Kraj prvog dijela

PITANJA?nema glupih pitanja

[email protected]će nikom neriješavam, ako ih

bude ;)