NextSuli LMS
← Kurzusok

PyOpenGL játékfejlesztés — 1. rész: Survival

Pro

10 hetes kurzus — minden héten elmélet, gyakorlat és kvíz.

Python, Pygame és PyOpenGL segítségével lépésről lépésre építesz egy bullet-heaven stílusú túlélő játékot.

A teljes tananyag eléréséhez bejelentkezés szükséges. Bejelentkezés Az 1. hét elméleti anyaga ingyenesen olvasható.

Tanmenet

Hét 1GDD és scope

Gyakorlat

  • 1. alkalom — Gyakorlat: GDD kitöltés

    Elkészíteni a játék mini-GDD dokumentumát. Ez a kurzus „tervrajza” — később minden kód innen kap értékeket.

  • GDD feladatlap — 1. alkalom

    Példa: „Felülnézetből túlélő játék, ahol ellenségek ellen kell harcolni, XP-t gyűjtünk és szintet lépünk.”

Kvíz

Hét 1 — kvíz — hozzáférés szükséges

Hét 2Pixel art és GDD asset

Elmélet

  • Pixel Art alapok

    > a GDD-ben leírt kinézetet itt rajzolod meg (2. alkalom).

  • Licencelés és CC0 assetek

    Ha más készítette a képet, jogilag tudnod kell, mit szabad vele csinálni:

  • GDD és sprite — hogyan kapcsolódnak?

    > A GDD-ben leírod, mit akarsz látni. A sprite fájl magát a képet tartalmazza.

Gyakorlat

  • 2. alkalom — Gyakorlat: Pixel art, assetek és GDD

    A 1. alkalom GDD-jének vizuális részét megvalósítani: 7 sprite fájl + frissített GDD asset szekció.

  • Asset checklist

    Minden fájl PNG, átlátszó háttérrel (kivéve floor).

  • GDD vizuális brief — 2. alkalom

    > Töltsd ki a GDD asset szekciójához. Ha még nincs GDD, először fejezd be az 1. alkalom feladatlapját.

Kvíz

Hét 2 — kvíz — hozzáférés szükséges

Hét 3Ablak, OpenGL, GDD ↔ config

Elmélet

  • Python, Pygame és PyOpenGL kapcsolata

    ┌─────────────┐ ┌─────────────┐ ┌─────────────┐

  • GPU és koordináta-rendszer

    A Graphics Processing Unit (videókártya) párhuzamosan dolgozik – ezért tud 500 sprite-ot gyorsabban rajzolni, mint a CPU.

  • glBegin / glEnd – Immediate Mode

    A legrégebbi OpenGL rajzolási mód: minden vertex-et külön adsz meg.

Gyakorlat

  • 3. alkalom — Gyakorlat: Első ablak

    Pygame ablak megnyitása, fehér teszt-négyzet OpenGL-lel — és GDD ↔ config összehasonlítás.

  • GDD ↔ config összehasonlítás — 3. alkalom

    > Cél: Lásd, hogy a GDD számok ugyanazok, mint amit a játék használ.

  • Setup checklist

    - [ ] Python 3.12 vagy újabb (`python --version`)

Kvíz

Hét 3 — kvíz — hozzáférés szükséges

Hét 4Mozgás, kamera, delta time

Elmélet

  • Input kezelés és game loop

    Két mód van input olvasásra:

  • glTranslatef és kamera-követés

    Eltolja a rajzolási origót. Minden utána rajzolt dolog az eltolás relatív:

  • Delta Time (dt)

    Ha a mozgást frame-enként fix pixellel csinálod:

Gyakorlat

  • Week 04 – Gyakorlat: WASD mozgás és kamera

    A teszt-négyzet/játékos mozgása WASD-vel, kamera-követés és rács háttér.

Kvíz

Hét 4 — kvíz — hozzáférés szükséges

Hét 5Textúrák és alpha blend

