OldComp.cz

Komunitní diskuzní fórum pro fanoušky historických počítačů


Právě je 28.03.2024, 22:55

Všechny časy jsou v UTC + 1 hodina [ Letní čas ]




Odeslat nové téma Odpovědět na téma  [ Příspěvků: 47 ]  Přejít na stránku Předchozí  1, 2, 3, 4  Další
Autor Zpráva
PříspěvekNapsal: 11.08.2014, 12:26 
Offline
Site Admin
Uživatelský avatar

Registrován: 11.05.2013, 23:48
Příspěvky: 10111
Bydliště: Praha
Has thanked: 1953 times
Been thanked: 1517 times
Ale jasně, tak DOOM XIV byl také vpodstatě ANSI záležitostí. Mimochodem to demo je pěkné, jen ten retarda, který ho graboval, mohl dát kurzor myši do pryč...

_________________
Amiga/Amstrad/Atari/Commodore/Mac/Nintendo/PS/PC/Sega/Tandy/ZX


Nahoru
 Profil  
 
PříspěvekNapsal: 23.08.2014, 08:09 
Offline
Pan Generální
Uživatelský avatar

Registrován: 13.05.2013, 09:15
Příspěvky: 2278
Bydliště: Brno
Has thanked: 842 times
Been thanked: 302 times
Zajímavé chování Workbenche?

Mám naprogramovanou základní logiku pro pohyb sabotéra vlevo a vpravo. Pohyb vpravo je v pohodě. Při pohybu vlevo se mi vozík (kurzor) Workbenche chová zajímavě. Sabotéra zatím posunuju po 10 pixelech. Pro 2 různé sekvence zobrazení sabotéra se 2. "obraz" zobrazí o 5 pixelů dále, než 1. "obraz". Pro pohyb vlevo ale musím posunout vozík u 2. "obrazu" ne o 5 pixelů, ale o 9 aby se mi sabotér posunul skutečně o 5 pixelů vlevo. Při posunu vozíku o 4 pixely mi tedy sabotér zůstane stát na místě. Pak nastáva další posun o 5 pixelů sabotéra a jeho návrat do původní polohy (1. sekvence zobrazení). Aby se mi sabotér posunul o 5 pixelů vlevo, musím ho posunout pouze o 2 pixely! Tedy celkový součet je vpořádku. 9 + 2 je sice 11 a ne 10, ale 5 + 5 není správně, když chcu posunovat sabotéra po 5 pixelech vlevo. Správně je to 5 + 6. Při 1. posunu sabotéra o 5 pixelů se mi po jeho zobrazení posouvá vozík o 1 pixel doprava. Tedy pro zobrazení sabotéra o dalších 5 pixelů vlevo musím s tímhle počítat a posunout vozík Workbenche o 6 pixelů.

Ještě jeden fakt. Když pohybuji sabotérem vpravo u změnu směru doleva mi pokud nastavím posun voziku o 5 pixelů se skutečne posune o 5 pixelů (1 pixel to rozhodne neni). Zde nemusím zadávat posun o 9 pixelů, aby se mi vozík posunul fyzicky o 5 pixelů. Tuhle opravu musím dělat až při 2. a dalším posunu sabotéra vlevo. Při vykonání 2. pohybu vlebo i vidím, jak se vozík posube o nechtěné 4 pixely doprava.

V parametrech fontů mám nastavenou šířku proporcionálního písma na 1 (1 pixel). Tím dosahuji možnost pracovat s vozíkem Workbenche s přesností na 1 pixel. U všech zobracovaných "písmen" (obrázků sabotéra) mám parametre Spacing a Kerning na hodnotě 0.

Pracuji s tím co mám a umím. Test stisku klávesy neumím. Ten jsem si nahradil jinou logikou. Na numerickej klávese měním směr sabotéra klávesou 3 pro pohyb vpravo a klávesou 2 pro pohyb vlevo. Klávesou Enter pak sabotérem posouvám. Takový způsob pohybu má chyby o kterých vím (snad vím již o všech chybách :) ). O tomhle pohybu mám napsán článek, který jsem zatím nepustil ven, protože řeším tenhle problém, tohle divné chování se Workbenche. Zajímal by mne důvod, proč se takhle Workbench chová?

Jako já můžu všechny pohyby sabotéra doleva krom toho prvního (5+6) posunout vozík o jiné vzálenosti (9+2). Další možnosti je přejít na 2. způsob pohybu sabotéra viz historie vlákna (pohyb pomocí souřadnic)

