[lang_sk]Výsledky súťaže MiniGame Compo 2008 boli zverejnené 8.septembra 2008. Moja gamesa Fireball 1k sa umiestnila na piatej priečke. [/lang_sk][lang_en]Results of MiniGame Compo 2008 were released on september 8th 2008. My game Fireball 1k took fifth place. [/lang_en]
[lang_sk]Musím povedať, že tento ročník súťaže nebol pre mňa taký úspešný ako minulý, kde som získal druhé miesto za Belljumper 1k. Napriek tomu naprogramovať Fireball bolo o dosť zložitejšie ako Belljumper, pretože nebolo možné využiť na vykreslovanie kociek PMG. Kocky boli SW sprajty a zo začiatku bol dosť viditeľný problém s ich blikaním. Keďže nebolo možné použiť doublebuffering, musel som vymyslieť alternatívny spôsob priameho vykreslovania do videoRam, kde by blikanie nebolo vidieť.
Spolu s využitím SW sprajtov vzniká problém detekcie kolízií, ktorého riešenie nie je úplne triviálna vec. Tým pádom sa kód hry značne rozrástol a na nejaké špeciálne fičúrky už akosi neostalo miesto v 1024 bytovom intervale.
Pôvodne mal byť herný koncept dosť odlišný. Plán bol taký, že v hre nebude energia ale životy. Život by sa minul po zasiahnutí hráča kockou. Ďalej som chcel implementovať to, že po zostrelení kocky by z nej vypadol objekt (viď falling diamonds vo Fireball Developer’s Log), ktorý by dopadol na úroveň hráča a ten by ho musel vziať aby získal ďalšie skóre. Samozrejme, že objekty, ktoré by ostali “na zemi” príliš dlho by zmizli. Zároveň v kocke mohla byť bomba, ktorá by po zobratí hráčom spôsobila to, že by vybuchli všetky kocky, ktoré by boli práve na obrazovke. Hráč mal byť pôvodne malý drak, ktorý by vystreľoval ohnivé gule a triafal zamrznuté kocky.
Ako možno vidieť, veľa vymyslených vecí nebolo možné zrealizovať do 1024 bytovej binárky. V závere tvorby hry som aj tak niekoľkokrát celkom divoko optimalizoval kód, či už bežnými postupmi alebo využitím nezdokumentovaných inštrukcií DCM (DEC+CMP), pretože som potreboval každý ušetrený byte.
Napriek všetkým zádrhelom to bola zábavka :-).
[/lang_sk][lang_en]I have to say that this year of competition was not so successful as previous, where I finished on second position with Belljumper 1k. Nevertheless it was quite harder to develop Fireball than Belljumper, because bricks could not be created using PMG. Bricks were displayed as SW sprite objects which were flickering so much in very first versions of game. As it was impossible to use doublebuffering, I had to discover alternate method for displaying bricks directly to videoRam, to prevent the flicker.
SW prites brought another problem: collision detection. Solving this task is not so trivial. All these SW sprite stuff reflected in code length, not many space remained for some special features in 1024 byte boundary.
My original game concept was quite different. There should be lives instead of energy. Live would be removed after brick hits player. Next I wanted to implement objects which would fall from destroyed bricks (see falling diamonds in Fireball Developer’s Log). Falling object would remain on the ground for couple of seconds so player could get some extra score for taking it. Brick would also contain bomb which would destroy all bricks on screen after taking it. Player should be displayed as little dragon which could shoot fireballs to melt frozen bricks.
As you can see, many thoughts could not be implemented into 1024 byte binary file. I had to optimize code several times, because every single byte was needed. I also used undocumented instruction DCM (DEC+CMP) to reduce size of final binary file.
It was fun, despite all the trouble :-).
[/lang_en]
[lang_sk]Súvisiace linky:[/lang_sk][lang_en]Other related links:[/lang_en]