OldComp.cz

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


Právě je 16.04.2024, 15:53

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




Odeslat nové téma Odpovědět na téma  [ Příspěvků: 34 ]  Přejít na stránku 1, 2, 3  Další
Autor Zpráva
 Předmět příspěvku: engine pro textovou hru v AmigaPythonu
PříspěvekNapsal: 23.07.2014, 01:35 
Offline
Pan Generální
Uživatelský avatar

Registrován: 13.05.2013, 09:15
Příspěvky: 2287
Bydliště: Brno
Has thanked: 846 times
Been thanked: 308 times
pracovní podnázev: Jak jsem na Amigu kladivem šel :)

Tak jsem se rozhodl zveřejnit video, jak pracuje můj nedokončený engine pro textovou hru. Je na něm ještě hodně práce.

1. spuštění je při výkonu A1200, v 2. spuštění Python zahlásil chybu, tak jsem to restartnul a 3. spuštěmí je u výkonu A3000, co je Amiga s turbokartou. Pamět je cca na 2 MB po startu systému co je u Pythonu minimum.

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

Použil jsem proporcionální font (různá šířka písma), líbí se mi. To zavádí pár problémů. Vozík, nebo kurzor se po obrazovce posouvá tak, jako by používal font s pevně danou šířkou. To znamená, že nám od zobrazeného písma "utíká", protože u proporcionálního fontu ma celkový text menší šířku než má font s pevně danou šířkou. Typickým příkladem je třeba písmeno "I". V současné době jsou vidět v zobrazení textu mezery. Je to dané tím, že tabulka, která nese informace o tom, kolik má které písmeno pixelů neni zcela hotova (takové vyplňování mne děsně nebaví). Předpokladám, že po její kompletizaci budu moci text napasovat na sebe přesně. Další problém je v jednotlivém zadávaní příkazů. Jak je na videu vidět, pokud zobrazuji větší úsek textu příkazu "POM" jako pomoc (když text vytánu z paměti a nezadávám ho jednotlivým stiskem kláves "P", "O" a "M"), je zobrazen v pořádku, ale u jednotlivého stisku kláves je již problém. Zde nedokážu kurzor vracet, na to musím předat aktivitu samotnému programu a ta vzniká až po zmačknutí klávesy Enter. Nastavit šířku o kterou se má vozík posunout umím, je to ale parametr společný pro všechny písmena. Tohle chci řešit nějakým kompromisem pro malá písmena s tím, že je doporučím používat pro psaní textu.

Teď něco málo o asi největším problému samotného enginu. Krom toho, že je napsaný v Pythonu, samotná pomalost Pythonu mne donutila udělat jistý kompromis. Tím, že používam pro text proporcionální font, musím, jak jsem již psal vracet kurzor zpět, aby jsem mohl psát po celé šířce obrazovky, jinak se mi v cca polovine sámotný text automaticky zalomil (přešel na 2. řádku).

Vracení vozíku o konkrétní pixely jsou ale výpočty navíc... .

Nejdříve jsem měl vracení vozíku po každém slovu. Rychlost vypisování textu na holé A1200 se pro mne stala neúnosná. Rozhodl jsem se tedy zvýšit rychlost vypisování textu na úkor komfortu zadávaní textu pro místnost v samotném programu. Jednoduše řečeno vypisuji text po větších částech, než je 1 slovo. Pokud ale tahle část je větší, než by měla, zalomí se mi text třeba v polovině obrazovky a pokračuje se ve vypisování textu na dalším řádku. V tomhle případe je již pozdě vracet kurzor, když už je samotný text napsán. Musí se tedy odzkoušet úsek textu, který ještě dokáže Workbench zobrazit na 1 řádku a to je opruz. Tímhle jsem ale docílil zkrácení již tak pomalého vypisování textu na polovinu.

zde uvedu jak to v současné chvíly funguje v jedné místnosti:
Kód:
             "3_3_3_3_3_3_03Ocitl jste se ve;strědověkuv hustém;lese.;_2Jako statečný princ Jasoň;hrdě vyrážíte;osvodit;_1princeznu Zlatovlásku ze;zakletí zlého;_1obra Koloděje.;_203...mnoho štěstí!0 0_pom201Zbývá jen vyrazit;_ 2první řádek;2....;3....;_  smažu text pro pomoc;0 0 papír;",


