
Hra s letadly (soutěžní) - vývojařský deníček :)
Ahoj všem,
doufám, že to není moc troufalé, ale když už dělám soutěžní hru, možná by někoho zajímalo jak to postupuje, s čím se peru a tak. Tak jsem se rozhodl založit jí malý dev-log tady na fóru (nechť me Sledge odpustí).
Název: prozatím není
Princip hry: je zatím tajný, až to bude z ukázek dost jasné tak doplním, zatím řeknu jen, že hra bude o letadlech a určitě mou inspiraci mnozí velmi brzy poznáte (pokud vím portu této hry se DOS nikdy nedočkal), chci udělat rozumnou grafiku, snad i nějaký zvuky a hlavně drobně rozšířit hratelnost o pár svých nápadů ;o)
Jazyk a nástroje: Turbo Pascal 7, Grafx 2, Sublime Text 3, DosBox
4. 11. 2014:
Video ochutnávka: http://youtu.be/q9pWljKn5VA (omlouvám se za náhodné skřeky co to vydává, je to jen test SB zvuku)
- přepsal jsem většinu procedur pro manupilaci s grafikou, takže je teď moje knihovna mnohem pružnější, umí třeba renderovat do libovolného bufferu, tím se dá na úkor paměti výrazně zvýšit výkon
- implementoval jsem SoundBlaster zvuk, není to moje knihovna, zvuk pro mě není zatím prioritou, ale chtěl jsem mít vše co budu potřebovat alespoň nějak implementované od začátku
- vytvořil jsem si knihovnu pro nahrávání a práci s tilesety, takže teď můžu z jednu bitmapu rozřezat na kousky a ty si používat dle libosti, ušetří to spoustu času při tvorbě grafiky, protože není třeba tak úskostlivě hlídat paletu barev
- začal jsem s rozdělováním kódu do tématických celků a začal hned editorem map, ten je teď nejpotřebnější, není nic horšího nez hrát si s náhodně vygenerovanými daty
- a to nejdůležitější, je tu první poctivá pixelartová grafika! Dokonce mám pocit, že to skutečně začíná připomínat hru :D
- nejvíc se peru s ukazateli a alokací paměti, na to už jsem úplně zapoměl. Díky nedávným pokusům s Atari 800 mám alespoň nějaký základ co se paměti a práci přímo s HW týče. Uff, držte mi palce!
PS: Zipnutá binárka s daty a dvěma mapami má v bratru krásných 12Kb, tak se snad ve finále do limitu vejdu! Jestli se k tomu zítra dostanu, vyzkouším na reálném HW, bohužel nemám nic extra slabého (Toshibu Satellite s P1@233MHz tuším), takže časem poprosím o nějaké testy výkonu Vás :) Dodnes se tluču do hlavy, že jsem kdysi svou 486/DX2 poslal z domu :(
Sledge napsal(a)
Zcela naopak, já tohle vřele vítám a uděluji pomyslné plusové body! ;)Můžu se zeptat na "workflow"? Píšeš kód v Sublime a pak následně pod Dosboxem ručně kompiluješ a testuješ, nebo na to máš nějakou zkratku?
Nad tím jsem právě dost špekuloval, hlavně zprovoznit tpc aby dělalo to co má. Výsledek je ten ze píšu v Sublimu a když je čas na kompilaci, spustim cmd, to spustí dosbox a v něm bat, ten provede kompilaci, počká na libovolnou klavesu (kvili chybám) a pak spustí exe s hrou. Stejným způsobem funguje i konverze grafiky. Až budu u pc, hodím sem ukázku...
Slibovaný návod, jak na použít TPC pro kompilaci bez TP IDE. To jak napsat baťáky, které to celé automaticky spustí v DosBoxu snad psát nemusím ;)
- je dobré mít v PATH složku BIN z TP
- vytvořil jsem si rozumnou adresářovou strukturu tedy:
SRC - pro zdrojove kody (muze obsahovat i podslozky, ty je pozdeji nutne predat kompiatoru v konfiguraci)
OBJ - pro externi knihovny
CFG - pro konfiguraci kompilatoru a zakladni knihovnu TP
BIN - pro vystup binarek - ve složce CFG jsou potřeba dva sobory: TURBO.TPL (ze složky BIN samotneho TP) a TPC.CFG, který bude obsahovat třeba následující:
/B - donutí kompilátor překompilovat všechny includnuté knihovny
/$M65520,0,655360 - nastaví velikost stacku a heapu
/$G+ - podpora rozšířené instrukční sady
/EBIN - nastavení adresáře pro výstup binárek
/OOBJ - nastavení adresáře pro externí knihovny
/UC:\TP\UNITS;SRC;SRC\LIB - nastavení složek pro unity - doporucuji pridat puvodni slozku v adresari TP - nyní by již mělo jen stačit v hlavním adresáři (tedy tam, kde jsou všechny výše uvedené podadresáře) zavolat:
tpc /TCFG SRC\[hlavní .pas soubor ke kompilaci] - vaše výsledné TPU a EXE naleznete v adresáři BIN, stačí už jen spustit
Celou strukturu si můžete sosnout tuhle: https://dl.dropboxusercontent.com/u/25376807/Test.zip
Ps: asi nejdůležitější a nejlepší zdroj informací o TP který sem našel: http://putka.upm.si/langref/turboPascal/index.html
5. 11. 2014:
Tak a jsou tu další novinky, úspěchy i problémy při vývoji DOSové hry :)
- upravil jsem strukturu hry (zase), takže teď je úplně oddělený renderovací kód, takže ostatní komponenty (hra, editor, menu...) mohou pohodlně renderovat mapu a vše co se na ní může nalézat
- přidal jsem letadlo! Grafika rozhodně není finální, je to hodně narychlo spíchnuté, ale jako letadlo to snad vypadá a dokonce létá!
- zároveň s grafikou je tam i kód pro obsluhu a renderování letadel - určitě tam nebude jen jedno a jen jeden typ!
- mapě přibyla vrstva s meta daty, ta mi umožní ukládání informací jako je poloha letišť a překážek
- co se problémů týká, tak časování, respektive měření uplynulého času je větší problém než jsem myslel, v DOSBoxu je vše jak má být, ale na reálné mašině to běží moc rychle - koukal jsem ale že to mají pěkně vyřešené v Paku Paku, tak se jim podívám na zdroják :)
- herní režim tam ještě není, ledadlo létá v editoru a ovládá se dost krkolomně, ale jako proof of concept to zatím stačí
Jak vyplývá z logu, tak jsem konečně svůj výtvor spustil na reálném HW, běží lépe než v DOSBoxu, ale vyhráno s výkonem určitě není. Snad zítra připravím demo a poprosím vás o otestování na něčem slabším (66-120 MHz), ta moje mrška je moc rychlá, nicméně i tak vám přikládám video:
DEMO 01:
Tak sem tu s prvním nehratelným demem:
https://dl.dropboxusercontent.com/u/25376807/demo01.zip
Jestli máte chuť a čas, zkuste jej prosím spustit na vašem oblíbeném počítači a napište mi, jak vám běží. Rychlost letadel by měla být podobná jako na videích v příspěvku výše.
Demo vyžaduje svga kartu podporující režim 13h (320x200x256), zavedený ovladač myši a co udělá bez SB kompatibilní zvukové karty jsem také neměl jak vyzkoušet :)
Na pozadí by měl hrát obligátní piano-chaos.
Pomocí kláves + a - na numerické klávesnici můžete zvýšit/snížit rychlost (počet cyklů programu před čekáním na vsync).
AfBu napsal(a)
Kristova noho, to je presne to co sem nechtel :(
V pohodě, každý kdo má byť jen o trochu víc cílevědomosti a času než já by mě snadno strčil do kapsy, já po osmi hodinách každodenního korporátního programování nacházím už leda tak čas na blogování a takové to domácí skriptování pro radost. Udělat celou hru v takovéhle úrovni by pro mě znamenalo naprosto omezit mé oblíbené platformy (PC se nevěnuju, vždycky když něco chci na PC udělat, musím si pro nějaké dojet do skladu - u mě doma je to hlavně Macy a unixové stanice, nějaké to ZX Spectrum, Amiga a Atari ST), lezení po kopcích s vysílačkou a další nepočítačové činnosti, mezi které v prosinci zařadím i mimino. Takže rozhodně to nemusíš brát osobně :-)
23. 11. 2014
Bylo hrozně málo času na volnočasové aktivity, proto ta pomlka. Ale zase mám nějaký ten postup, tak vám ho sem hodím. Jako obvykle začneme rovnou praktickou ukázkou :)
- prozatím jsem kompletně demontoval zvukové pokusy, je to komplikované a finální řešení víc v nedohlednu než v dohlednu. Na hudbu dost možná rezignuji (možná z lenosti udělám speciální CD edici s hudbou přehrávanou přímo z placky), ale efekty tam určitě nakonec budou.
- přepracoval jsem systém vstupních zařízení - pro myš už nepoužívám cizí knihovnu, ale svou vlastní, klávesnici si řeším přímo přes přerušení, takže s ní můžu pracovat mnohem pohodlněji a hlavně svižněji.
- to hlavní: konečně jsem začal pracovat na herních mechanikách jako takových, takže se rýsuje "režim přiblížení" a mnozí už z videa zjistili co je mou hlavní inspirací. Letadla teď už jdou komandovat myší, hráč může letadlu nařídit letovou hladinu a směr letu. Samozřejmě chvíli trvá než letadlo manévr provede a u různých typů se bude rychlost změny výšky i směru lišit.
- samozřejmě stále probíhá částečný průběžný refactoring a úpravy už hotového kódu a grafiky.
- perlička na závěr: upravil jsem většinu kódu tak, abych ho později mohl naportovat na moderní platformy (Free Pascal, takže Win32/64, Linux a snad i OSX), už teď je kód ve FPC zcela zkompilovatelný, jen se nic nevykresluje - knihovna co bude přes SDL simulovat všechno co dělám v SVGA bude maso :D
30. 11. 2014
Opět jen drobnosti :)
https://www.youtube.com/watch?v=pECyPzLXTC8
- přidán čas do herního režimu
- přidána dynamická úprava palety pro plynulý přechod den/noc
- přidáno blikání signálních světel letadel a veže
- drobné úpravy menu
Určitě to není finální, spíš první nástřel - ve finále bych rád noc spíš do modra než jen ztmavenou. Prostě mě asi nemine ten opruz jednotlivé kroky "tmy" předpřipravit a pak už je jen sypat na porty grafiky, teď to počítám a je to zaprvý zbytečná zátěž (paměti mám k dispozici dost, s CPU je to horší) a za druhý divoký ;)
Nejvíce uživatelů online: 351
Právě online:
12 Host(é)
Právě prohlíží tuto stránku:
1 Host(é)
Statistiky uživatelů:
Hosté: 14
Členové: 713
Moderátoři: 0
Administrátoři: 1
Statistiky fóra:
Skupiny: 5
Fóra: 24
Témata: 1439
Příspěvky: 24051
Nejnovější uživatelé:
gjames, Martin Janočko, jakub crhák, retro, Vince Howerton, Standa, Libertarian771, Mastafos77, sleepingmouse, Fleet, SirKoki, awlo, Jiří Dobrý, Milsa, LogisofterAdministrátoři: Sledge: 5655