25. října 2015

Vektorové písmo v Game Maker Studiu

Vektorové písmo v Game Maker Studiu


Dneska jsem si hrál s písmy v GMS. Jak asi většina lidí ví, písma ( fonty ) mohou být vektorová nebo rastrová. Rastrová jsou uložena po obrazových bodech ( pixelech ) jako běžné obrázky. Vektorová písma mají zaznamenány souřadnice čar, kterými se písmena nakreslí.


Rastr

Vektor

Obojí způsob má své výhody a nevýhody, ale světu písma dominuje v současnosti vektorový záznam ( např. díky Windows stále oblíbené TTF - TrueType ), Proto je poněkud divné, že Game Maker Studio narozdíl od svého předchůdce GM8 používá rastrový záznam a to i tehdy, když zdrojem písma v operačním systému je vektorový font. GMS prostě ( nebo možná sprostě ) vykreslí písmena v dané velikosti do rastrové textury a ty pak používá. Výsledkem je obrovská spotřeba paměti a nutnost ukládat různá rozlišení písem zvlášť. Přepočítání velikosti ( škálování ) je u rastrových písem dost vidět. Především pokud jde o zvětšování. Kdyby písmo zůstalo vektorové, zabíralo by minimum paměti a nebyl by problém ho vykreslit hladce v téměř jakémkoli rozlišení. Ale frajeři u Yoyogames asi usoudili, že uživatelé GMS stejně nic nepoznají a rastr se jim lépe programoval. Tak jaképak copak.

Při honbě za fičurami se nějak seběhlo, že byla do GMS začleněna částečná podpora pro formát SWF, což je formát vektorový a tak mě zajímalo, jak to vlastně bude vypadat, když do GMS nahraji nějaké to SWF. Nahrává se to do sprite editoru jako otevřít sprite. První, co člověk zjistí, je fakt, že většina někde stažených SWF souborů skončí errorem, vypadá jinak než má nebo prostě není vůbec vidět. Je opravdu vzácnost, když nějaké náhodné swf vypadá správně. Já jsem se zajímal o písma a tak jsem přišel na způsob, který alespoň trochu dává výsledky.

V balíčku SWFTools lze najít spustitelný soubor swfc.exe, který je třeba spouštět z příkazové řádky ( run - cmd ). Jako parametr se uvede textový soubor obsahující příkazy pro vytvoření swf. Jednoduché příklady jsou ZDE. Takto vzniklý soubor SWF lze načíst v Game Makeru Studio, pokud neobsahuje nějaké efekty. Čisté písmo se mi načíst podařilo. Sprite editor ho neumí editovat, neumí ho ani pořádně zobrazit, ale v hrách to částečně použít jde. Pokud člověk touží po písmenech přes celou obrazovku v rozlišení full HD nebo větší, tak asi stejně nic moc jiného nezbývá. Naopak při malých velikostech písma dával Game Maker překvapivě špatné výsledky. Vykreslování se odbývá funkcemi rodiny draw_sprite a není nijak závratně rychlé.

Výsledky pokusů s SWF písmem jsou k vidění v Code Garage. Soubory Text.exe a BigText.exe pracují s vektorovým SWF, TextClassic.exe to řeší normálním fontem v resource Fonts. Je třeba poznamenat, že zatímco u Classic je velikost na pokraji možností, importované SWF mělo pořád ještě velikostní rezervu. Je ovšem jasné, že jen málo aplikací či her bude nutně potřebovat tak zvětšené písmo.

3.11.2015 Opraven link. Teď už tam fakt ukazuje. :-)

Žádné komentáře:

Okomentovat

Komentář vypovídá většinou o autorovi víc, než by byl jinak ochoten sdělit.