- prvních 6 trojek říká, že po zadání Severu (1.trojka), Jihu (2.trojka) a ostatních smerů (i nahoru a dolů) se skočí na místnost č.3. U Prince Jasoňe to tak u výchozí místnosti je.
- 03 - text začne vypisovat na 3. znaku
- mezi "; ;" je úsek textu pro zobrazení (pak posun vozíku zpět)
- "_" zalomení textu, "2" - přeskoč 1 řádek
- "....Koloděje.;"_203 - "_" - zalom řádek, "2" - přeskoč 1 řádek, "03" - začni text na 3. znaku.
- "0 0" - konec textu místnosti.
- "_pom" - text pro příkaz "pom" jako pomoc, "201" - z toho první číslo "2" - pomoc má 3 části (0,1,2), pak "0" - po 1. zadání "pom" se vypíše 1. část (0), pak se přejde na část 2. (1)....
.... _ 2první řádek .... (2. část příkazu "pom"), ";" další řádek 2. části, ";" 3. řádek 2. části. .....
.... pokud místo čísla 0-9 dám cokoliv jiného, ja tam mám mezeru (3....;_ (mezera) smažu... ) , ale je jedno co tam bude, říkám programu aby všechen text pro příkaz "pom" z místnosti smazal, mohl by jsem ho ale nasměrovat na kteroukoliv část příkazu "pom". Můžu klidně začít od posledí části "pom", přecházet k 1. části a pak pořád cyklovat pouze 1. část "pom" dokola. Pokud bude "pom" smazán, bude použita univerzální věta pro všechny místnosti.
- za dalším "0 0" jsou věci, které místnost obsahuje. V tomhle případě je to papír.

Vše co zatím engine umí je na videu, ostatní je třeba dodělat.

programování zdar :).

_________________
Amiga - PMD 85


Nahoru
 Profil  
 
PříspěvekNapsal: 23.07.2014, 10:41 
Offline
Radil
Uživatelský avatar