zde je současná verze pro pohyb sabotéra

Kód:
# -*- coding: latin2 -*-

import os, sys, time

os.system("SetFont saboteur 50 PROP")
sys.stdout.write("\f\033[>3m\033[31m\033[43m")

sys.stdout.write("\033[3;0H\033[20l")

def pohybVpravo():
    sys.stdout.write("\033[5C3\n\033[A\033[4C")
    time.sleep(0.2)
    sys.stdout.write("4\n\033[A\033[D")

def pohybVlevo():
    sys.stdout.write("\033[9D2\n\033[A\033[2D") #1.doleva o 4=na miste
    time.sleep(0.2)
    sys.stdout.write("1\n\033[A\033[D")

r = "3"
while 1:
    r = raw_input(), r
    if r[0] == "": r = r[1]
    else:
        r = r[0][-1]
        sys.stdout.write("\033[D")
    sys.stdout.write("\033[A")
    if r == "3": pohybVpravo()
    elif r == "2": pohybVlevo()


popsaný posun vozíka od začátku pro pohyb vlevo:
while 1:

else: ... sys.stdout.write("\033[D") - pokud nebyla stisknuta klávesa Enter (u té sa nám vozík neposouvá), vrať vozík o 1 pozici doleva (D)

sys.stdout.write("\033[A") - Enter zalomí řádek - posun vozíku přesně pod poslední pozici - změna chování klávesy Enter pomocí escape sekvence (20l) (sys.stdout.write("\033[3;0H\033[20l") - tedy posunu vozíku zpět o 1 pozici nahoru (A)

def pohybVlevo():,
sys.stdout.write("\033[9D2\n\033[A\033[2D") #1.doleva o 4=na miste
9D - posun vlevo o 9 pixelů
2 - "obrázek" sabotéra
\n - zalomení
A - posun o 1 pozici nahoru
2D - posun vlevo o 2 pixely

sys.stdout.write("1\n\033[A\033[D")
1 - "obrázek" sabotéra
\n - zalomení
A - posun o 1 pozici nahoru
D - posun vlevo o 1 pixel (po zobrazení sabotéra návrat vozíku na středovou výchozí hodnotu (po zobrazení sabotéra se nám vozík posune o 1 pixel doprava))

Takže? :)

_________________
Amiga - PMD 85


Nahoru
 Profil  
 
PříspěvekNapsal: 24.08.2014, 18:24 
Offline
Pan Generální
Uživatelský avatar

Registrován: 13.05.2013, 09:15
Příspěvky: 2278
Bydliště: Brno
Has thanked: 842 times
Been thanked: 302 times
OK, dávam jsem článek, který mám již nějakou dobu napsán. Článek neměním, přešel jsem na pohyb sabotéra pomocí souřadnic. Chyby pohybu sabotéra zůstávájí stejné, jako u posunu z jeho samotné pozice, ale v budoucnu by jsem i tak musel přejít na souřadnice. Musím pak řešit i pohyb nepřátel a na to ty souřadnice již budu potřebovat. Chyba, kterou popisuji v minulém příspěvku ohledem prvního pohybu sabotéra vlevo zůstává. Ošetřil jsem ji zatím programem. Dělá ji smaotné "písmeno" (předešlá pozice sabotéra), které vozík "přitáhne" k sobě doprava protože když jsem vynechal zobrazení sabotéra, vozík se posouval doleva tak jak má.

Dnes jsem testoval možné vyřešení mnoha problému zobrazení samotné hry. Zatím to nevypadá nejhúře, tedy mohlo by to i fungovat, ale na to je ještě brzo. Princip spočívá ve schazování obrazu mimo zobrazenou část (úplně dolů). Už jsem to někde psal. Takhle "shozená obrazovka" nám zanechá původní statický obraz. V "pracující" obrazovce, která je schozená dolů se vykreslí vše potřebné a obrazovku opět "nahodím na své místo" tedy na zobrazovací část monitoru. Chci tim zkusit vyřešit možné posunutí celkové grafiky (i sabotéra) mimo její správnou pozici, které je možné v době, kdy zpomaluji zobrazení sabotéra a ke slovu se dostává tedy možné psaní v samotném Workbenchi, co mi dělá v "grafice" hry nechtěné věci. Uvidím, jestli v tomhle způsobu zobrazování pohořím.


A zde je již nějakou dobu napsán článek:

Tak jsem si před pár dny našel čas se hrát a navrhnul jsem základný logiku pro pohyb sabotéra. Ještě v ní nejsem u konce, ale na ukázku to snad stačí. Výslední logika bude jiná, měla by pracovat s klasickým testem stiskuté klávesy, co je pro mne zatím problém a dělám tedy s tím, co umím a mám k dispozici a tedy se vstupem, který je nutné potvrzovat klávesou Enter.

Nemožnost mít k dispozici test stisknuté klávesy je zatím největší problém a plyne z něj hned několik faktů:

-špatné ovládání sabotéra
-v místnosti s nepřítelem nemožnost s ním hýbat - program je v režii toho co dělá sabotér, místo toho, aby řídil nepřítele a sabotér do děje zasahoval pomocí testu stisknuté klávesy. Dočasně se to dá udělat na tahy, pro samotné odzkoušení logiky.

Test stisknuté klávesy se pak dá řešit pomocí assembleru a možná taky načtením modulu na test klávesy napsaného v jazyku C.

Současný princip ovládaní je jednoduchý. Konkrétní klávesou vybereme směr a pak klávesou Enter již se sabotérem hýbeme vybraným směrem. Ani tohle se však neobyšlo bez problému. Sabotér se pohne jen jeden krát. Klávesa Enter se musí pustit a opětovně stisknout. Ach jo. S tímhle si zatím musím vystačit a progrmovat si ostatní věci.

Hrál jsem se tedy s pohybem a zkusil střídat 2 "obrázky" sabotéra po sobě. Zde je problém, že když jsem dal malou pauzu, aby bylo 2. "obrázek" i vidět, do okna Workbenche se může psát, takže sabotéra můžu Entrem posunout o řádek víš a jiné.

Když použiju dostatečně krátkou pauzu mezi zobrazením 2 "obrázků" sabotéra, aby jsem klávesou Enter nemohl jeho pozici nechtěně posunout nahoru (zjištuji že, pozici posunu i tak, když použiku výkon A1200. U většího výkonu se již pozici sabotéra posunout nedaří), je zobrazení 2. "obrázku" tak rychlé, že ho ani neni vidět. Akorát mne napadají různá řešení, která odzkouším.

(doplnění - když zpomalení v programu nepoužiju, grafiku sabotéra se nedaří nechtěně posunout ani na výkonu A1200 - ve videu se to jednou povedlo - nahrávání natolik zpomalilo mé PC... . Můžeme předpokládat, že v té době byl ale výkon emulace i pod výkonem A1200)

Princip pohybu má ještě další chyby o kterých vím a které se pokusím odstranit.

Grafika" je ilustrativni :).

Asi si v nejbližší době nakreslím ilustrativní grafiku chúze (asi 2 "obrázky"), tak jako je to u verze pro PMD 85 (současný 1. obrázek je pro stojícího sabotéra) a budu se hrát dál.

Na videu pohyb se zpomalením a pak bez zpomalení - vše na výkonu A1200.

[youtube]https://www.youtube.com/watch?v=W9ycXkxnIfQ[/youtube]

_________________
Amiga - PMD 85


Nahoru
 Profil  
 
PříspěvekNapsal: 03.09.2014, 03:03 
Offline
Pan Generální
Uživatelský avatar

Registrován: 13.05.2013, 09:15
Příspěvky: 2278
Bydliště: Brno
Has thanked: 842 times
Been thanked: 302 times
Vyzkoušel jsem "schazovat" obrazovku a tak vyřešit problémy, co mám se zobrazovaním. Výsledek je, že i když "shodím" obrazovku, kurzor zůstává v původní, tedy v neschozené obrazovce a tímhle kurzorem můžu posunout taky obraz (ten co je zobrazen, ale již by tam neměl být fyzicky, protože je ve "shozené" obrazovce) nežádoucím způsobem. Tohle schazování obrazovky je dobrý hack... :)

Nechtěné posouvání sabotéra kvůli rolující obrazovce nakonec řeším v posouvání kurzoru na první řádek. Čím pomalší Amiga, tím se to musí dělat častěji. U Amigy 1200 po každém příkazu :) při 4 řádcích, které mi zaplní celou obtazovku (velikost písma 50). Rolovat obrazovkou se mi i tak povedlo, ale mačkal jsem oba Entre zaráz. Jedním Entrem jsem to alespoň já nedal.

