Stránka je momentálne v testovacej prevádzke a postupne sa dopĺňa.

Projekty


Programy, scripty a čo ja viem aké drobnosti ktoré som robil, či už v rámci edukácie alebo iných pohnútok. Väčšina ak nie všetko bude úplne nepoužiteľná, len som si chcel spraviť krátky prehľad svojej práce.

1

2 Dalej Koniec

Bludisko

ObjectPascal/Delphi + WinAPI + OpenGL 25.08.2004

Začiatok hry - MipMap filtrovanie

V tomto okamihu nastáva moja éra OpenGL. Bolo to tuším leto pred výškou a ja som našiel na internete NEHE tutoriály (česky). 3D grafika ma ako bývalého hráča fascinovala a predstava, že by som aj ja bol schopný vyvinúť nejakú hru, ktorá by sa aspoň náznakom ponášala na komerčné hry ma hnala dopredu. Prechádzal som jeden tutoriál za druhým a OpenGL ma začalo stále viac a viac pohlcovať, až som sa napokon rozhodol, že sa teda pokúsim niečo vytvoriť.

Cez školský rok som programoval generátor bludiska, bolo to pre Korešpondenčný seminár z programovania. Môj generátor nebol nič moc, ale keď som si prečítal nimi ponúkané riešenie problému, tak ma to dostalo, bolo to perfektné a dokázalo to generovať fakt krásne bludiská. Naprogramoval som si teda tento generátor a keďže som sa práve zaoberal OpenGL napadlo ma, spojiť tieto dve veci a napísať si hru v ktorej sa budem prechádzať bludiskom.

Generovanie bludiska bolo relatívne rýchlo, relatívne skoro bola napísaná aj vizualizácia tohoto bludiska. Spočiatku však totálne neoptimalizovaná. Bludisko sa vykreslovalo celé, čo som si pri malých bludiskách na ktorých som to skúšal nevšimol. Začal som teda optimalizovať. O niečom ako Octree som ani nepočul, tak som šiel svojou cestou, ktorá je asi aj tak efektívnejšia, nakoľko nerenderujem členitý. Čo treba a čo netreba zobrazovať sa dá vypočítať abstraktne, len na základe poznania matice bludiska. Použil som klasický prehľadávací algoritmus (mám pocit, že išlo o prehľadávanie do hĺbky), pomocou ktorého som si zistil viditeľné časti bludiska (chodba a ešte trochu za roh). Rozdiel bol badateľný a pomocou parametra programu je možné túto optimalizáciu vypnúť. Po vyriešení vykresľovania prichádza na scénu ďalší problém. Ide o detekciu kolízií. V tomto okamihu som pochopil, na čo je dobrá analytická geometria. Začala ma neskutočne baviť a popri kombinatorike a algebre patrí medzi moje najobľúbenejšie časti matematiky. Počítanie uhlov, vektorov, priesečníkov roviny a priamky ma proste dostalo. Keď som vyriešil kolízie, začal som sa s programom hrať, pridával som efekty, zvuky, strieľanie, skákanie, približovanie. Pri strieľaní som musel riešiť kolíziu strela-stena, čo mi dalo dosť zabrať, spočiatku som sa totiž uberal úplne nesprávnym smerom, písal som jednu podmienku za druhou a nič to neriešil poriadne, až potom ma napadlo, že to vlastne nieje nič iné, ako priesečník roviny s priamkou. Problém bol vyriešený a analytická geometria sa opäť ukázala ako najlepšia voľba. Posledným problémom na ktorý si spomínam bola synchronizácia na základe aktuálnych FPS. Keďže som pred tým nikdy nič podobné nerobil, vôbec som na to nemyslel, až keď som prišiel ku kamarátovi, ktorý mal o niečo rýchlejší počítač a zistil, že mu to tam behá ako šialené ma napadlo, že tu niekde je problém. Následne som začal program opravovať, až som to napokon vyriešil, neskôr som ale zistil, že som pozabudol na skoky, tie som ale už nikdy neopravil. Hra nebola nikdy dokončená, prišla vysoká škola a všetok čas som venoval jej, či to bolo IRC ? už si nepamätám :)

