ZX Spectrum Next / projekt ve vývoji
Warcraft: Orcs & Humans na ZX Spectrum Next
Hru jsem začal dělat hlavně proto, že mi pomalu docházely rozpracované projekty. Ano, opravdu projekty dokončuji, ať si o mně myslíte cokoliv. Začínalo tedy reálně hrozit, že bych se mohl nudit – a takový stav je samozřejmě potřeba řešit okamžitě a bez zbytečné opatrnosti.
Řekl jsem si tedy, že když už něco nového, tak tentokrát něco trochu většího. A protože mi, alespoň podle mého vlastního velmi objektivního názoru, předělávky z PC docela jdou – Warmux, FableDevil, ZX Moto a pár dalších drobností – proč si rovnou nevybrat jednu z největších ikon devadesátých let?
Takže ano. Warcraft. První Warcraft. Orcs & Humans. Real-time strategie, kterou se teď pokouším nacpat do ZX Spectrum Next. Protože když už si člověk přidělává práci, měl by to dělat pořádně.
Jako referenci pro čísla a chování používám war1gus, otevřenou reimplementaci Warcraftu nad enginem Stratagus. Odtud beru statistiky jednotek, ceny, vzorce poškození a závislosti budov. Grafiku a zvuky si build vytahuje z původního DATA.WAR.
V jakém je to stádiu
- Kampaň o čtyřech misích. Výhra mě posune dál, prohra mě pošle poslušně zpátky tam, kde jsem selhal. Briefing se ukáže tam, kde ho mapa má.
- Obě strany. Lidé i orkové mají vlastní hlášky, portréty v panelu i barvy jednotek.
- Pět typů jednotek. Dělník, pěšák, lučištník, katapult a rytíř, samozřejmě i s orkskými protějšky. Celkem 32 slotů, 16 na stranu.
- Pět staveb. Farma, kasárna, pila, strážní věž a kovárna. Tvrz a zlatý důl jsou na mapě od začátku.
- Hospodářství. Těží se zlato, kácí les a ten opravdu ubývá. Farmy hlídají zásobování a ceny vycházejí z upstream dat.
- Čtyři vylepšení. Meč, štít, šíp a střechy, vždy po dvou stupních.
- Opravy budov. Dělník opravuje na rozkaz a když stojí vedle poškozené budovy a nudí se, pustí se do toho sám. Aspoň někdo v projektu projevuje iniciativu.
- Boj. Meče, šípy, katapultí kameny, mlha války a věže, které střílejí.
- AI protivník. Staví, najímá, hromadí vlny, kupuje vylepšení a opravuje si budovy.
- Rozhraní. Boční panel na Layer 2, minimapa s klikáním i tažením, stránkovaná tlačítka a výběr až devíti jednotek rámečkem.
- Zvuk. Původní hlasy a ruchy přehrávám přes DMA do DACu Nextu.
Co všechno obsahuji .WAR data?
| Co | Odkud | Kolik |
|---|---|---|
| Terén | tilesety a mapy | čtyři mapy, 65 až 77 megadlaždic a 302 až 333 minidlaždic |
| Budovy | kresby budov | tvrz, farma, kasárna, pila, věž, kovárna, zlatý důl – obě strany |
| Jednotky | sprity jednotek | 166 patternů, 16 trvale v paměti, 112 slotů cache pro 150 póz |
| Ikony a portréty | ikonový list | jednotky, budovy a vylepšení pro obě strany |
| Titulní obrazovka | obrázek menu | 320×256 v pěti bankách Layer 2 |
| Písmo | fonty | 64 proporcionálních znaků 9×9 |
| Hlasy a ruchy | vzorky | 55 vzorků v 26 skupinách, asi 400 KB |
| Statistiky a ceny | Lua skripty war1gus | životy, brnění, poškození, dosah, ceny, časy stavby a vylepšení |
Co jsem musel obětovat
ZX Spectrum Next má proti původnímu Spectru luxusní výbavu, ale Warcraft vznikal pro úplně jiný svět. V jedné paměťové baňce např. řeším hodně málo volného místo, neboť se o něj dělí tilemapa, její druhá kopie pro scrollování, definice dlaždic a mlha války. Šestnáct kilobajtů je hodně, dokud se do nich nepokusíte nacpat Warcraft.
| Rozpočet | Kolik je | Co to stálo |
|---|---|---|
| Minidlaždice | 335 | z třinácti lesních map se vejdou čtyři |
| Paletové slices terénu | 16 | poslední patří mlze, paleta budov je zúžená |
| Megadlaždice | 256 | 185 na terén, zbytek na budovy a přechody |
| Paletové slices spritů | 16 | rytíř používá barvy pěšáka |
| Spritové patterny | 128 | 112 slotů cache obsluhuje 150 póz |
| Barvy | 3 bity na kanál | část původní palety se slije dohromady |
- Jeden tileset. Les ano, bažina a jeskyně zatím ne.
- Zlatý důl je 2×2 místo 3×3. Věž a kovárna také dostaly dietu. Ne kvůli estetice, ale protože minidlaždice opravdu nejsou nafukovací.
- Prořezávání lesa má podle mapy tři až jedenáct stupňů.
- Pět typů jednotek ze sedmi. Kouzelníci zatím chybí – a s nimi mana, cílení a deset kouzel. Prostě maličkost na víkend.
- Zvuk je mono a osmibitový. Dvě hlášky jedou na 12,8 kHz, zbytek na 6,4 kHz.
- Hudba zatím není. První dva AY na ni čekají. Trpělivěji než já.
- Je potřeba Next s 2 MB RAM. Hotový
.nexmá přibližně 928 kB.
Kde se od Warcraftu vědomě odchyluji
Ne všechno je ústupek hardwaru. U pár věcí jsem se rozhodl, že když už portuju hru po třiceti letech, nemusím povinně převzít i každou její tehdejší nepříjemnost.
- Devět označených jednotek místo čtyř. Čtyřka je původní limit, ale když rámečkem označíte šest vojáků a hra vám vezme čtyři, není to nostalgie, ale otrava.
- Skupina se na cíli rozestoupí. Jednotky se tedy neskládají přes sebe do jednoho velmi statečného superspritu.
- Klávesa K propustí jednotku. Hodí se, když je potřeba uvolnit limit zásobování.
- Vylepšení kupuji v kovárně. Originál prodává střechy v pile, ale tady jsem všechno soustředil do jednoho místa.
Co bylo zajímavé vyřešit
Palety: nejdřív převést, pak balit
Tilemapa Nextu má čtyři bity na pixel a atribut vybírá jeden ze šestnácti šestnáctibarevných slices. Warcraftova dlaždice si klidně sáhne kamkoliv do 256 barev, protože proč by mi to měla dělat jednoduché. Správné pořadí se ukázalo být: nejdřív barvy převést na RGB333 Nextu a až potom je balit.
Mlha
Původně byla mlha války uložená v bitu 7 mapového bajtu. Bylo to elegantní, levné a zároveň to srazilo limit megadlaždic na 128, pod který se z 36 map vešla přesně jedna. Takže elegantní řešení letělo z okna a mlha dostala vlastní bitmapu.
Zlato z ničeho
Jeden z těch bugů, které jsou tak pěkné, že je skoro škoda je opravovat. Dělník zaklíněný o tvrz se dokázal prohlásit za dorazivšího k dolu, dostal náklad zlata a protože stál u haly, rovnou ho odevzdal. Přibližně sto zlata každou vteřinu a půl. Ekonomika snů.
Díra, která vede šikmo
Pohyb se řešil po osách zvlášť, takže úzká diagonální mezera mezi dvěma stromy byla neprůchozí: krok do strany trefil jeden strom, krok nahoru druhý. Teď když obě osy selžou, ale diagonální políčko je volné, jednotka tam může projít přímo.
Ano, je to větší projekt
Původně jsem jen nechtěl, aby mi došly rozdělané věci. Teď mám Warcraft na ZX Spectrum Next, skoro megabajtový NEX, desítky zdokumentovaných funkcí a další položky na seznamu. Takže dobrá zpráva: nuda opět úspěšně odvrácena.






