3D-s technológiák a játékfejlesztésben UDK bevezetés

Hasonló dokumentumok
3D-s technológiák a játékfejlesztésben Saját játék osztály

A C# programozási nyelv alapjai

Programozás I. Első ZH segédlet

Informatika terméktervezőknek

3. Osztályok II. Programozás II

Mintavételes szabályozás mikrovezérlő segítségével

Programozási nyelvek JAVA EA+GY 1. gyakolat

C# gyorstalpaló. Készítette: Major Péter

Apple Swift kurzus 3. gyakorlat

Java II. I A Java programozási nyelv alapelemei

Java II. I A Java programozási nyelv alapelemei

PHP. Telepítése: Indítás/újraindítás/leállítás: Beállítások: A PHP nyelv

Internet programozása. 3. előadás

és az instanceof operátor

Java VIII. Az interfacei. és az instanceof operátor. Az interfészről általában. Interfészek JAVA-ban. Krizsán Zoltán

Szoftvertechnológia alapjai Java előadások

Java programozási nyelv

C++ programozási nyelv Konstruktorok-destruktorok

C# nyelv alapjai. Krizsán Zoltán 1. Objektumorientált programozás C# alapokon tananyag. Általános Informatikai Tanszék Miskolci Egyetem

BASH script programozás II. Vezérlési szerkezetek

Occam 1. Készítette: Szabó Éva

Memóriagazdálkodás. Kódgenerálás. Kódoptimalizálás

Programozási nyelvek II. JAVA EA+GY 1. gyakolat

Programozás BMEKOKAA146. Dr. Bécsi Tamás 3. előadás

Operációs rendszerek. 11. gyakorlat. AWK - szintaxis, vezérlési szerkezetek UNIVERSITAS SCIENTIARUM SZEGEDIENSIS UNIVERSITY OF SZEGED

Felhasználó által definiált adattípus

Helyes-e az alábbi kódrészlet? int i = 1; i = i * 3 + 1; int j; j = i + 1; Nem. Igen. Hányféleképpen lehet Javaban megjegyzést írni?

Java Programozás 9. Gy: Java alapok. Adatkezelő 5.rész

A C# PROGRAMOZÁSI NYELV

AWK programozás, minták, vezérlési szerkezetek

Szkriptnyelvek. 1. UNIX shell

1. Alapok. Programozás II

Szoftvertervezés és -fejlesztés I.

1. Egyszerű (primitív) típusok. 2. Referencia típusok

file./script.sh > Bourne-Again shell script text executable << tartalmat néz >>

Algoritmizálás + kódolás C++ nyelven és Pascalban

Programozási nyelvek I. 5. előadás (Gregorics Tibor anyagának felhasználásával)

3. Gyakorlat Ismerkedés a Java nyelvvel

Bevezetés a programozásba I.

Számítástechnika II. BMEKOKAA Előadás. Dr. Bécsi Tamás

Java bevezet o Kab odi L aszl o Kab odi L aszl o Java bevezet o

PHP alapjai, bevezetés. Vincze Dávid Miskolci Egyetem, IIT

Algoritmizálás és adatmodellezés tanítása 1. előadás

AWK programozás, minták, vezérlési szerkezetek

Programozás alapjai. 5. előadás

Mechatronika és mikroszámítógépek 2017/2018 I. félév. Bevezetés a C nyelvbe

Tartalomjegyzék. Általános Információ! 2. Felhasználói dokumentáció! 3. Feladat! 3. Környezet! 3. Használat! 3. Bemenet! 3. Példa!

OBJEKTUM ORIENTÁLT PROGRAMOZÁS JAVA NYELVEN. vizsgatételek

Adattípusok, vezérlési szerkezetek. Informatika Szabó Adrienn szeptember 14.

Programozási nyelv Java

Mit tudunk már? Programozás alapjai C nyelv 4. gyakorlat. Legnagyobb elem keresése. Feltételes operátor (?:) Legnagyobb elem keresése (3)

1. Jelölje meg az összes igaz állítást a következők közül!

Programozás alapjai gyakorlat. 4. gyakorlat Konstansok, tömbök, stringek

Operációs rendszerek. 9. gyakorlat. BASH recap, reguláris kifejezések UNIVERSITAS SCIENTIARUM SZEGEDIENSIS UNIVERSITY OF SZEGED

Programozás C és C++ -ban

Programozás alapjai C nyelv 4. gyakorlat. Mit tudunk már? Feltételes operátor (?:) Típus fogalma char, int, float, double

Imperatív programozás

Programozás BMEKOKAA146. Dr. Bécsi Tamás 1. Előadás

PHP gyorstalpaló, avagy a Hello World-től az űrlapellenőrzésig

Operációs rendszerek. 9. gyakorlat. Reguláris kifejezések - alapok, BASH UNIVERSITAS SCIENTIARUM SZEGEDIENSIS UNIVERSITY OF SZEGED

Smalltalk 2. Készítette: Szabó Éva

PASzSz. Dr. Kotsis Domokos

