Ez a hétvégém csak egyetlen egy dologról szólt, a versenyzésről. Összesen 2 online versenyen vettem részt. Amik ugyanazon a hétvégén voltak ezért egymástól vettek el időt, de nem panaszkodok.

1. codingame.comSkynet Revolution 

  A verseny 2 feladatból állt össze, amit egy általunk választott programozási nyelven kellet megvalósítani. Mivel mostanság nagyon rákaptam a Dart-tal való programozásra ezért ezt választottam fegyvernemnek. A feladatok félépítése nagyon egyszerű: van egy input, amire egy megfelelő outputtal kell szolgálni különböző tesztesetek alapján.(Inkább úgy mondanám, hogy teszteseteket kell teljesíteni)

  Az első feladat viszonylag könnyen teljesíthető volt, amire ajánlottan 1 órát volt érdemes száni. Nekem éppen sikerült vele 1 óra alatt végezni. Feladat lényege az volt, hogy egy motorost kellet átjuttatni a híd egyik oldaláról a másikra. A nehézség abból adódik, hogy ez a híd hibás és van  rajta lyuk, amit át kell ugratni megfelelő sebességgel. Feladathoz 4 parancsot tudtunk kiadni SPEED,WAIT,SLOW,JUMP. Ezeket a parancsokat körönként kellet kiosztani.
  Ez viszonylag könnyen teljesíthető volt mivel csak az volt a lényeg, hogy megfelelő sebességre gyorsítsunk aztán a megfelelő időpontban elugorjunk majd végül megálljunk.

  A második feladat leírásánál láttam, hogy ezt bizony nem fogom tudni megoldani. Ajánlott idő intervallum 2 óra volt, de mivel az egész verseny 4 órás volt ezért többet is rá lehetett száni.
A feladat annyiban változott meg az elsőhöz képest, hogy kevesebb volt az input és a hídon több sáv, motoros és lyuk volt amiknek változatos lehetett az elhelyezkedésük. 2 új paranccsal is gazdagodtunk UP és Down, amikkel sávot lehetett váltani. Feladat lényege, hogy átjuttassunk minimálisan előírt motoros menyiséget a híd túl végére. Az első feladatnál 6 teszt esett volt, ennél 12. Én csak a 4.-ik megoldásáig tudtam csak eljutni.

  Versenyre visszanézve megtanultam, hogy ad-hoc megoldás sosem célra vezető. Ezt főleg a 2. feladatnál érzékeltem. A másik, hogy a lehető legtöbb adatot kell begyűjteni egy feladat megoldásához.
Az utolsó pedig, hogy mindig van egy sokkal szebb megoldás mint az enyém. :D

Eredményeket itt megtaláljátok.

2. Ludum Dare 29 

Ludum Dare egy online játék készítő verseny, aminek 2 verseny kiírása van. Van egy 48 órás egyéni része, ami az egyik legnépszerűbb, amint Compo-nak hívnak és van egy 72 órás csapatatok számára,amit Jam-nek hívnak. Jam-et még egyéni versenyzők is szoktak csinálni ha kifogynak az időből.

  Én gondoltam egyet és kipróbáltam magam a 48 órás egyéni megméretetésen. Ezt már vagy egy hete terveztem, mivel mindig is ki akartam próbálni.
A másik ok amiért ki akartam próbálni, hogy előtte készülgetett a Dartban írt állapot gépem, amiről úgy gondoltam, hogy kész leszek vele a versenyre és igazam is lett mert tényleg kész lettem vele (Nagyjából).

  Gondolom kitaláljátok, hogy milyen nyelven ment a fejlesztés. :D Igen ismét Dart-ot választottam ki és hozzá segítségként pedig StageXL könyvtárat használtam, amiről már írtam az előző blog bejegyzésemben. Főleg azért használtam mivel tényleg megkönnyíti az ember dolgát egy 48 órás versenyen ha nem kell magával a megjelenítéssel szórakozni.

  Verseny egész jól indult. Sikerült összepárosítanom StageXL és  az általam készített állapot gép működését, amit boldogan vettem tudomásul. Csináltam néhány pixeles képet piskell segítségével és egy darab játszható szintet összedobtam segítségükkel.
Nagyjából ezzel elment egy nap, mivel közben még Skynet-re is fordítottam időt.

  Második nap már nem volt ilyen szerencsés, mivel előjött bennem a gondolat, hogy egy szintet újra játszhatóvá kéne tennem. Úgy voltam vele, hogy ezzel nem lesz semmi gond, de tévedtem.
Most nem mennék bele abba, hogy hogyan működik az állapot gépem, de azt elmondhatom, hogy nem sikerült a legegyszerűbb megoldás, ezért az állapot gépemnek azt a tulajdonságát kellet használnom, amit eddig még nem tudtam működésre bírni. Ezért először magán az állapot gépen  kezdtem el kísérletezgetni, hogy rájöjjek, hogy miért nem működik. Végül 2-3 óra múlva rájöttem, hogy 1 darab metódus hívást kellet kitörölnöm, hogy működésre bírjam.

  Mivel egy játék sosem olyan egyszerű, mint egy kísérlet ezért be kellet vezetnem egy kis üzenet küldő rendszert az állapot és az állapot kezelő között. Nem is beszélve az új adatszerkezet illetve logikáról, amit még hozzá kellet adnom, hogy működjön a dolog. Összességében viszont sokkal jobban kezelhetővé vált a dolog és végre egy szint újra játszható lett.

  Szóval a bug hunt után maradt hátra még 5 órám az egész versenyből és a játékom nem volt éppen élvezhető és nem is volt semmi célja. Kaptam néhány tanácsot, amit be s tartottam: pontszámláló, és háttérszín ne barna legyen. A következő amire gondoltam, hogy még így is csak egy sima pont számlálós játék ezért kapott a játék egy kis meglepetést a végére, amit nem árulok el. :D

Végül már csak annyi maradt hátra, hogy még végleg leteszteljem, feltöltsem az oldalamra és publikáljam a játékom ludum dare oldalán. Összeségében elég jó kritikákat kaptam, amin meg is lepődtem, habár  azt megjegyzem, hogy ludum dare közössége nagyon pozitív és támogató.
Szóval a célközönség olyan fejlesztők, akik értékelik azt a munkát, amit a játékod elkészítésébe fektettél.

Játékom Ludum Dare-en

Összefoglalva:

Megéri versenyezni, mivel ha nem is nyered meg, akkor is szerzel olyan tapasztalatot és visszajelzéseket, amiket csak így kaphatsz meg.

Napi tipp:
Próbáljátok ki a Dart nelyvet. :D