Test, jak nejrychleji posouvat vozík na 1.řádek jsem dělal na výkonu neco nižším, než má A600. A zobrazovat sabotéra stíha i A600. Někde jsem četl, že může být v A500/600 i 3.0, nebo 3.1. To by mělo postačovat na spuštění AmigaPythonu + nějaká RAM (celkově 2 MB pro Python, celkově +-4 MB pro program) co je tak trochu výzva jak by to utáhla tahle mašinka. U A500/600 by jsem musel mít obraz na víc než na 4 řádky (i u A1200 budu muset něco málo přidat).

Čím více rádků na obrazovce, tím menší pravděpodobnost nechtěného schození obrazu.

2. problém - když držím například klávesu 3 co je určení pohybu sabotéra směrem doprava a pod klávesou 3 mám i "grafiku" sabotéra, posouvám sabotéra po 1 pixelu doprava (klasicky píšu ve Workbenchi). Tohle chci zlikvidovat, že vozík bude v téhle situaci v jednom pracovním řádku (třeba úplně spodní řádek obrazovky) a sabotér bude v barvě tohoto řádku, tedy nebude vidět. Workbench má jisté omezení v počte znaků, co dává na jeden řádek. Při posouvání kurzoru po jednom pixelu se kurzor zastaví před koncem tohoto řádku a tedy mi neposune obrazovku, co mi stačí. Tímhle zavedu jednu nežadoucí věc. Když se otočím se sabotérem třeba doprava klavesou 3, otočení se provede až po stisku klávesy Enter, ale vyřešení nechtěného posování sabotéra tím, že se píše ve Workbenchi je větší priorota. Pro pokračování pohybu ve zvoleném směru stačí pak mačkat už jen Enter.

Líbí se mi velký sabotér, ale budu ho muset zmenšit. Nemůže mi pracovní řádek zabírat 1/4 obrazovky a taky větším počtem řádků snížim možnost nechtěného posouvání obrazu.

Na kolik je zmenšení sabotéra přípustné? 1/3? 1/2 je již moc?

_________________
Amiga - PMD 85


Nahoru
 Profil  
 
PříspěvekNapsal: 05.09.2014, 10:49 
Offline
Pan Generální
Uživatelský avatar

Registrován: 13.05.2013, 09:15
Příspěvky: 2278
Bydliště: Brno
Has thanked: 842 times
Been thanked: 302 times
Lisiak4 píše:
Líbí se mi velký sabotér, ale budu ho muset zmenšit. Nemůže mi pracovní řádek zabírat 1/4 obrazovky a taky větším počtem řádků snížim možnost nechtěného posouvání obrazu.

Na kolik je zmenšení sabotéra přípustné? 1/3? 1/2 je již moc?

Vidím, že mám sledovanost a to je fajn :mrblue:. Rád bych slyšel (četl) nějaké názory o tom, jak by sabotér mohl byt velikej :roll:.

_________________
Amiga - PMD 85


Nahoru
 Profil  
 
PříspěvekNapsal: 05.09.2014, 16:25 
Offline
Site Admin
Uživatelský avatar

Registrován: 11.05.2013, 23:48
Příspěvky: 10111
Bydliště: Praha
Has thanked: 1953 times
Been thanked: 1517 times
Já bych ho změnšil o 25%. Víc ne. Jako nikdo ti tu do toho moc nekecá, protože si evidentně vystačíš sám a každou otázku si po chvíli zodpovíš :-)

_________________
Amiga/Amstrad/Atari/Commodore/Mac/Nintendo/PS/PC/Sega/Tandy/ZX


Nahoru
 Profil  
 
PříspěvekNapsal: 05.09.2014, 17:04 
Offline
Pan Generální
Uživatelský avatar

Registrován: 13.05.2013, 09:15
Příspěvky: 2278
Bydliště: Brno
Has thanked: 842 times
Been thanked: 302 times
OK, mám celkově 2 názory. 50% by ještě šlo a pak většího sabotéra, tedy 75%. Začnu tedy testy na 75% velikosti sabotéra a uvidím.

_________________
Amiga - PMD 85


Nahoru
 Profil  
 
PříspěvekNapsal: 20.09.2014, 14:02 
Offline
Pan Generální
Uživatelský avatar