Spúšťanie programu
Program sa spustí v klasickom nastavení po kliknutí. K dispozícií je iba binárka pre Windows, ale nakoľko ide o OpenGL, tak je bez problémov spustiteľná aj cez wine pod GNU/Linuxom. Konfiguráciu aplikácie som chcel pôvodne presunúť do ini súboru, ale k tomu už nedošlo. Všetky základné nastavenia sa nachádzajú v súbore premenne.pas, väčšina aj s komentárom, akurát, že program treba opätovne prekladať. Pre základné nastavenie som narýchlo spravil niekoľko parametrov do príkazového riadku, je síce nutné zadávať parametre postupne, ale dá sa to aspoň trochu nastavovať.

Použitie programu:
program [RozlíšenieX] [RozlíšenieY] [Farebná hĺbka] [FullScreen] [KresliťVšetko] [ŠírkaBludiska] [VýškaBludiska] [VzorkovanieFPS] [Perspektíva]

  • RozlíšenieX: Rozlíšenie obrazovky šírka, je možné použiť akékoľvek rozlíšenie (default: 640)
  • RozlíšenieX: Rozlíšenie obrazovky výška (default: 480)
  • FarebnáHĺbka: Farebná hĺbka, mám však pocit že nefunguje (default: 16)
  • KresliťVšetko: Vypnutie alebo zapnutie optimalizácie vykresľovania. true/false (default: true)
  • ŠírkaBludiska: Šírka generovaného bludiska (default: 200)
  • VýškaBludiska: Výška generovaného bludiska (default: 200)
  • VzorkovanieFPS: Po koľkých prekresleniach sa má opäť prepočítať FPS (default: 3)
  • Perspektíva: Zobrazovacia perspektíva, veľmi zaujímavé na hranie (default: 45)
Ovládanie programu
Do programu som dopisoval rôzne nastavenia z hrou súvisiace aj nesúvisiace, tu je zoznam kláves ktorými sa ovláda:
  • W,A,S,D: Klasický pohyb, ako v iných hrách
  • Šípky,PageUp,PageDown: Natáčanie, ako v iných hrách
  • Ctrl: Prikrčenie
  • Space: Skok, dosť zabugovaný
  • L: Zapnúť/Vypnúť osvetlenie, zaujímavé v kombinácii s hmlou
  • H: Zapnúť/Vypnúť hmlu
  • F: Prepínanie kvality filtrovania textúr (Nearst, Linear, MipMaping)
  • M: Zapnúť/Vypnúť mapku
  • P: Zapnúť/Vypnúť ukázanie mojej pozície na mapke
  • R: Zapnúť/Vypnúť Rotovanie mapky podľa môjho otáčania
  • X: Zapnúť/Vypnúť antialiasing čiar
  • Koliesko myši: Zapnúť/Vypnúť priblíženie (trochu chybové pri neštandardnom rozlíšení)
  • Ľavé tlačítko myši: Streľba, pri pridržaní neskončí efekt padajúcich častíc

A čo je vlastne cieľom hry ? Nájsť koniec bludiska, na mapke označené červenou bodkou. Overte si orientačný zmyslel a skúste nájsť východ z bludiska bez použitia mapky, alebo s mapkou, ale bez zobrazenia aktuálnej pozície. Malá nápoveda je strelka vľavo dole, ktorá vždy ukazuje vzdušnou čiarou priamo ku koncu bludiska. Ak sa Vám to podarí, skúste aj orientáciu v hmle. Cieľom hry je teda nájsť koniec bludiska, všetko ostatné (streľba, skákanie, krčenie sa) je tam len tak.



Zdrojové kódy:  [] bludisko.zip (1.6 MB)
Spustiteľné súbory MS Windows:  [] bludisko-bin.zip (1.2 MB)



Hry

ObjectPascal/Delphi 16.03.2004

Hra hľadanie mín po prvé

No a ďalšia SOČ (Stredoškolská odborná činnosť) tento krát ale pre bratranca. Trvalo to dva víkendy, pamätám si to presne, lebo ku mne chodil keď som to vyvíjal, aby mal v tom aký taký prehľad. Moc to nepomohlo a keby sme mali učiteľa, ktorý by sa aspoň trochu vyznal, tak by mu na to asi rýchlo prišli. Jeden sa ho aj pokúsil dostať, ale keď ho videl spraviť dva či tri isté kliky, zapochyboval a radšej sa na to vykašlal, pričom odišiel s tým, že aj tak vie, že to nerobil on, ale že to nechce ďalej rozmazávať.

Hra sa skladá z dvoch hier, jednou sú klasické míny a druhou opäť piškvorky (Tic Tac Toe).