Elmélet

  • Textúra betöltés

    A textúra egy kép a GPU memóriájában. OpenGL nem tud közvetlenül PNG-t – mi betöltjük Pythonnal, majd átküldjük.

  • glBindTexture és szűrés

    Alapértelmezetten OpenGL simítja (blur) a textúrákat. Pixel art-nál ez ronda:

  • Alpha keverés (Blend)

    PNG átlátszó hátterrel betöltve, OpenGL nem tudja az alpha-t automatikusan:

Gyakorlat

  • Week 05 – Gyakorlat: Textúrák és alpha

    A fehér négyzet helyett pixel art hős és textúrázott talaj megjelenítése.

Kvíz

Hét 5 — kvíz — hozzáférés szükséges

Hét 6Lövedékek és auto-fire

Elmélet

  • Objektum lista – lövedék menedzsment

    Minden lövés = egy objektum. Nem tudjuk előre, hány lesz – dinamikus listát használunk:

  • Irányvektor és nyíl forgatás (sablon)

    > Nem kell szögfüggvény! A kurzus kész lookup táblát ad 4 irányhoz.

Gyakorlat

  • Week 06 – Gyakorlat: Nyilakkal lövés (auto-fire)

    Nyíl billentyű tartásával folyamatos lövés 4 irányba, listában tárolva.

Kvíz

Hét 6 — kvíz — hozzáférés szükséges

Hét 7Ellenség spawner

Elmélet

  • Spawner logika

    Az ellenség a képernyőn kívül jelenjen meg, de a játékos felé fusson:

  • Három ellenségtípus

    Az ellenség viselkedését a `game/config.py` definiálja – ne hardcode-old!

Gyakorlat

  • Week 07 – Gyakorlat: A horda érkezése

    3 ellenségtípus folyamatos spawn-olása a képernyőn kívül, játékos felé mozgással.

Kvíz

Hét 7 — kvíz — hozzáférés szükséges

Hét 8Ütközés és HUD

Elmélet

  • Kör-kör ütközésdetektálás

    Két kör ütközik, ha a középpontjaik közelebb vannak egymáshoz, mint a sugarak összege:

  • Lineáris nehezedés

    Ha állandó spawn rate lenne, a játék unalmas lenne. Az idő múlásával egyre több ellenség jön.

  • HUD OpenGL-ben – gl_overlay

    Ha a display `DOUBLEBUF | OPENGL` módban van, a Pygame surface-re rajzolt UI nem megbízható:

Gyakorlat

  • Week 08 – Gyakorlat: Ütközések és nehezedés

    Lövedék-ellenség és ellenség-játékos ütközés, HP bar (OpenGL HUD), lineáris nehezedés.

Kvíz

Hét 8 — kvíz — hozzáférés szükséges

Hét 9XP és szintlépés

Elmélet

  • XP és mágnes mechanika

    Ellenség halálakor:

  • Szintezési görbe és upgrade-ek

    A GDD-ből (`docs/gdd_template.md`):

  • Játékállapotok és level up — 9. alkalom

    > A játéknak „üzemmódjai" vannak — mint a TV csatornák között váltás.

Gyakorlat

  • Week 09 – Gyakorlat: XP és szintlépés

    XP gyémántok drop-olása, mágnes felvétel, level up menü 3 upgrade opcióval.

Kvíz

Hét 9 — kvíz — hozzáférés szükséges

Hét 10Batch render és FPS

Elmélet

  • CPU-GPU szűk keresztmetszet

    500 zombi × `glBegin`/`glEnd` = 500 külön OpenGL hívás frame-enként.

  • Vertex Arrays

    Egy tömbben tárolod az összes vertex adatot, majd egy hívással rajzolod:

  • Batch rendering

    class SpriteBatch:

  • Teljes játék és vezérlés — 10. alkalom

    > Cél: Week 10 = ugyanaz a játékélmény, mint `main_done.py`.

Gyakorlat

  • Week 10 – Gyakorlat: Optimalizálás és bemutató

    Ellenség renderelés Vertex Array batch-csel, FPS mérés, kurzus bemutató.

Kvíz

Hét 10 — kvíz — hozzáférés szükséges