Grafikus és játékalkalmazások programozása (Fehér Krisztián)

PDFNyomtatásE-mail
636 oldal, B/5, 2017.,
ISBN 978-615-5477-51-5
Nincs kép beállítva
Alapár:6990,00 Ft
Fogyasztói ár6630,00 Ft
Végösszeg:6630,00 Ft
Kedvezmény-360,00 Ft
Kedvezmények összesen: -360,00 Ft
Leírás

Ha Önt érdekli, miként készíthet otthoni körülmények között, akár teljesen ingyenesen játékprogramokat asztali számítógépére, androidos okostelefonjára, vagy webes böngészőhöz, akkor ne keresgéljen tovább: ez a könyv Önnek készült! Elsődleges célunk grafikákat megjelenítő és kifejezetten grafikus játékalkalmazások programozásának a bemutatása PC-s, webes és Androidos környezetben. Mindezt azonban rendhagyó módon, párhuzamosan három programozási nyelv felhasználásával tesszük, így azonnal összehasonlíthatók a programkódok. 4 játékprogram, 46 segédprogram, három programozási nyelv, három platform, öt grafikus megjelenítő rendszer (Windows GDI, GDI+, Flash, HTML5 Canvas, OpenGL) programozása, közel 20000 programsornyi letölthető melléklet. Röviden ezt nyújtja könyvünk. A főbb programozási alapok és környezetek mellett belekóstolunk a Blender, a Flex, a DirectX, az OpenGL, a GDI+ és a HTML5 lehetőségeibe, valamint a VR alkalmazásokba is. Mindehhez gyakorlati példákként táblás-, akció-, ügyességi-platform-, és 3D akciójátékot készítünk Visual C++, ActionScript és JavaScript nyelven, melyek segítségével valódi, működő játékprogramok készíthetőek. Ezenkívül megtanulhatjuk a 3D modellkészítés legalapvetőbb fogásait, sőt, még 3D modellnézegető segédprogramot is készíteni fogunk. A könyv végére egyszerűbb OpenGL alkalmazások készítése sem fog gondot okozni. A könyv elsősorban a programozni vágyó olvasóknak kínál kellemes tanulást és kikapcsolódást. Az egyes példaprogramokat gyakorlatias, könnyed stílusban mutatjuk be, elméletek és matematikai tételek, képletek hosszas taglalása helyett a használhatóságot tartjuk szem előtt, így a könyv segítségével az olvasó elsajátíthatja a grafikus megjelenítést használó játékok készítésének alapjait és képessé válik önállóan játékprogramokat megtervezni és kivitelezni.

A könyv melléklete letölthető innen: http://www.bbs.hu/letoltes/gjp.zip

Elektronikus formában megvásárolható itt. (2990 Ft.)

 

Tartalomjegyzék:

1. BEVEZETÉS 15
2. SZÁMÍTÓGÉPES GRAFIKA EGYKOR ÉS MA 21
2.1. Történelmi visszatekintés 21
2.2. A jelen 23
2.2.1. A párhuzamosítás diadala 23
2.2.2. Hibrid teljesítménynövelés 24
2.2.3. Filmipar 25
2.2.4. A videojátékok és a filmipar 25
2.2.5. Otthoni felhasználás és játékipar 26
2.2.6. Dizájn és reklámipar 26
2.2.7. Tudomány, kutatás 26
2.3. Nagyteljesítményű grafikus API-k 26
2.3.1. OpenGL 27
2.3.2. Vulkan 28
2.3.3. OpenGL ES 28
2.3.4. WebGL 28
2.3.5. Stage 3D 28
2.3.6. DirectX 29
2.4. A Microsoft grafikus programozási felületei 29
2.4.1. GDI 29
2.4.2. GDI+ 29
2.4.3. Direct2D 30
2.4.4. Direct3D 30
2.4.5. OpenGL implementáció 30
2.5. Játékfejlesztő platformok 30
2.6. OpenGL vs DirectX 31
3. FEJLESZTŐESZKÖZÖK BEMUTATÁSA 32
3.1. Programozási nyelvek és online dokumentációk 32
3.1.1. Adobe AIR, ActionScript, Flex 32
3.1.2. MSDN, WIN32 API, Visual C++ 35
3.1.3. HTML5 / JavaScript 36
3.2. Microsoft Visual Studio Community Edition 37
3.2.1. A fejlesztőeszköz kipróbálása 39
3.2.2. Régi típusú függvények - figyelmeztetés kikapcsolása 46
3.2.3. Külső könyvtárak hozzáadása projektekhez 46
3.2.4. Hibakeresés Visual Studioban 47
3.3. DEV C++ - Alternatív C fejlesztőeszköz 48
3.3.1. A fejlesztőeszköz kipróbálása 50
3.4. A Flash Builder 54
3.4.1. Az Adobe AIR platformról 54
3.4.2. A Flash Builder és a mobilvilág 55
3.4.3. A Flash Builder telepítése 56
3.4.4. A Flash Builder kezelőfelülete 59
3.4.5. Mobilprojekt létrehozása 60
3.4.6. Az -app.xml fájlról 65
3.4.7. Az alkalmazások Flex forráskódja 67
3.4.8. Az első futtatás 69
3.4.9. Kész alkalmazások publikálása 71
3.4.10. Projektek exportálása, importálása 74
3.4.11. A Flash Builder haladó szintű használata 75
3.5. FDT - Ingyenes Flash fejlesztőeszköz 82
3.5.1. A fejlesztőeszköz kipróbálása 83
3.5.2. Alkalmazások publikálása 89
3.6. AIR alkalmazások parancssoros csomagolása 91
3.7. Flex SDK beszerzése 93
3.8. Androidos alkalmazások publikálása a Play Áruházban 96
3.9. JavaScript fejlesztőeszköz 97
4. PROGRAMOZÁSI ALAPISMERETEK 98
4.1. Adattípusok, változók 98
4.1.1. ActionScript 99
4.1.2. JavaScript 101
4.1.3. Visual C/C++ 101
4.2. Utasítások 102
4.3. Megjegyzések a kódban 102
4.4. Operátorok és precedenciák 103
4.4.1. ActionScript 103
4.4.2. JavaScript 104
4.4.3. Visual C/C++ 105
4.5. Elágazási szerkezetek 106
4.5.1. if .. else 106
4.5.2. switch 107
4.6. Ciklusok 108
4.6.1. Előltesztelő ciklus (while) 108
4.6.2. Hátultesztelő ciklus (do .. while) 108
4.6.3. Számláló ciklus (for) 109
4.7. Függvények 110
4.7.1. ActionScript 110
4.7.2. JavaScript 111
4.7.3. Visual C/C++ 112
4.8. Osztályok 113
4.8.1. ActionScript 113
4.8.2. JavaScript és Visual C/C++ 114
4.9. Flex kódok 115
4.9.1. XML forráskódok írása 115
4.9.2. Megjegyzések a kódban 116
4.9.3. Általános tulajdonságok 116
4.10. Az ActionScript kód beágyazása Flex kódba 119
5. PLATFORMORIENTÁLT PROGRAMOZÁSI ALAPISMERETEK 120
5.1. Ablakos alkalmazás létrehozása Visual C/C++ nyelven 120
5.1.1. A legegyszerűbb ablakos program 121
5.2. Ablakos alkalmazás létrehozása ActionScript/Flex nyelven 134
5.3. HTML5 webalkalmazás létrehozása 137
6. RAJZPROGRAMOZÁSI ALAPISMERETEK 139
6.1. A rajzolás alapjai Visual C/C++ nyelven 140
6.1.1. Üzenetalapú rajzolás 140
6.1.2. Alapvető képernyőadatok lekérdezése 141
6.1.3. A rajzvászon 142
6.1.4. RGB színek megadása 142
6.1.5. A vonalszín beállítása 143
6.1.6. Ecsetbeállítások, kitöltőszínek 143
6.1.7. Vonalak rajzolása 144
6.1.8. Vonalsorozatok kirajzolása 144
6.1.9. Négyzet rajzolása 145
6.1.10. Kör és ellipszis rajzolása 146
6.1.11. Poligon rajzolása 147
6.1.12. Szöveg kiíratása 147
6.1.13. A rajzvászon törlése 151
6.1.14. Koordinátarendszer transzformáció 151
6.2. A rajzolás alapjai ActionScript/Flex nyelven 154
6.2.1. A renderelés minőségének beállítása 154
6.2.2. Alapvető képernyőadatok lekérdezése 155
6.2.3. A rajzvászon 155
6.2.4. A rajzecset 156
6.2.5. Ecsetbeállítások 156
6.2.6. Színek megadása RGB kódokkal 157
6.2.7. Képpontok rajzolása 157
6.2.8. Bittérkép-alapú rajzolás és képforgatás 158
6.2.9. Vonalak rajzolása 162
6.2.10. Vonalsorozatok kirajzolása 162
6.2.11. Görbék rajzolása 163
6.2.12. Négyzet rajzolása 163
6.2.13. Kör és ellipszis rajzolása 164
6.2.14. Kitöltőszínek és átlátszóság 164
6.2.15. Poligon rajzolása 165
6.2.16. Poligonok rajzolása vonalsorozattal 165
6.2.17. Szöveg kiíratása 165
6.2.18. A rajzvászon törlése 167
6.2.19. Színátmenetek létrehozása 167
6.2.20. Koordinátarendszer transzformáció 168
6.2.21. Képek gyorsítótárazása 171
6.2.22. Exportálás PNG formátumba 172
6.2.23. Exportálás JPG formátumba 173
6.3. A rajzolás alapjai HTML5 / Javascript nyelven 173
6.3.1. A rajzolás keretkódja 173
6.3.2. Alapvető képernyőadatok lekérdezése 174
6.3.3. A rajzvászon előkészítése 174
6.3.4. Rajzolási  és kitöltőszínek megadása 175
6.3.5. Geometriai alakzatok rajzolása 175
6.3.6. Szakaszok rajzolása (paths) 176
6.3.7. Vonalak rajzolása 177
6.3.8. Alakzatok lezárása 178
6.3.9. Területek levágása 178
6.3.10. Bezier görbék rajzolása 178
6.3.11. Kör rajzolása 179
6.3.12. Ellipszis rajzolása 179
6.3.13. Transzformációk 180
6.3.14. Szövegek megjelenítése 181
7. JÁTÉKPROGRAMOZÁSI ALAPTECHNIKÁK 183
7.1. A videojátékok világának felépítése 183
7.2. Irányítás 184
7.2.1. Billentyűleütések 185
7.2.2. Több billentyű lenyomása 187
7.2.3. Egér kezelése 193
7.2.4. Dedikált játékvezérlő használata 196
7.2.5. Irányítás Androidon 211
7.3. Zene, hangok kezelése 215
7.3.1. ActionScript 215
7.3.2. Visual C/C++ 216
7.3.3. JavaScript 217
7.4. Képek megjelenítése 220
7.4.1. ActionScript 220
7.4.2. Visual C/C++ 220
7.4.3. JavaScript 222
7.5. Időzítők használata 223
7.5.1. ActionScript 224
7.5.2. HTML5 / JavaScript 225
7.5.3. Visual C/C++ 225
7.6. Benchmarking házilag 226
7.6.1. ActionScript 227
7.6.2. HTML5 / JavaScript 227
7.6.3. Visual C/C++ 228
7.7. Többszálú programok készítése 228
7.7.1. Szálak és magok 229
7.7.2. Pár gondolat a magok számáról 230
7.7.3. Többszálúság a gyakorlatban 230
7.8. BMP fájlformátum alacsony szintű kezelése 238
7.8.1. Kép mentése 239
7.8.2. Kép betöltése és megjelenítése 241
7.9. TGA fájlformátum alacsony szintű kezelése 243
7.9.1. Kép mentése 243
7.9.2. Kép betöltése és megjelenítése 244
7.10. Saját képformátum létrehozása 245
7.10.1. Tömörítés nélkül 245
7.10.2. Tömörítés #1 246
7.10.3. Tömörítés #2 246
7.11. Képernyőkezelés Androidon 249
8. 2D PROGRAMOZÁSI ALAPISMERETEK 251
8.1. Szögek és radiánsok átváltása 251
8.2. Programváz 252
8.3. Eltolás 253
8.4. Nagyítás, kicsinyítés 255
8.5. Forgatás 256
8.6. Vizuális művészet 2D-ben 259
8.7. Hol legyen az origó? 261
8.8. Koordinátarendszerek 262
8.8.1. Az origó módosítása 262
8.8.2. A koordinátarendszer beosztásának módosítása 263
8.9. Animáció, dupla pufferelés 263
8.9.1. A technika leírása 264
8.9.2. Implementáció 265
9. 2D JÁTÉKPROGRAMOK KÉSZÍTÉSE 269
9.1. Háttéranimációk programozása 269
9.1.1. Csillagok térbeli mozgatása 269
9.1.2. Csillagok párhuzamos horizontális mozgatása 272
9.1.3. Vízbe hulló esőcseppek 274
9.1.4. Animált eső 275
9.1.5. Hó, falevelek hullása 277
9.1.6. Folyadékcseppek folydogálása 278
9.2. Táblás játék elkészítése - Amőba 278
9.2.1. Tervezés 278
9.2.2. A játéklogika megalkotása 279
9.2.3. A játék változóinak létrehozása 280
9.2.4. A játék inicializálása 281
9.2.5. Felhasználói interakció kezelése 285
9.2.6. A játékállapot elemzése 290
9.2.7. Mesterséges intelligencia 298
9.2.8. A végeredmény 321
9.2.9. Javaslatok 321
9.3. Felülnézetes játék készítése - Űrcsata 322
9.3.1. Tervezés 322
9.3.2. A játéklogika megalkotása 322
9.3.3. Az űrhajók megalkotása 323
9.3.4. A játék változóinak létrehozása 324
9.3.5. A játék inicializálása 328
9.3.6. Felhasználói interakciók kezelése 331
9.3.7. A játékállapot kezelése 334
9.3.8. Kiegészítő függvények 341
9.3.9. Megjegyzések az Android verzióhoz 353
9.3.10. A végeredmény 356
9.3.11. Javaslatok 356
9.4. Az ügyességi játékok alapjai 357
9.4.1. Tanulmányprogram elkészítése 358
9.5. Ügyességi játék készítése - Krumpli futam 365
9.5.1. Tervezés 365
9.5.2. A játéklogika megalkotása 367
9.5.3. Grafikák 367
9.5.4. A játék változóinak létrehozása 369
9.5.5. A játék inicializálása 376
9.5.6. A krumpli adatainak kezelése 381
9.5.7. Felhasználói interakció kezelése 383
9.5.8. A game loop 388
9.5.9. Segédfüggvények 400
9.5.10. Megjegyzések a WIN32 verzióhoz 411
9.5.11. Megjegyzések az Android verzióhoz 411
9.5.12. A végeredmény 415
9.5.13. Javaslatok a játék továbbfejlesztésére 416
10. 3D PROGRAMOZÁSI ALAPISMERETEK 417
10.1. 3D grafika 3D nélkül 418
10.2. A térbeli gondolkodás kialakítása 420
10.2.1. 3D algoritmusok házilag 421
10.3. A forgatás algoritmusa 426
10.3.1. C nyelvű algoritmusok 427
10.3.2. ActionScript 431
10.3.3. JavasScript 432
10.4. Mélységi rendezés 433
10.4.1. Levágások, szűrések megjelenítés előtt 435
10.4.2. ActionScript 436
10.4.3. Visual C/C++ 437
10.4.4. JavaScript 438
10.5. Tanulmányprogram 439
10.6. Videó készítése 3d objektumok forgatásáról 450
11. 3D MODELLEK KÉSZÍTÉSE HÁZILAG 453
11.1. Tanácsok otthoni grafikus munkaállomás építéséhez 453
11.2. Bevezetés a Blender használatába 458
11.2.1. A Blender telepítése 458
11.2.2. A Blender alapszintű alkalmazása 460
11.2.3. Modellek importálása 467
11.2.4. Munka modellekkel 469
11.3. Bevezetés az Anim8or használatába 474
11.3.1. Telepítés 474
11.3.2. Kezelőfelület 475
11.3.3. Modellek importálása 476
11.3.4. Munka modellekkel 477
11.4. Modellek exportálása és megjelenítése 478
11.4.1. Az .OBJ formátum bemutatása 479
11.4.2. Modellek exportálása Blenderben 480
11.4.3. Modellek exportálása Anim8orben 481
11.4.4. Modellek előállítása programból 483
11.4.5. Modellmegjelenítő készítése 484
11.5. Kódgeneráló segédprogram 3d adatokhoz 497
11.5.1. Teljes generált JavaScript példakód 499
11.6. 3D poligonok színbeállításai 500
12. 3D JÁTÉKPROGRAM KÉSZÍTÉSE 503
12.1. Lövöldözős játék - Aszteroida mező 503
12.1.1. A 3d algoritmusok átdolgozása 504
12.1.2. Tervezés 523
12.1.3. 3d objektumok létrehozása 524
12.1.4. A játék változóinak létrehozása 529
12.1.5. A játék inicializálása 536
12.1.6. Felhasználói interakció kezelése 539
12.1.7. A game loop 541
12.1.8. Segédfüggvények 555
12.1.9. Megjegyzések az Android verzióhoz 562
12.1.10. A végeredmény 565
12.1.11. Javaslatok a játék továbbfejlesztésére 566
13. HALADÓ GRAFIKUS PROGRAMOZÁSI ISMERETEK 567
13.1. A GDI+ használata 567
13.1.1. A GDI+ inicializálása 567
13.1.2. A rajzvászon 568
13.1.3. Rajzminőség beállítása 568
13.1.4. RGB színek és átlátszóság megadása 569
13.1.5. Ceruza beállítása 569
13.1.6. Ecsetbeállítások 570
13.1.7. Vonalak rajzolása 570
13.1.8. Alakzatsorozatok 570
13.1.9. Négyzet rajzolása 573
13.1.10. Kör és ellipszis rajzolása 574
13.1.11. Szövegek kiírása 574
13.1.12. A rajzvászon törlése 575
13.1.13. Külső képfájlok betöltése 575
13.1.14. Gemoetriai transzformációk 580
13.1.15. Példaprogram 581
13.2. OpenGL 584
13.2.1. Hogyan kezdjünk hozzá? 584
13.2.2. Az első OpenGL programunk 585
13.2.3. Pixelformátum beállítása 591
13.2.4. OpenGL kontextus kezelése 592
13.2.5. Alapbeállítások 593
13.2.6. OpenGL tulajdonságok ki- és bekapcsolása 593
13.2.7. Mátrixműveletek 594
13.2.8. Nézeti keret és perspektíva beállításai 594
13.2.9. Geometriai transzformációk 595
13.2.10. Színek megadása 596
13.2.11. Átlátszóság beállítása 596
13.2.12. Élsimítás bekapcsolása 597
13.2.13. Pont és vonalméret megadása 597
13.2.14. Poligonok megjelenítési stílusa 597
13.2.15. Rajzolás glBegin és glEnd függvényekkel 598
13.2.16. Objektumok rajzolása közvetlenül a displaylistre 600
13.2.17. Quadric objektum típusok 601
13.2.18. Példaprogram - Egyszerű négyzet kirajzolása 603
13.2.19. Példaprogram - Négyzet forgatása 604
13.2.20. Példaprogram - Alakzatok kirajzolása és forgatása 605
13.2.21. Példaprogram  - .OBJ 3D nézegető 612
13.3. DirectX alkalmazások 618
13.3.1. Hogyan kezdjünk hozzá? 618
13.4. CUDA 619
13.4.1. Hogyan kezdjünk hozzá? 619
13.4.2. Egyszerű példa 619
14. VR ALKALMAZÁSOK 621
14.1. Működési elvek 621
14.2. A side-by-side módszer bemutatása 621
14.3. Példaprogram okostelefonra 624
14.4. Javaslatok az alkalmazás továbbfejlesztésére 626
15. ZÁRÓ GONDOLATOK 627
16. FÜGGELÉK 628
16.1. ASCII karakterkódok 628
16.2. Színkódok 629
16.3. 3D modellek prezentációja 629
16.4. 2D grafika térképalkalmazásokban 630
16.5. 3D grafika térképalkalmazásokban 632
16.6. Ajánlott irodalom 634