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: Ebben az időszakomban a Phaser+Javascript-es HTML5-ös játék készítéssel voltam elfoglalva. Nagyon sok időt töltöttem azzal, hogy megismerkedjem azzal, hogy hogyan érdemes vele játékot készíteni. Ezáltal megláttam azokat a dolgokat amik kelletek egy játék motorhoz és ami szerintem még fontos, hogy megtanultam API dokumentációt olvasni.
Phaser időszakom végére beleuntam, hogy nem tudtam igazán szépen strukturált kódot csinálni, még olyan eszközzel sem mint Require.js.

Dart+StageXL: Phaser-ből való kiábrándulásom után úgy voltam vele, hogy megpróbálok végre csinálni Dart-tal egy játékot. Ehhez választottam a StageXL nevezetű webGL render engine-t, amiről már jó sokat hallottam és volt hozzá néhány példakód. Az indulás döcögős volt, mert sokat kellet tanulnom Dartról és StageXL-ről. Főleg az utóbbi volt a nehezebb, mert elég hiányos hozzá a dokumentáció.
Elsőként csináltam egy space invaderes játékot és néhány kísérletet, míg végül rájöttem, hogy közeleg LD29 játékkészítő kihívás. 

LD29: Azt tudni kell, hogy a legutóbbi LD óta részt akartam venni rajta, mivel nagyon megtetszett a kihívás. Tudtam, hogy kell valami különleges dolog, amivel kitűnhetek a tömegből ezért gondoltam, hogy a játékomhoz szinteket fogok csinálni. A szintekhez meg kellet egy állapot gép(state machine), ami segítségével tudok szépen egyszerűen szinteket csinálni. Végül az egész verseny ennek a kifejlesztésére ment el és az előkelő 1200 valahányadik lettem összetettben. 

LD29 után: Észrevettem, hogy a játékom egy hatalmas hack, tele copy-paste-tel és még lassan is ment vele a fejlesztés. Ezért tudtam, hogy a következő kihívásra kell csinálnom egy játékmotort, hogy ne kelljen olyan dolgokkal vesződnöm, amik csak rabolják az ember idejét.
 Tehát volt egy problémám, ami az volt, hogy Dart-nak nincs játékmotorja és én tudtam, hogy ez egy olyan probléma, amit megtudok oldani és ezért fontos problémává vált számomra, amiért el is kezdtem rajta dolgozni.

Hogyan kezdtem hozzá?
 Szerintem egy játékmotor legfontosabb része az állapot gép, mivel ahhoz, hogy a játék szép és strukturált legyen, előbb fel kell az bontani állapotokra. Szerencsére LD29 alatt meglett ez a fontos hozzávaló. 
 Egy másik fontos hozzávaló maga StageXL volt, mivel már volt egy alapom amire építhetem az egész rendszert így nem kellet nulláról kezdenem. StageXL a játékmotorom szempontjából olyan, mint Phasernek Pixi.js.(Pixi.js egy 2D webGL renderer)
 Harmadik fontos dolog maga a célkitűzés, mert nem mindegy, hogy mi az. Én ugyanazokat az elveket vallom mint Phaser-t készítő Rich, vagyis csinálni egy olyan játékmotort, ami egyszerű, ami így magában hordozza, hogy egyszerű megérteni és használni.

 Ezeket mind észben tartva kezdtem meg a fejlesztést és miután lett egy kézzel fogható változat négy dolgot csináltam:
  • Csináltam egy Github repot és feltöltöttem oda és így mindenki elérhet
  • Feltöltöttem Dart-nak a csomag kezelőjére vagyis Pub-ra
  • Csináltam egy blogot DartRocket-nek és megcsináltam az első bejegyzést
  • Bejelentettem a Dart közösségnek, hogy mit csinálok
 Szerintem az egyik legfontosabb dolog, hogy a közösségnek bejelentettem, mivel ezáltal kaptam jó visszajelzéseket és nyomás alá is helyeztem magam, hiszen ezzel azt jelentettem be hogy ezt komolyan veszem és nyugodtan várjanak el jó munkát tőlem.

Mit remélek DartRocket-től?
 Amit a legjobban remélek, hogy valamennyire ismert lesz majd és néhányan veszik a bátorságot, hogy csináljanak vele egy játékot és közben tanuljanak magáról a Dart nyelvről. Ősszintén szólva az egyik ok, amiért elkezdtem az egészet, hogy népszerűsítsem a Dart nyelvet, mivel szerintem a nyelv nagyon is megérdemli és szerintem a játékkészítés egy nagyon hatásos módja annak, hogy másokkal megismertessünk egy nyelvvel.

Napi tipp:
 Nagyon tudom ajánlani Hamming előadását: You and your research(videó)(írott).
Számomra kiderült belőle, hogy mik is az igazán fontos problémák.
Akik nem szeretnek túl sokat olvasni vagy nézni azoknak mondom, hogy az előadás végén van egy összefoglaló.