Ugrás a fő tartalomra

Mi a vektor Viktor?

  Újabb hosszú idő után eljött az idő, hogy újabb "tanulságos" blog bejegyzést írjak játék fejlesztés téma körében. Ahogy talán a címből kiderül vektorokról fogok mesélni, hogy micsoda és hogy mire lehet használni őket.
  Gondolom hozzám hasonlóan sokan vannak úgy, hogy amit az ember az iskola alatt tanul annak a nagy részét soha nem fogja tudni használni. Ez alól kivétel a vektor,  ha az ember játékfejlesztéssel foglalkozik. Játékfejlesztés egyik szépsége, hogy nagyon sok mindenre megtanít és megmutatja, hogy mire lehet a megtanult dolgokat használni.

Mi a vektor?
  Elég a szócséplésből és inkább térjünk rá a lényegre. A vektort gyakorlatilag 2 dolog alkotja: irány és mennyiség. Vektort gyakorlatban nyíllal szoktuk jelölni, ami egy kezdőpontból egy végpontba mutat és a menyisége pedig a nyílnak a hossza.

Na de mire jó ez a mi esetünkben?
  A játékok általánosságban akkor izgalmasak, hogyha mozognak benne a dolgok és ahogy fizikából megtanultuk, ahol mozgás van ott vektornak is kell lennie. Tehát a vektorok tökéletesek mozgások leírására.

Hogyan programozzuk ezt le?
  Legegyszerűbb dolgunk a a mennyiséggel van mivel ez egy egyszerű szám, amit el kell tárolnunk.
Mozgás esetében a mennyiség lehet például a sebesség.
Irány sem sokkal nehezebb, mivel ehhez érdemes egy egyszerű irány vektort használni, aminek a hossza 1 és a kezdő pontja a koordináta rendszer origója vagyis (0,0), ami miatt csak a végpont koordinátáit(x,y) kell eltárolnunk.

Irány vektor


WTF vektor a vektorban?
  Tudom tudom, de így lehet a legegyszerűbben elmagyarázni, hogy hogyan is kell irányt megadni.
Gyakorlatilag ez nem más mint egy iránytű, ami megmutatja, hogy egy adott játék elem milyen irányba mozog.

Aha, de hogy használom őket együtt?
  Mozgások esetében a mennyiség a sebesség lesz és az irány pedig a test mozgási iránya. Ebben az esetben csak annyi a dolgunk, hogy összeszorozzuk őket. Így pedig megkapjuk a vektort, ami gyakorlatilag elmondja, hogy a test milyen sebsebéggel mozog x és y irányban.

Triviális esetek:
Sebsebég: 300
Felfelé alkarunk haladni, akkor irányvektor: (x:0,y:1). Ezeket összeszorozva(x:0*300,y:1*300), ezt a vektort kapjuk: (x:0,y:300)
Gondolom innen már sejhető, hogy lefelé a vektor: (x:0,y:-300), balra a vektor: (x:-300,y:0) és jobbra a vektor: (x:300,y:0).

Nem triviális esetek:
  Szerintem az átlós mozgások nem triviálisak, mivel több fajta módon is be lehet állítani az irány vektort:
1. Kiszámoljuk az irányvektor végpontját az x tengely és az irányvektor közötti szög alapján. Például: cos(30) = 0.866, sin(30) = 0.5, tehát az irány vektor: (x:0.866,y:0.5)
2. Elforgatunk egy adott irányvektor, hogy az átlósan álljon.
3. Összeadunk két merőleges vektort és a keletkező vektort lezsugorítjuk, hogy a hossza 1 legyen.

Összegezve:
  Lényegében a vektorok a játékfejlesztésben tökéletesek a mozgások leírására és ezért alapvető elemei egy fizikai motornak. Vektorok egyszerűek mivel csak menyiségből és irányból állnak. Használatuk is igen egyszerű, mivel minden nyelven találhatunk vektor könyvtárakat.
  Nekem szerencsém volt mivel StageXL-ben van egy vektor osztály, amivel megtudtam valósítani a vektor irány részét és így már csak a mennyiség része maradt, ami meg triviális feladat.

Kiegészítés:
  Mozgások esetében a sebességet is ábrázolhatjuk vektorral ha a sebességet felbontjuk horizontális és vertikális sebességre. Azért jó, mert ebben az esetben is két értéket kell eltárolni, mint az irányvektor esetében. Nem is beszélve a tényleges vektor megadásához csak össze kell szoroznunk a sebesség - és irány vektort.(Ami vektorok esetében egyszerű dolog)