Registrován: 19.07.2013, 14:21
Příspěvky: 258
Bydliště: Košice
Has thanked: 143 times
Been thanked: 380 times
Pocuj, o Ancu som zavadil iba okrajom niekedy okolo `95, ale uz vtedy tam existoval Amos Basic a co som videl nejake dema z neho, tak sa tam dali robit velmi pekne veci.
Aky ma toto cele vyznam, tlacit do chudatka 16bitoveho nejaky divny jazyk, ktory sa interpretuje nejakym este divnejsim virtualnym strojom, ktory ma zjavne ma so svojim behom viac problemov ako uzitku.
A vysledok neodpoveda tej nabusenosti stroja, ktory je k tomu potrebny, sorry... :poke:

IMHO urobit takyto textovkovy engine v niecom, k comu ma pristup kazdy amigista a bude to bezat na vsetkom od Anci 500 by mal podla mna vacsi vyznam pre zivot, Vesmir a vsetko ostatne.

PS: Argument, ze v nicom inom nevies programovat ako v Pythone neberiem, to je najinvalidnejsi argument zo vsetkych.


Nahoru
 Profil  
 
PříspěvekNapsal: 23.07.2014, 12:33 
Offline
Pan Štábní
Uživatelský avatar

Registrován: 12.05.2013, 21:39
Příspěvky: 1976
Bydliště: Praha
Has thanked: 85 times
Been thanked: 255 times
Reseni to neni zdaleka optimalni ale argument, ze ho to bavi, asi bude stacit.


Nahoru
 Profil  
 
PříspěvekNapsal: 23.07.2014, 13:29 
Offline
Radil
Uživatelský avatar

Registrován: 19.07.2013, 14:21
Příspěvky: 258
Bydliště: Košice
Has thanked: 143 times
Been thanked: 380 times
Doda píše:
argument, ze ho to bavi, asi bude stacit.
Tak ale toto nikomu neberiem, je to VYBORNE, ze sa nieco take deje! :dthu:
Ale pre mna osobne bolo bolestne, ked som videl, ako ta motorola riesi 1.200.000 nadbytocnych instrukcii a mrha I/O operaciami na to, aby virtualna masina interpretovala relativne jednoduchy programik.
Ako, uznavam, ze nie kazdy si mozne hned nabrnkat programky v strojaku a preto som navrhol Amos ako alternativu, jednoduchy jazyk, ktory na tu platformu tak-nejak patri...
(narozdiel od Pythona ci Javy, ktore vznikli na PC a tam by mali rovno aj zahynut :angel: )


Nahoru
 Profil  
 
PříspěvekNapsal: 23.07.2014, 13:58 
Offline
Radil
Uživatelský avatar

Registrován: 13.05.2013, 22:45
Příspěvky: 347
Bydliště: Brno
Has thanked: 77 times
Been thanked: 72 times
No Lisiak ví, že existují optimálnější jazyky pro Amigu. Vybral si Python, je to jeho věc. Možná, že to pak zkusí s AMOSem, nebo Blitzbasicem a již nebude muset řešit ztráty výkonu. Jediné, co mě zajímá, jestli bude na příští RESETkání nějaká hra v compu he hé ;o)))))

_________________
http://jack.untergrund.net [ Obrázek A500+ Obrázek A600 ObrázekA1200 ObrázekA1200T Obrázek A2000 ObrázekA4000 ObrázekA4000T ObrázekMac Mini G4 ]


Nahoru
 Profil  
 
PříspěvekNapsal: 23.07.2014, 14:57 
Offline
Óm Nejvyšší

Registrován: 22.05.2013, 21:14
Příspěvky: 3659
Bydliště: Bratislava
Has thanked: 373 times
Been thanked: 795 times
jack-3d píše:
No Lisiak ví, že existují optimálnější jazyky pro Amigu. Vybral si Python, je to jeho věc. Možná, že to pak zkusí s AMOSem, nebo Blitzbasicem a již nebude muset řešit ztráty výkonu.
Ja by som skusil asembler :poke: :whist: ;)


Nahoru
 Profil  
 
PříspěvekNapsal: 23.07.2014, 16:25 
Offline
Pan Štábní
Uživatelský avatar

Registrován: 13.05.2013, 10:52
Příspěvky: 1669
Bydliště: Mliecna draha
Has thanked: 19 times
Been thanked: 124 times
Busy píše:
jack-3d píše:
No Lisiak ví, že existují optimálnější jazyky pro Amigu. Vybral si Python, je to jeho věc. Možná, že to pak zkusí s AMOSem, nebo Blitzbasicem a již nebude muset řešit ztráty výkonu.
Ja by som skusil asembler :poke: :whist: ;)


ked uz sebatrizen tak racej brainfuck. Tu su zdrojaky kompilera: http://aminet.net/package.php?package=d ... fuck-2.lha

_________________
Amiga 600 + a602, Amiga 600 PCB only, Commodore 64+ZZ-RAM V1.0 512k+C1541(18k RAM)+sd2iec +9.600 Rs232, Commodore 116 + 64k upgrade, ZX 81 ISSUE1 + ZX81XRAM

http://zz-indigo.mavipet.sk/


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

Registrován: 13.05.2013, 09:15
Příspěvky: 2287
Bydliště: Brno
Has thanked: 846 times
Been thanked: 308 times
Díky všem za jejich názory. Programování v poslední době beru již relaxačně. Samozřejmě že Python používám i na PC a je pravdou, že se s ním více hraju pod Amigou. Jak jsem již psal, mám v plánu C, ale veškerý čas mi bere samotný Python. Když engine dokončím, pak možná časem bude i prostor přepsat to do C. Ja mám radost i z toho, že jsem se posunul opět někam jinam. Přeci jeno mít textovku s asi 8500 řádkami a s asi 200 řádkami je celkem rozdíl. Ta s 8500 řádkami potřebovala ma Amize 11,5 MB RAM. Teď se vlezu asi do 3, nebo možná i do 2 MB RAM. A náběh programu? Zdejší verze hodně pomalý a ta s 8500 řádkami? No v té době jsem ještě neuměl dát emulaci na výkon A1200. Jen jsem vypl FASTEST POSSIBLE a JIT, co ve výsledku jednoznačně převyšuje výkon A1200 a pokud se nepletu tak při téhle volbě se textovka spustila za asi 22 minut - to byl teprve extrém. V současné době je to hodně líné, ano textovka by na Amize rozhodně neměla běžet tímhle tempem, to ale nic nemění na faktu, že při trpělivosti to začíná být použitelný. Kdyby jsem použil fixní font, byla by situace opět veselejší, ale mne se takové písmo prostě nelíbí. Né pro textovku, pro uživatelksý program - to je jiná, to rozhodně fixní font.

No ono to s tím Pythonem bylo tak, že jsem ze začal učit programovat na PC. Po necelém roce jsem zjistil, že existuje i port pro Amigu. Co nasledovalo a dopady již jsou známy.

A taky když tu nejrychleší Amiga variantu algoritmu pustím pod PC - to je frkot :).

Jinak znám ještě jednoho, co se hraje s AmigaPythonem, ale nechytám se na něj. To co u něj neumí Python - skočí z Pythonu do assembleru, a má vystaráno. To je teprve kombinace, to nejrychlejší s tím nejpomalším.

_________________
Amiga - PMD 85


Nahoru
 Profil  
 
PříspěvekNapsal: 24.07.2014, 20:22 
Offline
Kecálek
Uživatelský avatar

Registrován: 12.05.2013, 19:30
Příspěvky: 210
Has thanked: 18 times
Been thanked: 48 times
jack-3d píše:
No Lisiak ví, že existují optimálnější jazyky pro Amigu. Vybral si Python, je to jeho věc. Možná, že to pak zkusí s AMOSem, nebo Blitzbasicem a již nebude muset řešit ztráty výkonu. Jediné, co mě zajímá, jestli bude na příští RESETkání nějaká hra v compu he hé ;o)))))


Cywe neplac uz, ja ti snad i neco na to Rezetkani udelam. Ju?


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

Registrován: 13.05.2013, 09:15
Příspěvky: 2287
Bydliště: Brno
Has thanked: 846 times
Been thanked: 308 times
Akorát začínám být nalomen s tím C. Žeby Další věc co nedodělám? Jako nic by mi nevadilo, ale mám v hlavě pořád nějaké animace. To je to, co mne teď láká nejvíce. S Pythonem díky jeho pomalosti jsem na Amize schopen udělat jen jednoduché animace. To mi ale nestačí.

Dá mi C dostatečný výkon na animaci? Chci se věnovat multiplatformnímu jazyku.

_________________
Amiga - PMD 85


Nahoru
 Profil  
 
PříspěvekNapsal: 24.07.2014, 21:52 
Offline
Óm Nejvyšší

Registrován: 22.05.2013, 21:14
Příspěvky: 3659
Bydliště: Bratislava
Has thanked: 373 times
Been thanked: 795 times
Lisiak4 píše:
Akorát začínám být nalomen s tím C.
To je hned po asembleri dobra volba. Niektori ludia (hlavne jeho odporcovia) hovoria ze cecko je v podstate taky subor portable makier pre asembler ;)


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

Registrován: 13.05.2013, 09:15
Příspěvky: 2287
Bydliště: Brno
Has thanked: 846 times
Been thanked: 308 times
Busy: OK, toto ma ešte zaujíma. Mal som zato, že C++ má bližšie k assembleru. Ako ja viem to, že C++ je objektívne, čo assembler z pochopitelných dovodov asi neni. A viem to, že C++ vzniklo z C. Lem ma zaujíma, čo má teda skutočne bližšie z týchto 2 jazykov k assembleru?

_________________
Amiga - PMD 85


Nahoru
 Profil  
 
PříspěvekNapsal: 25.07.2014, 11:05 
Offline
Pan Štábní
Uživatelský avatar

Registrován: 13.05.2013, 10:52
Příspěvky: 1669
Bydliště: Mliecna draha
Has thanked: 19 times
Been thanked: 124 times
Lisiak4 píše:
Busy: OK, toto ma ešte zaujíma. Mal som zato, že C++ má bližšie k assembleru. Ako ja viem to, že C++ je objektívne, čo assembler z pochopitelných dovodov asi neni. A viem to, že C++ vzniklo z C. Lem ma zaujíma, čo má teda skutočne bližšie z týchto 2 jazykov k assembleru?


C je asi jeden najblizsich jazykou k asembleru co poznam.

_________________
Amiga 600 + a602, Amiga 600 PCB only, Commodore 64+ZZ-RAM V1.0 512k+C1541(18k RAM)+sd2iec +9.600 Rs232, Commodore 116 + 64k upgrade, ZX 81 ISSUE1 + ZX81XRAM

http://zz-indigo.mavipet.sk/


Nahoru
 Profil  
 
PříspěvekNapsal: 25.07.2014, 12:02 
Offline
Pan Štábní
Uživatelský avatar

Registrován: 12.05.2013, 21:39
Příspěvky: 1976
Bydliště: Praha
Has thanked: 85 times
Been thanked: 255 times
C samo o sobe bude umet za chvili a rozhodne to je vynikajici volba, ale v urcitem smeru se ti v tom treba nebude programovat dobre. Aby to bylo multiplatformni, musis jeste pouzitnejakey framework pro napojeni na prostredky daneho pocitace (aby jsi zobrazovat, zvucel, sitoval a tak), coz je treba SDL, hodne najdes na http://amiga.sourceforge.net/ nebo na Aminetu.


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

Registrován: 11.05.2013, 23:48
Příspěvky: 10121
Bydliště: Praha
Has thanked: 1956 times
Been thanked: 1521 times
A co třeba BlitzBasic? Ten je pro PC i Amigu. O portovatelnosti mezi těmito verzemi by mohl něco bližšího napsat Holy. (do samostatného vlákna ofcoz, bo jsem už i tak dost OT)

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


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ů: 34 ]  Přejít na stránku 1, 2, 3  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 2 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