Registrován: 13.05.2013, 09:15
Příspěvky: 2278
Bydliště: Brno
Has thanked: 842 times
Been thanked: 302 times
Tak, hodně jsem přemýšlel o tom jak co budu řešit. Bude změna v ovládaní hry. Sabotérem nebudeme pohybovat mačkáním Entru (co by bylo o nervy), ale budeme mu vybírat kam má jít. Třeba klávesa 3 určí, že má přejít z levé části obrazovky na pravou část. Když tam bude tak již jen Entrem se potvrdí pokračování zvoleného směru a sabotér přejde do nové místnosti a počká na její začátku. Když bude střet s protivníkem přejde se do hry na tahy.

Odzkoušel jsem jakou největší velikost písma můžu použít, aby se mi vše vešlo na 1 obrazovku. Skončil jsem u velikosti písma 42 (původne to bylo 50). Sabotéra jsem již nanovo amatérsky nekreslil, nakreslil jsem si jen takové jednoduché testovací znaky. To málo, co jsem měl naprogramované jsem smazal a začínam nanovo. Na výšku mi písmo o velikosti 42 na obrazovku vleze 6 krát a 4 pixely zůstanou nevyužity. Sabotér je při tomhle rozložení obrazovky né zcela na její středu v rámci joho svislé polohy. Dávam ho více na střed tím, že obrazovku posunu směrem dolů o nevyužité 4 pixely. Ale snad to neni tak hrozný (dle mne je to v normě). No a je načase vyčistit obrazovku od líšt Workbenche a podobných zbytečností pro hru :). Rozdělení obrazovky směrem odshora dolů:

1. Úplný vrch místnosti (grafika stropu, žebříku).
2. Prostor pro sabotéra když skočí (aby měl kam :) ).
3. Pozice samotného sabotéra.
4. Úplný spodek místnosti (grafika podlahy, žebříku).
5. Pracovní prostor (vkládání znaku pro směr).
V nejhorším případě tahle oblast bude zamaskována (barva písma bude stejná jako barva pozadí).
Vše se bude vyvíjet dle situace... .
6. Grafika pro to co třeba sabotér nese.

Nemůžu dát "pracovní prostor" pod "Grafiku pro to co třeba sabotér nese.". Po stisku klávesy Enter se roluje obrazovkou a kdyby se tak stalo v její spodní části, posunulo by mi to celou "grafiku" místnosti. Když se tak stane o jednu úroveň výš, pozici vozíku si pak již určím sám.

Když jsem obkresloval sabotéra z počítače PMD 85, všiml jsem si, že jeho okraj je lemovaný 1 pixelovou mezerou. Samotný sabotér tedy není přímo na podlaze, ale mezi ním a podlahou je 1 pixelová mezera. Tohle jsem zavedl již i v testovacích znacích. Když tedy mám velikost písma 42, samotný znak má v zobrazení výšku 40 pixelů.

No a mám 1. verzi možného použití zpracování samotného překrývání se třeba 2 postav mezi sebou. Dělám to propočtem, ale co se týče počtu znaků mi to zabere místo jako samotná animace. Použil jsem na to vlastnost proporcionálního písma a možnost takového písma (písmen) se mezi zebou překrývat. Zabere to ale hodně znaků. Na 1 situaci 7 znaků. Když ale sabotér bude k někomu přistupovat zboku tak jsou to hned situace 4. Na oba možné směry situace 2. Překrývaní se s přístupem zepředu a zezadu. To máme 28 znaků a to je celkem hodně. Snad to takhle pude udělat a s počtem znaků zankové sady se vlezu do všeho co mne ještě čeká. Maximálne to jistí grafika tvrdého lemování, tedy bez použití překrývání.

Nejdřívé propouštela "grafika" protívníka samotného sabotéra. Pak jsem si uvědomil, že to budu muset udělat univerzálnějším a obrátil to. Těď propouští sabotér protivníka. Takže proti sabotérovy můžu postavit cokoliv a mělo by to být řešeno samotným překrytím.

No a někdo z AMIGA REVIEW zaslouží po prstech. Ten kdo psal článek na Typeface 1.0., když zaměnil funkčnost "Spacing" a "Kerning" u proporcionálního znaku, kde "Spacing" je mezera za znakem! Když napíšu 2 znaky a u 1. znaku použiju "Spacing" na základě kterého se mi 2. znak začína překrývat se znakem prvním a parametr "Spacing" je pro 1. znak a né druhý tak je to mezera za znakem Ty šmejd jeden!!! :). Normálne si mne z toho zmagořil až jsem se z toho vymotal! :). Kerningem jsem překrytí nedosáhl (ani kladným a ani záporným) protože se ním určuje mezera před znakem! Áno správně si to napsal, bavíme se o právě editovaném znaku a ne o znaku co je po něm!