Míny obsahujú nejaké grafické efekty a komické animácie. Ako som si všimol, jedna animácia nefunguje, na čo program upozorní zakaždým, keď sa ju snaží spustiť, čo je asi raz za minútu. Vylepšením oproti klasickým mínam je takzvaný žolík, inak povedané, možnosť nápovedy v prípade, že sa človek dostane do stavu, kedy si musí tipnúť (tento prípad som na klasických mínach nenávidel).

Piškvorky boli pridané len preto, aby projekt narástol. V podstate som len prekopíroval kód zo starých piškvoriek (tieto by už nemali obsahovať pôvodný bug a nemalo by byť možné vyhrať nad počítačom). Okrem klasických piškvoriek, je aj ich nočná verzia, čo bol viacmenej iba marketingový ťah, nakoľko je to to isté, len s iným pozadím, no na prvý pohľad to zaujme. Vývoj trval asi pol dňa, hneď po tom, ako sa skončilo s mínami.

Keď som tieto hry teraz vyhrabal, prišiel som na pár bugov, ktoré sú asi následkom zmeny Win98 na WinXP. Ide napríklad o farbu nastavenú pod ovládacím panelom komponentov. Komponent by mal byť priehľadný, namiesto toho je tam teraz farba Magenta. Nechystám sa to však opravovať.

Čo sa týka technickej stránky, tak si spomínam, že som pri vývoji používal nejakú špeciálnu grafickú knižnicu, ktorá podporovala základne efekty ako napríklad blending.



Zdrojové kódy:  [] hry.zip (6.8 MB)
Spustiteľné súbory MS Windows:  [] hry_bin.zip (2.4 MB)



Skiner

ObjectPascal/Delphi 09.03.2004

Hlavné okno

Klikátko na tvorbu skinov k aplikácií AudioCDCreator. Opäť niečo nepoužiteľné a rovnako ťažkoapádne ako celé skiny. Pri tvorbe som sa nechal inšpirovať nastavovaním parametrov ako to má riešené Delphi pri nastavovaní parametrov komponentov a mám pocit, že to aj celkom išlo (nech nechce niekto vedieť ako, ja si na to matne spomínam, ale snažím sa zabudnúť).



Zdrojové kódy:  [] Skiner.zip (669 KB)
Spustiteľné súbory MS Windows:  [] Skiner-bin.zip (306 KB)



AudioCDCreator

ObjectPascal/Delphi 02.03.2004

Hlavná obrazovka

Tak toto bola moja SOČ (Stredoškolská odborná činnosť). Obsadil som s ňou štvrté miesto v krajskom prebore tejto súťaže (čo ale asi každý. ktorý neskončil do tretieho miesta). Podľa úrovne projektu treba povedať, že konkurencia nebola ktovie aká.

Pre popis projektu budem citovať časť nápovedy k aplikácie, samozrejme s plným súhlasom autora. Čiže:

Jedná sa o program pre správu mp3 a ogg CD-čiek. Môže byť vhodný na tvorbu kompletných diskografií jednotlivých skupín. Program môže obsahovať: obal originálneho CD, texty piesní a samozrejme piesne. Piesne sa vkladajú vo mp3 alebo ogg formáte, ale v prípade výberoviek je možné vytvoriť aj tzv. zoznam, ktorý slúži ako playlist. Neoceniteľná výhoda je v možnosti zmeny skinov, alebo prípadného dopaľovania nových albumov.

Inými slovami mi išlo o to, aby aplikácia dokázala sama prejsť obsah CD, na základne ktorého vygeneruje prehľadnú diskografiu skupiny. V čase keď aplikácie vznikala stálo jedno CD okolo 50 korún a za napálenie sa dalo ďalších 50, prepaľovať celé CD po vydaní nového albumu bolo preto pre študenta strednej školy finančne nákladné.

Pamätám si, že pri tvorbe tohoto projektu som s Delphi len začínal a objavoval som rôzne možnosti práce s grafickými komponentami. Vrcholom blaha bolo naprogramovanie vlastného grafického komponentu (vtedy som ešte nepoznal ženy). Z dnešného pohľadu to bola fakt blbosť a dosť jednoduchá záležitosť, ale v tom čase mi to pripadalo ako veľký úspech. Treba podotknúť, že som sa stále potýkal s absenciou študijných materiálov a to nehovorím o nulovej znalosti anglického jazyka. Veľa vecí prebiehalo klasickou metódou vývoja pokus-omyl. Som rád, že to mám už za sebou, akurát, že vtedy ma programovanie fakt bavilo (na rozdiel od pascalu som konečne vyvíjal niečo, čo sa ponášalo na skutočný program a v tom je podľa mňa sila Delphi).

