Navigate / search

S1E13: Hogyan írjunk online játékot?

Egy hónappal ezelőtt Balázstól kaptunk egy igen érdekes kérdést: böngészős játékot szeretne írni.

Kedves Balázs! A böngészős játék írása talán a legtöbbet kérdezett, ám legkevesebbet megválaszolt kérdés a szakmai körökben. Műszakilag rengeteg minden kell hozzá, éppen ezért nem kis fába vágod a fejszédet. A kérdésedet annyira jónak éreztük, hogy szeretnénk megajándékozni a Javascript – The Definitive Guide című könyvvel és projektedhez sok sikert kívánunk.

Kezdjük a könnyű részével. A játékvilág ábrázolásához sokan az úgynevezett izometrikus látásmódot választják, ugyanis az ilyen játékelemeket még közepes rajztudással is meglehetősen egyszerű elkészíteni. Ebben az ábrázolásban két dimenziós alkotóelemeket rajzolunk, majd helyezünk egymásra. Ezek a spriteok.

A spriteok elkészítéséhez két képzeletbeli vonalat rajzolunk fel, amik a vízszintessel körülbelül 30 fokos szöget zárnak be. Az spriteok vonalai pedig egymással teljesen párhuzamosak, nem közelítenek egymáshoz, mint egy valódi 3D nézetben.

Amikor a teljes képet rajzoljuk, először rajzoljuk a hátrébb lévő elemeket, majd erre rá az előbb lévőeket. Természetesen egy játékmezőn belül is használhatunk több sprite-ot, amely esetben el kell tárolnunk a spriteok sorrendjét.

Nade, nézzük, hogyan is néz ki ez a gyakorlatban.

Természetesen a játékmotor nem fogja ilyen változatosan leszórni az elemeket, hanem mindig szigorúan hátulról előre haladva dolgozik. Szerencsére ezzel vajmi kevés dolgunk lesz, hiszen kész játékmotorok egész hada várja, hogy bevessük őket. Ezekről egy igen kiváló áttekintést nyújt a html5gameengine.com oldal. Itt nem csak izometrikus játékok készítésére alkalmas motorokat találunk, hanem többek között WebGL-t támogatókat is. Ilyen például a HelloRun alatt futó three.js is.

Ha választottunk frontend game enginet, ideje rátérni a backendre. A technológia kiválasztásánál körültekintően kell eljárni, a játékműködéstől függően nagyon különböző megoldásokra lehet szükségünk.

Az olyan nyelvek mint a PHP jók, ha hagyományos alkalmazásokat kell írnunk, viszont egy játék alatt hamar elvérezhetnek. Első játékként mindenképpen próbáljunk meg olyat készíteni, ami nem alapul két játékos közötti közvetlen interakción. Példaként megnézhetjük a temérdek Travian-klón egyikét, ahol a támadások ütemezve zajlanak le, előre tudható, hogy mikor kell feldolgozni a támadás eseményét.

Kezdetben itt elegendő lesz egyetlen feldolgozó szál, ami percenként fut. Ezt akár a rendszer crontabjából is el tudjuk indítani és feldolgozzuk az aktuális feladatokat. Egyetlen dologra kell csak figyelnünk, hogy a feldolgozó szál zárolja saját magát, ne tudjon véletlenül kettészer elindulni párhuzamosan. A későbbieben, ha szükség lesz rá, bővíthetjük a kapacitást és beüzemelhetünk egy úgynevezett queue rendszert is.

Ha olyan játékot írunk, amihez közel valós időben kell reagálni, akkor a HTTP protokoll helyett érdemes megfontolni a Websocketek használatát. NodeJS-sel és socket.io-val néhány milliszekundumos késleltetéssel tudunk üzeneteket eljuttatni az egyik játékostól a másikhoz. A NodeJS egy további előnnyel is rendelkezik: JavaScriptben írhatunk szerver oldali programokat.

Hogy ne csak elméletről legyen szó, készítettünk egy pici minta játékot a Phaser nevű keretrendszer segítségével. A forráskód mintegy 140 sornyi JavaScriptből áll és a github.com/webtudor/s1e13 oldalon érhető el tanulmányozásra.

Végezetül, de nem utolsó sorban szóljunk az üzleti modellról is. A böngészős játékok elég erőforrás-igényesek tudnak lenni, ezért egy közönséges webtárhely valószínűleg nem sokáig elegendő. Innentől kezdve pedig megugranak a játék üzemeltetésével kapcsolatos költségek is, tehát bevételre van szükség. Ráadásul abban a szerencsétlen helyzetben vagy, hogy a piac szép lassan telítődik és a játékosok már nem hajlandóak belemenni az olyan játékokba, amelyeknél fizetés nélkül óránként vissza kell jönni és etetni a tamagocsit. Éppen ezért érdemes vagy nagyon kicsi és nem erőforrásigényes játékot írni, vagy jól átgondolni, hogy miből kerül finanszírozásra a projekt.

Köszönjük Balázsnak ezt a kiváló kérdést. Ha Neked is van kérdésed és fel szeretnéd tenni, látogass el a webtudor.net/kerdesek weboldalra.

S1E12: Mit hoz a Drupal 8?