OK to bych měl a teď testovací video. Výkon Amigy je pod A600 :).
Trochu trpělivosti, Python dává A600 již opravdu zabrat. Jen jsem chtěl ukázat že mám u A1200 rychlostní rezervu (snad bude stačit). V programe mám zpomalení o 0,2 vteřiny které po 2 opakováních odstánim a nasledují další 2 opakováníno. No a příště už radši s výkonem A1200 :).

EDIT: Výsledek 28 upravuji prozatím na 14. Nebral jsem protivníka jako objekt a on to je taky jenom objekt. Měli by jsme protivníkem se sabotérem "proplout" a je tedy jedno, jak je k nám otočen... .

[youtube]https://www.youtube.com/watch?v=5uiXW4Vm5hI&feature=youtu.be[/youtube]

_________________
Amiga - PMD 85


Nahoru
 Profil  
 
PříspěvekNapsal: 28.09.2014, 23:33 
Offline
Pan Generální
Uživatelský avatar

Registrován: 13.05.2013, 09:15
Příspěvky: 2278
Bydliště: Brno
Has thanked: 842 times
Been thanked: 302 times
solaris104 v Obsah fóra » Československé počítače » Československé počítače - Hry píše:
Jsem nahodil video se hrou Saboter, kde se můžete podívat, o co se ten Lisiak4 snaží ve znakovém režimu na Amize :-).
http://youtu.be/dnEmej04T9A

Tož ještě jsem doladil přesun sabotéra, zatím jen logiku no a vypadá to že mám grafika (uvidíme) a jak bude čas jdu na logiku toho z čeho mám najvětší strach a to je salto sabotéra a na to nasekám vše ostatní, tedy hlavně chúzi a začnu dělat nejaký ten engine pro místnosti a snad to bude vše OK a nebude se muset nic překreslovat - maximálně posouvat v rámci pixelů a to Typeface zvláda velice dobře :).

_________________
Amiga - PMD 85


Nahoru
 Profil  
 
PříspěvekNapsal: 29.09.2014, 12:31 
Offline
Site Admin
Uživatelský avatar

Registrován: 11.05.2013, 23:48
Příspěvky: 10111
Bydliště: Praha
Has thanked: 1953 times
Been thanked: 1517 times
Jako máš grafika, pak mi ale musíš napsat, v jakém rozlišení nakonec hra poběží, na jaké klávesy chceš jednotlivé prvky namapovat, atp.

_________________
Amiga/Amstrad/Atari/Commodore/Mac/Nintendo/PS/PC/Sega/Tandy/ZX


Nahoru
 Profil  
 
PříspěvekNapsal: 29.09.2014, 15:41 
Offline
Pan Generální
Uživatelský avatar

Registrován: 13.05.2013, 09:15
Příspěvky: 2278
Bydliště: Brno
Has thanked: 842 times
Been thanked: 302 times
Ještě je na vše brzo, ale jinak rozlišení Workbenche 640x256, 8 barev (i tak systém zobrazení má s barvou problém a vše za sabotérem bude muset být v jedné barvě - možná ve 2 - barva znaku a pak jeho pozadí), jak si psal v mailu, že je to ideál a já si to myslím taky, kdyby nevyhovovalo řekni si. Prvky, klávesy, nejak začnem i tak se to asi bude v průběhu tvorby měnit a není problém to měnit. V Typeface se dají již vytvořené znaky (grafika) kopírovat a vkládat na jakoukoliv pozici znakové sady. Já si teď uvědomil, že alespoň ve verzi Sabotéra pro PMD 85 umí sabotér jen skákat, vrhat hvězdici, úder a obranu, to se mi ale zdá málo na systém boje na tahy, pokud to bude situace umožňovat, bylo by fajn něco přidat.

_________________
Amiga - PMD 85


Nahoru
 Profil  
 
PříspěvekNapsal: 29.09.2014, 19:46 
Offline
Site Admin
Uživatelský avatar

Registrován: 11.05.2013, 23:48
Příspěvky: 10111
Bydliště: Praha
Has thanked: 1953 times
Been thanked: 1517 times
Asi bych to jako multicolor font nedělal. Tj. ponecháme dvě barvy na znak, které ty ale nadefinuješ z té palety 8mi baver přímo při zobrazování.

_________________
Amiga/Amstrad/Atari/Commodore/Mac/Nintendo/PS/PC/Sega/Tandy/ZX