Programozás I. 3. gyakorlat. Szegedi Tudományegyetem Természettudományi és Informatikai Kar

Bevezetés a programozásba Előadás: Objektumszintű és osztályszintű elemek, hibakezelés

Bevezetés a programozásba I.

PYTHON. Avagy hosszú az út a BioPythonig

Objektumorientált programozás C# nyelven III.

Programozás alapjai gyakorlat. 2. gyakorlat C alapok

S z á m í t ó g é p e s a l a p i s m e r e t e k

A C programozási nyelv II. Utasítások. A függvény.

Számítástechnika I. BMEKOKAA152 BMEKOKAA119 Infokommunikáció I. BMEKOKAA606. Dr. Bécsi Tamás 3. előadás

Járműfedélzeti rendszerek II. 2. előadás Dr. Bécsi Tamás

Programozás I. gyakorlat

C programozás. 1 óra Bevezetés

Programozás II. 2. Dr. Iványi Péter

OAF Gregorics Tibor: Minta dokumentáció a 3. házi feladathoz 1.

Számítástechnika I. BMEKOKAA152 BMEKOKAA119 Infokommunikáció I. BMEKOKAA606. Dr. Bécsi Tamás

OOP: Java 11.Gy: Enumok, beágyazott osztályok. 13/1 B ITv: MAN

1. Alapok. #!/bin/bash

Programzás I gyakorlat

Kivételkezelés, beágyazott osztályok. Nyolcadik gyakorlat

Programozási technológia I 1. gyakorlat. A Java nyelvi alapjai, a NetBeans környezet

Megoldott feladatok. Informatika

Imperatív és procedurális programozás a Javában

Tervminták a valósidejű gyakorlatban

Programozás alapjai C nyelv 5. gyakorlat. Írjunk ki fordítva! Írjunk ki fordítva! (3)

Objektum Orientált Programozás. 11. Kivételkezelés 44/1B IT MAN

Maximum kiválasztás tömbben

Smalltalk 3. Osztályok létrehozása. Készítette: Szabó Éva

C# Nyelvi Elemei. Tóth Zsolt. Miskolci Egyetem. Tóth Zsolt (Miskolci Egyetem) C# Nyelvi Elemei / 18

Kifejezések. Kozsik Tamás. December 11, 2016

Programozás II. 2. gyakorlat Áttérés C-ről C++-ra

OOP: Java 8.Gy: Abstract osztályok, interfészek

Alapok. tisztán funkcionális nyelv, minden függvény (a konstansok is) nincsenek hagyományos változók, az első értékadás után nem módosíthatók

SZERVER OLDALI JAVASCRIPT. 3. hét Javascript nyelvi elemek

A JavaScript főbb tulajdonságai

STL gyakorlat C++ Izsó Tamás május 9. Izsó Tamás STL gyakorlat/ 1

Programozási technológia I.

Webprogramozás szakkör

Programozás. (GKxB_INTM021) Dr. Hatwágner F. Miklós február 18. Széchenyi István Egyetem, Gy r

Átírás:

3D-s technológiák a játékfejlesztésben UDK bevezetés

Első lépések Könyvtár szerkezet: UDK-XXXXXXXX Binaries Development: Itt található a játék forráskódja, ezt kibővíthetjük. FONTOS: A már meglévő kódokat ne módosítsuk! Engine UDKGame

UDKGame könyvtár Autosaves: A telepítés után még nem létezik. A szerkesztő időnként ide menti el a szerkesztés alatt lévő pályát, hogy a szerkesztő hibája esetén innen vissza lehessen tölteni azt. Config: Különböző konfigurációs fájlokat tartalmaz. Content: Pályák, hangok, karakterek. Logs: Események naplói, illetve debug logok.

UDKGame könyvtár Movies: Átvezető videók, pálya betöltés közbeni videók. Script: A script fájlok lefordított verziói ide kerülnek, a játék terjesztésekor ezekre is szükség van. Splash: A szerkesztő által használt splash képek. Localization: Több nyelvű program esetén ide helyezzük el a lefordított szövegeket.

Saját kód Különítsük el a saját kódunkat az EPIC által írt kódtól A Development\Src könyvtárban hozzuk létre a saját könyvtárunkat, például: AwesomeGame, majd ebbe a Classes könyvtárat A fordító majd az UDKGame\Script könyvtárba helyezi az AwesomeGame.u lefordított fájlt

