Outline text

Sem vkládejte editovatelné kusy kódu a tutoriály.
Odpovědět
Blackpuffle
Příspěvky: 397
Registrován: srpen 7, 2011, 5:06 pm
Facebook: http://facebook.com/

Outline text

Příspěvek od Blackpuffle » prosinec 2, 2015, 6:17 pm

Zdravíčko ;)
Delší dobu tu už nechodím, až za poslední asi týden, kdy jsem sám potřeboval poradit. Proto jsem si pro vás připravil jednoduchý script, který slouží pro outline (obrys) textu.

Script je jednoduchý a zvládne ho i naprostý začátečník :)

Nastavení:
Základem je si vytvořit nový script ( :gmico107: ), pojmenovat ho například draw_text_outline
a do něho vložit toto:

Kód: Vybrat vše

/* draw_text_outline(x,y,str,col,col_outline); */
/*
argument0 = x (iXová pozice pro vykreslení textu)
argument1 = y (Ypsilonová pozice pro vykreslení textu)
argument2 = string (text samotný)
argument3 = text color (barva pro text - vnitřní)
argument4 = outline color (barva pro text - vnější, tedy obrys)
argument5 = thickness (tloušťka obrysu)
*/

// Outline string (obrys)
draw_set_color(argument4);
draw_text(argument0+argument5,argument1+argument5,argument2);
draw_text(argument0-argument5,argument1-argument5,argument2);
draw_text(argument0,argument1+argument5,argument2);
draw_text(argument0+argument5,argument1,argument2);
draw_text(argument0,argument1-argument5,argument2);
draw_text(argument0-argument5,argument1,argument2);
draw_text(argument0-argument5,argument1+argument5,argument2);
draw_text(argument0+argument5,argument1-argument5,argument2);

// Basic string (vnitřní text)
draw_set_color(argument3);
draw_text(argument0,argument1,argument2);

Použití:
v draw eventu ( :gmico129: ) vložit script ( :gmico9: ):

Kód: Vybrat vše

draw_text_outline(x,y,text,barva,barva_obrysu,tloustka_obrysu);
tedy například:

Kód: Vybrat vše

draw_set_font(font_basic);
draw_set_halign(fa_left);
draw_set_valign(fa_middle);
draw_text_outline(10,50,"Velkej chytrák",c_white,c_black,2);
Bez názvu.png
1. text je při tloušťce 1..
5. text je při tloušťce 5..

Není to asi nejlepší řešení, ani pro grafickou kartu. Při větší tloušťce už také dělá neplechu. Využití je spíše pro tloušťku 1 nebo 2. Ale postačí pro menší efekt :)
Proč to dělat jednoduše, když to jde i složitě?
Zeptáš-li se, budeš blbcem pět minut. Nezeptáš-li se, budeš blbcem celý život.

Goblin
Příspěvky: 136
Registrován: červenec 2, 2014, 2:42 pm

Re: Outline text

Příspěvek od Goblin » prosinec 3, 2015, 9:38 am

Ahoj
Tohle bude fungovat i při větších tloušťkách: ;)

Kód: Vybrat vše

var xx,yy,text,tloustka,barva,barva_obrysu,a,b;

xx=argument0
yy=argument1
text=argument2
tloustka=argument3
barva=argument4
barva_obrysu=argument5

draw_set_color(barva_obrysu)

for(a=-tloustka;a<=tloustka;a++){
    for(b=-tloustka;b<=tloustka;b++){
        draw_text(xx+a,yy+b,text)
    }
}

draw_set_color(barva)
draw_text(xx,yy,text)

A o výkon bych se neobával. Pokud nebudeš provádět takové extrémní nesmysly, jako je třeba tloušťka >>50, neměl bys mít problémy. :) Samozřejmě že nejefektivnější by asi bylo to nakreslit jen jednou do surfacu a uložit jako sprite. Kéž bych to uměl...

P.S.: Další šílená věc, kterou jsem si vyzkoušel: Do alarm[0] a Create zadej "alarm[0]=50" a jako tloušťku obrysu pak do skriptu pošli něco jako "abs(alarm[0]-25)/4". Je to celkem sranda. Bolí z toho oči, ale kdybys chtěl upoutat hráčovu pozornost, můžeš tak zablikat jen na pár vteřin a určitě si všimne. Jen se s tím nechlub žádnému epileptikovi. :D
"Understanding is not required. Only obedience."

Uživatelský avatar
Satik64
Příspěvky: 324
Registrován: srpen 5, 2011, 10:47 pm
Facebook: http://facebook.com/
Kontaktovat uživatele:

Re: Outline text

Příspěvek od Satik64 » prosinec 3, 2015, 10:44 am

Ono to celkem náročné je. Nevím, jak je na tom Studio, ale používal jsem tento princip ve Warped Times 3 kde ten výkon při vykreslení textu byl hodně znát, zvlášť, když text byl velký. Je ale pravda, že jsem vedle toho používal i spoustu dalších náročných efektů, takže záleží, kolik toho vykresluješ. Kdybych tím tenkrát nerozhodil celou hru, asi bych šel radši do toho generování :D
Obrázek
Obrázek
Obrázek

Goblin
Příspěvky: 136
Registrován: červenec 2, 2014, 2:42 pm

Re: Outline text

Příspěvek od Goblin » prosinec 3, 2015, 11:21 am

Satik64: Právěže Studio je znatelně výkonnější. Natolik, že se tvůrcům "Risk of Rain" vyplatilo hru převést z původního 8.1 do Studia, když byla hra kritizovaná pro přepálené nároky a sekání při větším množství nepřátel. :) http://www.siliconera.com/2014/10/29/ri ... w-classes/
"Understanding is not required. Only obedience."

Uživatelský avatar
Ap0
Redaktor
Příspěvky: 367
Registrován: srpen 5, 2011, 11:24 pm
Facebook: http://facebook.com/
Bydliště: zamiešany v malte
Kontaktovat uživatele:

Re: Outline text

Příspěvek od Ap0 » prosinec 4, 2015, 1:32 pm

Ak chceš zvýšiť výkon, doporučujem po vykreslení vystrihnúť a vykreslovať ako surface, resp. sprite ;) Môžeš ten svoj skript takto poupraviť

Odpovědět

Kdo je online

Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 2 hosti