Nahoru
 Profil  
 
PříspěvekNapsal: 29.09.2014, 22:10 
Offline
Pan Generální
Uživatelský avatar

Registrován: 13.05.2013, 09:15
Příspěvky: 2278
Bydliště: Brno
Has thanked: 842 times
Been thanked: 302 times
Přesně tak, a barvy ve Workbenchi budou ponechány, jaké má sám uživatel navolené. Ja pak můžu udělat třeba to, že se bude dat vybrat, co bude jakou barvou z těch 8mi zobrazeno. Nemám s multicolor fontem žádnou zkušenost, ale pokud jsem do sebe "mixoval" 2 znaky různé barvy, v momente, když se znaky setkali, přebral jeden znak barvu od druhého. Předpokladám, že barva pozadí znaku se bude chovat stejně (nemám odzkoušeno). Dnes jsem si dal na YouTube Longplay Mortal Kombat 1, aby jsem se trochu inspiroval. Asi i když nevím jestli sabotér bude umět salto, je to strop animace u kterého můžu hezky testnout, jak to Amiga dá. U klasického pohybu sabotéra zobrazuji 2 znaky naráz. U salta to bude tak 6 znaků naráz. Kvůli typu zobrazení nemůžu hýbat sabotérem směrem nahoru, ale budou se zobrazovat 2 znaky nad sebou a nima rozanimuji posun sabotéra směrem nahoru. Na výskok bez salta se pak již potřebují "jen" 4 znaky dohromady. Další věcí je, kolik mi tahle legrace zabere znaků v znakové sadě. Když si to snažím představit, tak jsem si animaci salta v hlavě napočítal tak na 35 znaků. I samotný výskok bude tak 35 znaků.

Pro pohyb sabotéra nahoru to bude tak 8 znaků, dolů dalších 8, doprava je to 5, doleva 5. Zakladní pohyb na strany tedy 8+8+5+5 tedy 26 znaků. Výskok nebo salto na obě strany 70 znaků. Takže tak 100 znaků mi zabere kompletní pohyb sabotéra. Do 120 znaků i s údery a dalším zbytkem (pokrčení, obrana, ochrana) 32 znaků je řídících, řekněme že 100 znaků zůstane na vše ostatní (grafika okolí), ale již to vše budou pevné věci co nebudu muset animovat, co je v normě.

PS: Těchle pář řádků jsem psal krásné 3 hodiny. Nejdříve jsem měl zato, že na výskok na obě strany je nutných 140 znaků a ne 70, to jsem však pak upravil na 70 jak jsem přemýšlel co a jak bude fungovat, tak pokud jsem se nepřepočítal, tak to bude snad v pohodě :).

_________________
Amiga - PMD 85


Nahoru
 Profil  
 
PříspěvekNapsal: 29.09.2014, 23:34 
Offline
Site Admin
Uživatelský avatar

Registrován: 11.05.2013, 23:48
Příspěvky: 10111
Bydliště: Praha
Has thanked: 1953 times
Been thanked: 1517 times
Tak on asi ani python s multicolor znaky pracovat neumí, čili to je pasé. Ale nějak mi uchází tvé počítání znaků. Jako standardně má font velikost 8x8 pixelů. To je jeden znak. Když vezmu jen "hrubou masku" (čili neřeším, že v některých místech, jako je hlava, stačí dva znaky, na nohy jeden na výšku - prostě vezmu masku stojícího Sabíka), tak zabírá 24x48 pixelů - to je 18 znaků. Jenže, protože to bude v 640x256, tak by 24x48 pixelů vypadal děsivě protažený a úzký. My naopak využijeme toho, že pixely jsou v tomto rozlišení obdélníkové a uděláme tak Sabíka jen 24x24 pixelů...nebo 32x32, ať nežerem - to je 16 znaků. Skok je ale jen změna stavu na "jinak stojícího Sabíka", takže je to jen dalších 16. Salto je animované (teď nevím, jestli třema nebo čtyřma framy), tak to tedy zabere víc - ale zase - něco se ušetří na prázdných znacích v dané mřížce.

_________________
Amiga/Amstrad/Atari/Commodore/Mac/Nintendo/PS/PC/Sega/Tandy/ZX


Nahoru
 Profil  
 
PříspěvekNapsal: 30.09.2014, 08:13 
Offline
Pan Generální
Uživatelský avatar