Saját kód Hozzuk létre az AwesomeGame.uc forrásfájlt a Classes könyvtárban: Class AwesomeActor extends Actor placable; defaultproperties { Begin Object Class = SpriteComponent Name = Sprite Sprite = Texture2D'EditorResources.S_NavP' End Object Components.Add(Sprite)

Saját kód Az osztály neve AwesomeActor, egyeznie kell a fájl nevével! Class AwesomeActor extends Actor placeable; defaultproperties { Begin Object Class = SpriteComponent Name = Sprite Sprite = Texture2D'EditorResources.S_NavP' End Object Components.Add(Sprite)

Saját kód Az osztály az Actor osztályból származik, így örökli annak tulajdonságait. Class AwesomeActor extends Actor placeable; defaultproperties { Begin Object Class = SpriteComponent Name = Sprite Sprite = Texture2D'EditorResources.S_NavP' End Object Components.Add(Sprite)

Saját kód Az osztályból készített példányt elhelyezhetjük a szerkesztőben. Class AwesomeActor extends Actor placeable; defaultproperties { Begin Object Class = SpriteComponent Name = Sprite Sprite = Texture2D'EditorResources.S_NavP' End Object Components.Add(Sprite)

Saját kód Az osztályból készített példányt egy spriteként látjuk a szerkesztőben és a játékban. Class AwesomeActor extends Actor placeable; defaultproperties { Begin Object Class = SpriteComponent Name = Sprite Sprite = Texture2D'EditorResources.S_NavP' End Object Components.Add(Sprite)

Saját kód Tudassuk a rendszerrel, hogy létezik a saját AwesomeGame könyvtárunk Nyissuk meg az UDKGame\Congig\DefaultEngine.ini-t, és az AwesomeGame-t adjuk az EditPackages listához: [UnrealEd.EditorEngine] +EditPackages=UTGame +EditPackages=UTGameContent +EditPackages=AwesomeGame

Az osztály használata Fordítsuk le a megírt scriptet: Lépjünk ki a szerkesztőből Indítsuk újra a szerkesztőt, vagy az UnrealFrontend segítségével indítsuk el a fordítást A Content Browser-ben keressük meg az AwesomeActor-t, majd húzzuk a pályára

Hello world Rejtsük el az AwesomeActor-t játék közben: Begin Object Class=SpriteComponent Name=Sprite Sprite = Texture2D'EditorResources.S_NavP' HiddenGame = True End Object A játék indulásakor írjunk a log-ba egy üzenetet: Class AwesomeActor extends Actor placeable; function PostBeginPlay() { `log("hello world!");

Változók Változó deklaráció: var <típus> <név>; Szerkeszthető változó: var() <típus> <név>; Változó kiíratása logba: var int a; `log("a valtozo = " @a);

Változók bool: logikai érték, true vagy false lehet byte: 1 bájtos egész, 0-tól 255-ig terjedhet int: 32 bites egész float: 32 bites lebegőpontos érték string enum struct

Változók, példa Class AwesomeActor extends Actor placeable; enum Felsorolas { HAPCI, VIDOR, KUKA ; var() Felsorolas torpok; var() bool a; var() byte b; var() int c; var() float d; var() string e; var(valami) bool f; var int g; [ ]

Tömbök Class AwesomeActor extends Actor placeable; enum Felsorolas { ; HAPCI, VIDOR, KUKA var() int tomb1[5]; var() Felsorolas tomb2[5];

Dinamikus tömbök Megadjuk, hogy milyen típusú elemekből áll a tömb: var() array<int> dinamikus; Ez kezdetben 0 méretű, de ha az i. elemnek adunk értéket, akkor i+1 méretűre nő a tömb: dinamikus[2] = 10; // 3 elemű lesz Elemszám lekérdezése: dinamikus.length

Struktúrák struct Valami { var() int a; var() bool b; ; struct Masik { var() Valami c; var() int d; ;

Vector var vector offset; function PostBeginPlay() { offset.z = 64; SetLocation(Location + offset); // vagy: SetLocation(Location + vect(0, 0, 64)); A szereplő kezdő pozícióját eltoltuk a Z tengely mentén 64 egységgel. A vector adattagjai: x, y és z. A vektor hossza: VSize(offset)

Rotator var rotator rotate; function PostBeginPlay() { rotate = rot(0, 0, 4000); SetRotation(Rotation + rotate); Rotator adattagjai: pitch, yaw, roll Az adattagok 0-tól 65536-ig terjednek (65536 = 360 fok)

Alapértelmezett értékek Az osztályváltozók kezdeti értékeit a defaultproperties-ben adjuk meg: defaultproperties { a = true [ ]

Lokális változók Függvényen belül a var helyett a local kulcsszóval vezetjük be a lokális változókat. A lokális változókat a függvény elején kell megadni! function PostBeginPlay() { local int aa = 42; `log("aa = "@aa);

Vezérlési szerkezetek: if if (c == 0) { `log("nulla"); else if (c == 1) { `log("egy"); else { `log("egyik sem");

Vezérlési szerkezetek: switch switch (c) { case 0: case 1: `log("nulla"); break; `log("egy"); break; case 2: `log("ketto"); break; default: `log("egyik sem");

Vezérlési szerkezetek: ciklus for (aa = 0; aa < 5; aa++) { `log("aa = "@aa); aa = 0; Bennmaradási feltétel! while (aa < 100) { `log("aa = "@aa); aa += aa + 1; aa = 0; do { `log("aa = "@aa); aa += aa + 1; until (aa >= 100); Kilépési feltétel!

Saját fegyver Class AwesomeGun extends UTWeap_Rocketlauncher_Content; defaultproperties { FireInterval(0) = 0.1 ShotCost(0) = 0