Prince of Persia

Vzhledem k tomu, že se bude pravděpodobně jednat o rozsáhlý a dlouhodobý projekt, bude mít stránka k této hře povahu spíše úschovny vývojových řešení jednotlivých modulů. Teprve pokud se podaří hru dotáhnout do konce, bude stránka převedena na standardní informační stránku hry.

Vývoj bude postupovat po těchto modulech:

  • statická grafika pozadí (kresba LEVELů)
  • zobrazovač postavy hráče (adaptace modulu TriPlane vyvinutého pro hru The Magician’s Curse)
  • grafika ostatních pohyblivých objektů (pochodně, mříže, stráže, apod.)

Řešení každého z těchto dílčích modulů je na hraně možností PMD-85 i za předpokladu využití 64kB RAM. Pokud se hra nevejde do 64kB RAM, zveřejním knihovny ale hru nebudu uvolňovat. Spíše bych ještě vyzkoušel zásadní redukci animačních dat, neboť tam i desetiny procent ušetřeného prostoru mohou vzniklou situaci vyřešit.

Oficiální startovní výstřel zazní 1. 2. 2020

14 komentářů u „Prince of Persia

    1. Libor L.A.

      Nejprve musím vyčistit stůl od The Magician’s Curse. Dotáhnout organizačně závěrečnou fázi této hry. Ale je pravda, že hlava už podvědomě upravuje knihovny pro PoP..

    1. Libor L.A.

      Nene. Já píšu hry pro PMD-85. Tím myslím to skutečné, fyzické PMD-85. To je stěžejní podmínka, ze které nemohu slevit. Takže bez 256kB RAM, tím pádem bez hardwarového přepínání stránek videoram a jiných vymožeností. Prostě to musí jet na skutečném železe. To je dost velká výzva.

      Ale zrovna dělám animaci postavy Prince mezi pozadím a popředím statické scény a rychlost se jeví jako dostatečná a to posouvám postavu po dvou pixelech. Druhá věc je, nakolik rychlost postavy Prince zpomalí například animace padajících desek. To i na originálu viditelně hru zpomaluje. Originál má několik prioritních úrovní, ve kterých jsou bitmapy řazeny. Ale já si teď momentálně myslím, že by měly stačit roviny tři (pozadí, pohybující se objekty a popředí). Do tohoto systému se pokusím hru natlačit. Spíše teď řeším dilema, zda zvolit formát obrazovky 10×3 dlaždice (originál Apple) nebo 8×3 dlaždice (tuším konverze pro ZX Spectrum). Formát 8×3 ideálně vykrývá obrazovku PMD-85, vypadá proporčně lepší a systémově to řeší „zanoření se“ postavy hráče mimo obrazovku na levém a pravém okraji..

      1. Zdeněk

        ok, ok…
        Njn to dělají asi ty filmy, samá SCI-FI, to je jeden úplně zblblej…

        tak to se teda ale snaž, ať to to zase k něčemu vypadá 🙈
        Zatím to vypadá, že já si právě sám odpověděl na své dilema…
        Tak zlom “ si “ vaz 😉

  1. Libor L.A.

    Tak pořád nic, pořád jsem nic nechytil. Nahazuji udici, ale nic se nechytá. Takže začnu asi tím, že metodou TOP-DOWN začnu (už jsem vlastně začal) přepisovat originál z procesoru 6502 na i8080. Tím se mi snad trochu blíže podaří zjistit systém, jakým do sebe jednotlivé knihovny zapadají a jaké datové struktury sdílí. Důvod proč se znovu zabývám variantou doslovného přepisu originálu je ten, že mám takový neodbytný pocit, že ten kód půjde výrazně zkrátit. Částečně kvůli nižší „hutnosti“ kódu procesoru 6502 obecně, a částečně kvůli tomu, že tam prostě některé věci nedám, či je vyřeším jinak (samozřejmě úsporněji). Tato varianta má totiž kouzlo v tom, že dané pojetí prostě přirozeně integruje všechny funkce hry a nemusím nic vyvíjet ve smyslu volby algoritmů „vyšších struktur“.

    Souběžně s tím budu pracovat na alternativní verzi vykreslovacího jádra, které nepotřebuje řadit bitmapy objektů ve správném pořadí za sebe a pak výsledek hodit na obrazovku. Již zmíněná knihovna TriPlane (či jen její část TristatePixel) umožňuje totiž implicitně řadit pohyblivý objekt mezi popředí a pozadí a děje se tak téměř beze ztráty rychlosti až při vykreslování pohyblivého objektu přímo do videoram. Výsledek, jak již bylo řečeno, můžete posoudit ve hře The Magician’s Curse, kde je tato metoda použita při vykreslování postavy hráče. Ovšem rizikem je, že se dostanu do slepé uličky, pokud se v průběhu vývoje ukáže, že tento přístup není slučitelný s interními algoritmy hry.

    Už jsem téměř rozhodnutý, že aby místnosti lépe vykryly plochu obrazovky, bude struktura obrazovky členěna na 8×3 modulů, tak jak to má ZX Spectrum. Je to trochu jiné než originál Apple, ale podle mne to není nějak moc násilná změna. Díky tomu bude využito všech 48 „textových“ sloupců na obrazovce. Opuštěná varianta „originál 10×3 moduly“ vykrývala pouze 40 „textových“ sloupců obrazovky a obraz místnosti působil příliš kostkatě (ne ve smyslu rozlišení ale ve smyslu poměru stran herní plochy).

    Tolik tedy zpráva o aktuálním vývoji. Asi ještě dlouho nebude nic vidět. Ale neusnul jsem..

  2. Zdeněk

    Zní TO a pravděpodobně TO i vypadá jako správná cesta správným směrem, aniž by se jednalo jen
    o pouhou “ nudnou “ kopii toho co už tady bylo…

    Jen tak dál …

      1. Zdeněk

        „… no tak to mi teda nalaď mokrý dudy …“😆😉
        To by byla teda velká pecka …

        ( Já, už budu hodný, “ dědečku “ ) ✌

        1. Libor L.A.

          Tak všechno nejlepší k jmeninám a ten jeden pixel na hlavě toho íránce Ti rezervuji. Snad bude z boku vidět..

          1. Zdeněk

            Díky, díky…dneska mám navíc ještě narozeniny
            😎😉
            ( Dle dřívějšího výkladu je jméno Zdeněk považováno za českou podobu latinského jména Sidonius. Jméno by se pak vykládalo jako „původem ze Sidonu”, „sidonský”. Sidonie bylo přitom antickým městem, které dnes pod názvem Saida najdeme na území Libanonu…. )

  3. Libor L.A.

    Dnes technologický průlom. Pokud hru nedokončím, určitě to nebude proto, že by se nevešla do 64kB RAM. Vejde. A začínám si myslet, že by to možná šlo vtěsnat i do 48kB. I když asi za cenu ořezání nějakých těch méně důležitých animačních dat. Pro 64kB verze PMD-85 by hra byla komplet, pro 48kB verze by mohla být ta ořezaná – alespoň něco.

    Co se tedy dnes stalo?

    1) Díky prvnímu stupni komprese to vypadá, že délka animací postavy hráče spadne z 30kB na cca 22kB (extrapolace z 1/16 převedených dat). Ještě mám připraven druhý stupeň komprese, který by měl ušetřit dalších cca 2-3 kB.

    2) Hra zřejmě nebude potřebovat stínovou videoram o délce cca 12kB! Momentálně prováděné pokusy ukazují, že by snad mohl stačit lokální bufer, navíc umístěný v zápisníku „napravo“ od videoram, kterážto oblast paměti je jinak dost obtížně využitelná.

    3) Mám (pravda, prozatím teoreticky) připraven systém komprese statické grafiky pozadí.

    4) Dnes sestavené demo animuje běh postavy hráče na pozadí a odhadem to vytěžuje procesor tak na 10-15%. Nevěřím svým očím.

    5) Hru zřejmě půjde synchronizovat UARTem v časovém rámci 100ms na jeden krok hry.

    Takže další krok: udělat procedury pro sestavení místnosti a spojit se zárodkem animačního jádra.

    1. Zdeněk

      Houstone, rozumíme a blahopřejeme, pokračujte dál v daších plánovaných i neplánovaných krocích, čekáme na další spojení a nové objevy …
      konec …

Napsat komentář

Vaše emailová adresa nebude zveřejněna.