Registrován: 13.05.2013, 09:15
Příspěvky: 2278
Bydliště: Brno
Has thanked: 842 times
Been thanked: 302 times
No nevím, jestli Ti přesně rozumím. 640x256 s velikostí fontu 42, kde zobrazených je 40 pixelů a 1 pixel úplně nahoře a 1 pixel úplně dole jsou nezobrazeny je použito v posledním videu. Samozřejmě se šířkou znaku lze hýbat. Znak má teď šířku 20 pixelů a animaci dělám po 5 pixelech co je 5 pozic znaku pro přechod o 1 úroveň třeba doprava. Asi vím co si neuvědomuješ. Pro přechod sabotéra doprava i kdyby byl tvořen sabotér z jednoho znaku, tedy chtěl by jsem ho posunout po 5 pixelech o 1 pozici doprava je to 5 pozic sabotéra (20 pixelů = 0,5,10,15,20). Tedy i kdyby byl sabotér tvořen z 1 znaku a chci ho takhle posunout, musím použít 5 různých znaků. Bude to tedy 5 stejných znaků s jiným parametrem "spacing" pro proporcionální font. Nedokážu měnit parameter "spacing" v průběhu pohybu sabotéra sněrem doprava (je otázny, jestli to v assembleru jde). Proto použiju 5 stejných znaků s 5 různými parametri "spacing" pro proporcionální font. Tímhle dosáhnu toho, že samotný znak, co zobrazuje sabotéra bude přebírat i grafiku okolí, tedy místnosti, pokud na tomhle místě v místnosti něco bude nakreslený. Proto mi tahle sranda bere tolik znaků ze znakové sady, ale vyřešení problému, aby se pozadí kreslilo i ve znaku, kterým je zobrazen sabotér je pro mne klíčové a věřím že nejenom pro mne.

Úspora ve znacích při výskoku sabotéra nastáva v situaci, kdy sabotér v úplně horní pozici samotného skoku setrvá v téhle pozici v rámci celé šířky 2 znaků, pak ve 2. znaku se bude opakovat logika zobrazení pomocí parametru "spacing" ze znaku který byl před ním. Nevím, jestli tahle situace za skoku nastane, ale ta možnost tam je.

Takže sabotér je tvořen z 1 znaku o velikosti 42 pixelů (vidíme 40 pixelů) a šířce 20 pixelů. Při rozlišení 640 x 256 má sabotér přesně tu samou velikost jakou má na posledním videu můj testovací znak. Uděláme sabotéra šírším? Na kolik to zatím vidíš? Pokud ale bude mít né 20 pixelů, ale třeba 25 a budu animovat sabotéra pořád po 5 pixelech, zabere mi pohyb sabotéra doprava né 5 znaků, ale 6 (ale mám za to, že máme rezervu co se týče počtu znaků v znakové sadě, takže v pohodě). Ještě by bylo asi dobré, aby měl sabotér v zobrazení i po pixelu na levé a pravé straně ze znaku nevyužitou (uvidíme). Šířku znaku je třeba namyslet tak, aby se dal sabotér posouvat po stejných krocích v rámci jeho zobrazení a pohyb sabotéra byl plynulý. Pixely po kterých se nám bude sabotér posouvat na stranu lze měnit. Tyhle parametry (šířka znaku a pixely po kterých se nám bude sabotér posouvat) ovlivňuje to, kolik znaků ze znakové sady mi nějaký pohyb zabere.

EDIT: přikládám radši i foto.
EDIT2: foto mažu - špatný formát zobrazení.

_________________
Amiga - PMD 85


Naposledy upravil Lisiak4 dne 30.09.2014, 09:27, celkově upraveno 1

Nahoru
 Profil  
 
Zobrazit příspěvky za předchozí:  Seřadit podle  
Odeslat nové téma Odpovědět na téma  [ Příspěvků: 47 ]  Přejít na stránku Předchozí  1, 2, 3, 4  Další

Všechny časy jsou v UTC + 1 hodina [ Letní čas ]


Kdo je online

Uživatelé procházející toto fórum: Žádní registrovaní uživatelé a 10 návštevníků


Nemůžete zakládat nová témata v tomto fóru
Nemůžete odpovídat v tomto fóru
Nemůžete upravovat své příspěvky v tomto fóru
Nemůžete mazat své příspěvky v tomto fóru
Nemůžete přikládat soubory v tomto fóru

Hledat:
Přejít na:  
Založeno na phpBB® Forum Software © phpBB Group
Český překlad – phpBB.cz