Egy kis példa:
  DartRocket esetében vektorokat használtam a mozgási és irányrendszerek megoldásához.
DirectionSystem: Irányokkal való munkát segíti és definiál néhány triviális irányt.
MovementSystem: Mozgások leírását és velük való munkát segíti. 

Bónusz: 

Megjegyzések

Népszerű bejegyzések ezen a blogon

Python kezdőknek

Itt a nyár és mivel lehetne ezt a legjobban megünnepelni, mint egy kígyóról elnevezett programozási nyelv bemutatásával. Következőkben tehát a Python programozási nyelvről lesz szó és annak lehetséges alkalmazásairól.

Miért tartsunk otthon Python-t? Python pályafutása 1991-ben kezdődött el egy Guido van Rossum nevű fejlesztőnek hála, aki egy olyan általános programozási nyelvet akart készíteni, amit nagyon könnyen el lehet sajátítani és használni. Az elmúlt év tizedek alatt a Python nyelv az egyik legjobb és legnépszerűbb általános programozási nyelvé nőtte ki magát, amit bizonyít, hogy számos operációs rendszeren(linux, mac os) alapból megtalálható a nyelv. De nézzük meg, hogy mitől ilyen népszerű: Egyszerűség: A nyelvnek az egyik legnagyobb előnye, hogy nagyon egyszerű és ezért például nagyon sok egyetemen a kezdő programozó legényeket Python segítségével vezetik be a programozás világába.Dinamikus: Mint minden dinamikus nyelvnek úgy Python-nak is van egy beépített REPL-je, ami nagyo…

Amikor érdemes játékmotort késziteni

A mondás
A játékkészítő közösségben van egy mondás, hogy "Készíts játékot, ne játékmotort".
Szerintem ez a mondás nagyon is igaz abból a szempontból, hogy ha tényleg játékot akarsz készíteni, akkor válasz egy jól ismert játékmotort és kezd el a fejlesztést, mivel ezek az eszközök azért vannak, hogy megkönnyítésék a játékkészítést  és ugyebár mi értelme van feltalálni a kereket ismét?
Viszont itt is lehet találni kivételeket, amikor igenis el kell gondolkozni egy saját játékmotor fejlesztésén.

Mikor érdemes tehát belefogni?
 Most csak az én esetemet tudom felhozni, ami nem más mint a saját 2D HTML5 játékmotorom, amit DartRocket- nek hívok. Az én esetemben az ok egyszerű volt. Dart nyelven nem volt egy igazi játékmotor sem és én Dart-ban akartam játékokat készíteni.
Itt találtam is egy kiskaput mivel ha nincs játékmotor, akkor csinálni kell egyet. :D


Hogyan kezdődőt el?
Ha időrendben akarok menni, akkor azt kell mondanom, hogy négy időszak volt, ami meghatározó volt.

Phaser: Ebb…

Javascript kezdő lépések

Ma kis bejegyzésem arról fog szólni ,hogy mit érdemes kezdő lépésenként megtanulni ,illetve ,hogyan érdemes haladni Javascripttel és néhány érdekesség is lesz node.js-sel kapcsolatban.

Tanulás
   Szerencsére olyan világba élünk már ,ahol a web és webes technológiák nagyon gyorsan fejlődnek és ezért ezeknek a tanulása is egy fajta fejlődésen ment keresztül. Már nem könyvből kell tanulni ,hanem vannak olyan oldalak ahol interaktív módon lehet egy nyelvet megtanulni ,ami tökéletes a tanulás szempontjából. Előző cikkemben raktam be anyagokat ahhoz ,hogy mit érdemes elolvasni ,ha a tanuló inkább olvasós fajta és volt bent 2 interaktív.  Én például codecademy segítségével tanultam meg Jquery-t használni. Javascripthez Eloquent és codeacademy-t használtam.

   Mivel a Javascript elég megengedő ezért nagyon sok fajta stílusban kódolnak hozzá és ezek a stílusok  néha teljesen eltérőék. Szóval aki tanult már Java ,c vagy c++-t annak is lehet újdonság ,mivel ezeknél a nyelveknél nagyon szépen megv…