V programe sú implementované nejaká grafické komponenty snažiace sa zachovať objektový model stávajúcich grafických komponentov v Delphi. Okrem toho sa využíva externá knižnica na prehrávanie ogg a mp3 súborov (nepamätám si, prečo mi nevyhovoval klasický komponent na prehrávanie multimediálneho obsahu a dokumentáciu som už niekde medzi časom stratil). Taktiež je tam podporná knižnica na čítanie ID3Tagov. Aplikácia je skinovateľná, síce veľmi ťažkopádne, ale je.

Okrem binárnych súborov, ktoré je možné spustiť aj v GNU/Linux-e cez wine prikladám aj zdrojové kódy. Priložený build nie je buildom z týchto zdrojových kódov, ktoré sú dokonca ešte označené pod starým názvom, ktorý mi odporučili po postupe do okresného kola zmeniť na niečo serióznejšie, čo znamená, že netuším, či je to ešte možné preložiť, resp. či sú priložené všetky potrebné súbory, ale mám pocit, že by to malo ísť. Každopádne opäť nepredpokladám, že sa o to niekto bude snažiť. Naprogramované je to fakt hnusne (len podľa toho, čo som teraz zbežne pozeral), ale bol som úplný začiatočník.



Zdrojové kódy:  [] audiocdcreator.zip (5.2 MB)
Spustiteľné súbory MS Windows:  [] audiocdcreator-bin.zip (2.6 MB)



Piškvorky

Pascal 12.07.2002

Hlavné menu

Jeden z mojich väčších projektov, keď som začínal. Objavoval som prácu s myšou a nejakou špeciálnou grafickou knižnicou, ktorá obsahovala neuveriteľnú 8-bitovú farebnú hĺbku (256 farieb).

S grafikou som sa celkom vyhral, aj keď netvrdím, že to vyzerá ktovie ako, ale keď som začínal, bola už možnosť práce s myšou zázrak nad zázraky. Ešte si pamätám ako som v škole sťahoval rôzne knižnice pre pascal pri závratnej rýchlosti 2-3 KB/s a nemohol sa dočkať, kým doma zistím, čo som to zase stiahol. V dnešnej dobe si je to už ťažko predstaviť.

Jedná sa o jednoduchú hru, ktorú hral snáď každý a taktiež každý ju prestal hrať, lebo zistil, že je to kravina ktorá sa nedá vyhrať. Keď som ju programoval, prišiel som na niekoľko základných postupov, pri ktorých výhra visí na vlásku a záleží len na jednom nesprávnom ťah súpera. Možno si poviete, že sa to prehrať nedá, čo je aj pravda, ale na základe týchto postupov som bol schopný porážať 1udí ešte aj na vysokej škole. Po tretej či štvrtej porážke ľuďom začali tiecť nervy a hrali ešte horšie ako na začiatku, mnohý nadobudli pocit, že keď človek začína, musí aj vyhrať.

Hra sa teoreticky prehrať nedá, ale ako som zistil od kamarátovej malej sestry, je tam bug na základe ktorého sa dá počítač poraziť (vraj to hrala tak dlho, až na to náhodou prišla). Nejaká umelá inteligencia tam nieje, ide len o naučenie pár základných postupov útoku a obrany. Hra okrem už spomínanej práce s myšou a 8-bitovej grafiky ponúka dokonca dve jazykové mutácie (čo ma samého prekvapilo, keď som ju po rokoch oprášil). Využívam tam nejaké trápne grafických efekty, ako napríklad plynulé stmavovanie či zosvetľovanie pracujúce na základe plynulej zmeny palety farieb (je to dosť rýchle a vtedy som bol z toho uchvátený).

Spúšťal som to pod Dosboxom, bolo treba pridať pár cpu cycles, aby to fungovalo plynule a dostatočne rýchlo. Kompilovať som to neskúšal, neviem teda či je to ešte možné a či sú pribalené všetky potrebné knižnice, no nepredpokladám, že sa o to ešte niekto bude pokúšať.



Zdrojové kódy:  [] Piskvorky.zip (142 KB)
Spustiteľné súbory MS Windows:  [] Piskvorky-bin.zip (103 KB)




1

2 Dalej Koniec

Copyright © 2008 Milan Ilavský | All Rights Reserved | Design by P&B Creations | Modified by Milan Ilavský | Powered by CMSee