OldComp.cz
https://oldcomp.cz/

engine pro textovou hru v AmigaPythonu
https://oldcomp.cz/viewtopic.php?f=12&t=1644
Stránka 13

Autor:  Lisiak4 [ 23.07.2014, 01:35 ]
Předmět příspěvku:  engine pro textovou hru v AmigaPythonu

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 :).

Autor:  mborik128 [ 23.07.2014, 10:41 ]
Předmět příspěvku:  Re: engine pro textovou hru v AmigaPythonu

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.

Autor:  Doda [ 23.07.2014, 12:33 ]
Předmět příspěvku:  Re: engine pro textovou hru v AmigaPythonu

Reseni to neni zdaleka optimalni ale argument, ze ho to bavi, asi bude stacit.

Autor:  mborik128 [ 23.07.2014, 13:29 ]
Předmět příspěvku:  Re: engine pro textovou hru v AmigaPythonu

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: )

Autor:  jack-3d [ 23.07.2014, 13:58 ]
Předmět příspěvku:  Re: engine pro textovou hru v AmigaPythonu

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)))))

Autor:  Busy [ 23.07.2014, 14:57 ]
Předmět příspěvku:  Re: engine pro textovou hru v AmigaPythonu

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: ;)

Autor:  zz_indigo [ 23.07.2014, 16:25 ]
Předmět příspěvku:  Re: engine pro textovou hru v AmigaPythonu

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

Autor:  Lisiak4 [ 23.07.2014, 23:34 ]
Předmět příspěvku:  Re: engine pro textovou hru v AmigaPythonu

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.

Autor:  panprase [ 24.07.2014, 20:22 ]
Předmět příspěvku:  Re: engine pro textovou hru v AmigaPythonu

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?

Autor:  Lisiak4 [ 24.07.2014, 20:46 ]
Předmět příspěvku:  Re: engine pro textovou hru v AmigaPythonu

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.

Autor:  Busy [ 24.07.2014, 21:52 ]
Předmět příspěvku:  Re: engine pro textovou hru v AmigaPythonu

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 ;)

Autor:  Lisiak4 [ 24.07.2014, 22:23 ]
Předmět příspěvku:  Re: engine pro textovou hru v AmigaPythonu

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?

Autor:  zz_indigo [ 25.07.2014, 11:05 ]
Předmět příspěvku:  Re: engine pro textovou hru v AmigaPythonu

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.

Autor:  Doda [ 25.07.2014, 12:02 ]
Předmět příspěvku:  Re: engine pro textovou hru v AmigaPythonu

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.

Autor:  misticjoe [ 25.07.2014, 12:06 ]
Předmět příspěvku:  Re: engine pro textovou hru v AmigaPythonu

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)

Stránka 13 Všechny časy jsou v UTC + 1 hodina [ Letní čas ]
Powered by phpBB® Forum Software © phpBB Group
http://www.phpbb.com/