Néha nincs szükség saját fejlesztésre, sőt kifejezetten előnyös a kész megoldás. Ugyan a Drupal messze földön híres a magas belépő szintje miatt, de az ennek ellenére népszerű. A nagymúltú rendszer legújabb, 8-as verziója viszont radikális újdonságokat hoz.

Hogy mik is ezek? Erről fog mesélni a Drupal elismert hazai szakértője, Palócz István, a tanarurkerem.hu oktatási portál tulajdonosa és a nagysikerű Git Webtudor műsor előadója.

Az élő adás szokás szerint csütörtökön este 8-tól kezdődik YouTube-on.

S1E11: Minőségbiztosítás!

Bejön a főnök, látszik rajta, hogy ideges. Már megint valami elromlott az új projekten amit múlt héten kellett volna leadni. Ismerős a kép?

Ha szeretnéd elkerülni az ilyen helyzeteket és megtanulnád minőségbiztosítani a webes projektjeidet, gyere el és nézd meg élőben a Minőségbiztosítás! című előadásunkat YouTube-on.

Sőt! Ha bejösz adásba Skype-on keresztül és elmeséled a történetedet vagy kérdést teszel fel, esélyed van egy 10.000 Ft értékű, angol nyelvű szakmai könyvet nyerni!

Az előadás szokás szerint 8-kor kezdődik.

S1E10: Linux alapok fejlesztőknek

Ezen a héten egy kicsit rendszergazdai vizekre evezünk: mit fontos tudnia egy fejlesztőnek a Linuxról? Miert lényeges, hogy elboldoguljunk a konzollal? Megnézzük az alapvető Linuxos parancsokat, hogyan tudunk egy szoftvert kitenni „élesbe” és hogyan tudunk hibát keresni?

Csütörtökön este 8 órától élőben tekintheted meg a „Linux alapok fejlesztőknek” élőben, YouTube-on.

S1E9: UPC vs. Externet! – Mélyinterjú Angeli Jánossal

Talán senki mellett nem mentek el az elmúlt napok eseményei, aki az Internettel foglalkozik. Magyarországra is elérkezett eddig csak az amerikai hírekből ismert netsemlegességi háború. A sors iróniája, hogy éppen amikor a nagy tó túloldalán megoldódni látszik a vita, a hazai adatcserélő központ, a BIX környékén, éppen fellángol.

A UPC Magyarország ugyanis megszűntette a közvetlen adatcserét az Externettel. De mit is jelent ez? Hogyan kapcsolódnak egymáshoz a szolgáltatók és ki fizet kinek? Éppen ezt szerettük volna megtudni, úgyhogy felhívtuk Angeli Jánost, a BIX bizottság elnökét és a hazai webes közösség ismert alakját, hogy nyilatkozzon nekünk.

Csütörtökön, április 9-én, este 8 órától élő adásban láthatjátok Angelo interjúját, és természetesen szokás szerint kérdezhettek is, YouTube-on.

S1E6: Az adatbázis-kezelés

Ebben a kicsit hosszabb előadásban bevezetünk benneteket az adatbázis-kezelés világába. Ezt aztán a következő adásban fel fogjuk használni, hogy egy valódi, működő blogot írjunk PHP és Java nyelven.

Nézd meg ezt az adást március 19-én, csütörtökön élőben YouTube-on.

S1E5: Mi fán terem az MVC?

Időpontváltozás! Betegség miatt az előadás egy héttel később, március 12-én kerül megtartásra.

Ebben az előadásban megnézzük, hogy hogyan is érdemes szétbontanunk a programunkat úgy, hogy a HTML kód ne lógjon össze a többi résszel, az MVC (Model-View-Controller) tervezési mintával. Ez elő fogja segíteni a karbantarthatóságot és könnyebben átláthatóvá teszi az alkalmazásunkat.

Az előadás megtekinthető élőben az r.webtudor.net/s1e5 címen.

S1E4: A Git esete a verziókezeléssel

A következő előadásban István ( tanarurkerem.hu ) mesél nekünk arról, hogy miért is van szükségünk verziókezelésre és bevezet minket a Git alapjaiba.

A fájljaid különböző verzióit tartalmazó könyvtárhalmazodat már nem bírod átlátni? Állandóan felülírjátok egymás munkáit a kollégákkal? Szeretnéd tudni ki, mikor, mit és miért módosított az éles oldalon? Akkor neked egy verziókezelő rendszer kell. Azok közül is az egyik legjobb a Git. Ha szeretnéd megismerni, itt a kitűnő alkalom, az adás február 26-án este 8-kor kezdődik és megtekinthető YouTube-on.

S1E3: Az OOP Java most jön

A következő előadásunkban Krisztián mutatja be az OOP működését a Java programnyelven. Az előadásban hivatkozunk az előző részekben tanultakra.

A bevezetőben pár perc alatt tisztázunk néhány a Java-hoz kapcsolódó közösségi beidegződést.

Betekintünk a Java OOP világába és az előző adás alkalmával PHPs környezetben létrehozott blog-ot átültetjük Java környezetre.

A végén kicsit továbblépünk, és megismerkedünk néhány objektum létrehozással kapcsolatos tervezési mintával, majd egy egyszerű Servlet segítségével felpakoljuk az egész eddig tanult dolgokat webes környezetbe.

Az előadás február 19-én este 8-kor kezdődik és megtekinthető YouTube-on.