์ปค๋ฎค๋ํฐ์์๋ Pixi์ ํ ์คํธ ๋ ๋๋ง ์ฑ๋ฅ์ ๊ฐ์ ํด์ผ ํ๋ค๊ณ ๋งํ์ต๋๋ค. ์ด ๋ฌธ์ ๋ ์ฐ๋ฆฌ๊ฐ ๊ฐ์ ํ ์ ์๋ ๋ฐฉ๋ฒ๊ณผ ๊ฐ์ฅ ์ข์ ์ ๋ฌ ๋ฐฉ๋ฒ์ด ๋ฌด์์ด๋ผ๊ณ ์๊ฐํ๋์ง์ ๋ํ ๊ฒ์ ๋๋ค.
์๋ช ๋ ๊ฑฐ๋ฆฌ ํ๋: ์ด ๊ธฐ์ ์ ํ ์คํธ๋ฅผ ํ ์ค์ฒ๋ก ๋ ๋๋งํ๊ณ (Canvas 2D API ์ฌ์ฉ) ๊ฑฐ๋ฆฌ ๋ณํ์ ์ ์ฉํฉ๋๋ค. ๊ฐ๋จํ ๋งํด์ ๊ฑฐ๋ฆฌ ๋ณํ์ ์ถ๋ ฅ ํ ์ค์ฒ์ ๊ฐ ํฝ์ ๊ฐ์ ์ ๋ ฅ ํ ์ค์ฒ์ ์๋ ํ ์คํธ์ ๊ฐ์ฅ ๊ฐ๊น์ด ์ค๊ณฝ์ ๊น์ง ํด๋น ํฝ์ ์ ๊ฑฐ๋ฆฌ๋ก ์ค์ ํฉ๋๋ค. pixi-sdf-text๊ฐ ์์ ๋๋ค: https://github.com/PixelsCommander/pixi-sdf-text
VTM: ๋ฒกํฐ ํ ์ค์ฒ ๋งต์ ํ ์ค์ฒ์ ํฝ์ ์์ค์์ ๊ณก์ ๋ถ์ฐ์์ฑ์ ์ธ์ฝ๋ฉํฉ๋๋ค.
์ ํํ ๋ฒ ์ง์ด ๊ณก์ ๋ ๋๋ง: ๊ณก์ ์ ์ ์ธํ ๋ชจ๋ ๊ฒ์ ํ ์ ๋ ์ด์ ํ์ฌ ๊ธ๊ผด์ "์๋ ๊ทธ๋๋ก" ๋ ๋๋งํฉ๋๋ค. ๊ณก์ ์ ํน์ ํ๋๊ทธ๋จผํธ ์ ฐ์ด๋๋ฅผ ์ฌ์ฉํ์ฌ ๋ ๋๋ง๋ฉ๋๋ค(๊ณก์ ์ํ๋ง์ด ์ํ๋์ง ์๊ณ ์คํฐ์จ๋ฆฌ์ด์ฑ์ ์ฌ์ฉํ์ฌ GPU์์ ์ ํํ๊ฒ ๋ ๋๋ง๋จ): https://www.microsoft.com/en-us/research/wp-content/uploads /2005/01/p1000-loop.pdf. ์ด์ฐจ ๋ฒ ์ง์ด ๊ณก์ ์ ๋ํ ๋ฐ๋ชจ๋ฅผ ๋ง๋ค์์ต๋๋ค. https://codepen.io/sukantpal/pen/GRJawBg?editors=0010
@bigtimebuddy ์ ์ ๋ ์ด๋ฌํ ๋ฐฉ๋ฒ์ ๋ํด ๋ ผ์
SDF์๋ ๋ฏธ๋ฆฌ ์์ฑ๋ ์ง๋์ฑ ์ด ํ์ํฉ๋๋ค. ๋ค์ค ์ฑ๋ SDF๋ฅผ ์์ฑํ๋ ๊ฒ์ ๋งค์ฐ ๋ณต์กํฉ๋๋ค(๋ฐํ์์ ์์ฑํ๋ ค๋ ๊ฒฝ์ฐ).
VTM์ ๊ธ๊ผด๋ง ์ฌ์ฉํ๊ธฐ์๋ ๋๋ฌด ๋ณต์กํฉ๋๋ค.
์ ํํ ๋ฒ ์ง์ด ๊ณก์ ์ ์ฌ์ฉํ๋ ค๋ฉด ๊ทธ๋ํฝ์ ๋ค๋ฅธ ๋ชจ๋ ๊ฒ๊ณผ ๋ง์ฐฌ๊ฐ์ง๋ก ๊ธ๊ผด์ ๊ฒฝ๋ก๋ก ๋ ๋๋งํ๊ธฐ๋ง ํ๋ฉด ๋ฉ๋๋ค.
ํต์ฌ์ด ์๋์ด์ผ ํฉ๋๋ค.
์ด๊ฒ์ ๋ฌด๊ฑฐ์ด ํจํค์ง์ด๊ณ ๋ฐ๋์ ๋ฉ์ธ ํจํค์ง ์ธ๋ถ์์ ๊ตฌํ๋์ด์ผ ํ๋ฏ๋ก ํต์ฌ ํ์ ๊ตฌํ์ ๋ํด ๊ฑฑ์ ํ ํ์๊ฐ ์์ต๋๋ค.
Pixi SDF๊ฐ ์ฌ๋ฐ๋ฅธ ์์ ๋๋ค.
Plz, PIXI์์ Phaser๋ฅผ ๋ง๋ค์ง ๋ง์ญ์์ค.
์ข ๋ ๋งฅ๋ฝ์ ์ฃผ๊ณ ์ถ์ต๋๋ค. ๋๋ @SukantPal ์๊ฒ ์๋ก ๋ค๋ฅธ ์ ์ถฉ์์ด ์๋ ๋์ฒด Text/BitmapText ์ ๊ทผ ๋ฐฉ์์ ์ฐ๊ตฌํ๋๋ก ์์ฒญ
์ฌ๊ธฐ์๋ ์ฌ๋ฌ ๊ฐ์ง ์ ๊ทผ ๋ฐฉ์์ด ์๋ค๊ณ ์๊ฐํฉ๋๋ค. ์ผ๋ถ๋ ์ 3์ ํ๋ฌ๊ทธ์ธ์ผ๋ก ์ ์ ํ ์ ์๊ณ , ์ผ๋ถ๋ ๋ฆฌํฌ์งํ ๋ฆฌ์ ์์ง๋ง ๋ฒ๋ค๋ก ์ ๊ณต๋์ง ์์ ์ ์์ผ๋ฉฐ, ์ผ๋ถ๋ ํ์ฌ API๋ฅผ ๋์ฒด/์ฆ๊ฐํ ์ ์์ต๋๋ค. ๊ฐ์ฅ ์ ์ตํ ํ ์คํธ ๋ ๋๋ง ์ ๊ทผ ๋ฐฉ์์ด ์ฑ๋ฅ์ ์ต์ ํํ์ง๋ง BitmapText์ ๋ํ ์ ์ถฉ์์ด ๋ ์ ์ ๊ฒ์ด ๋ฌด์์ธ์ง ์์๋ณด๊ฒ ์ต๋๋ค.
์ข์ ํ ์คํธ ํ์ ๊ฐ์ฒด๋ฅผ ํ๋จํ๋ ๋ฐ ์ฌ์ฉํ ๋ช ๊ฐ์ง ๊ธฐ์ค์ด ์์ต๋๋ค.
| | ์ฑ๋ฅ | ๋ฉ๋ชจ๋ฆฌ | ์ข
์์ฑ | ์ถฉ์ค๋ | ์คํ์ผ๋ง | ํ์ค์ผ | ์ปจํ
์คํธ 2d |
|--|--|--|--|--|--|--|--|
|ํ
์คํธ| ๐ | ๐ | ๐ | ๐ | ๐ | ๐ | ๐ | ๐ |
|๋นํธ๋งตํ
์คํธ| ๐ | ๐ | ๐ | ๐ | ๐ | ๐ | ๐ |
ํ์ธ.
fragment interpolation
๋ฐ ๋ชจ๋ ๋น๋ค์ดํฐ๋ธ ๊ตฌํ์ ๋ํด ์ค๋ช
ํฉ๋๋ค.
@eXponenta
ํ ์คํธ๋ ์ผ๊ด ์ฒ๋ฆฌ๋ ์ ์์ง๋ง ๊ทธ๋ํฝ๊ณผ ๊ฐ์ ๋ค๋ฅธ ํญ๋ชฉ์ ๊ทธ๋ ์ง ์์ต๋๋ค.
ํ์ฌ ํ ์คํธ ๊ตฌํ์ ๊ฐ ๊ธ๋ฆฌํ๋ฅผ ์ฌ๋ฌ ๋ฒ ์บ์ํฉ๋๋ค(ํ ๋ฌธ์๊ฐ ์ฌ๋ฌ PIXI.Text์์ ์ฌ๋ฌ ๋ฒ ์ฌ์ฉ๋๋ ๊ฒฝ์ฐ). ๊ธ๋ฆฌํ๋น ํ๋์ ์ง์ค๋ฉํธ๋ฆฌ๊ฐ ์๋ ๊ฒ์ด ๋ ์ข์ต๋๋ค. ๋ํ ๋ค๋ฅธ ๊ธ๊ผด ํฌ๊ธฐ๋ก ์บ์ํ ํ์๊ฐ ์์ต๋๋ค.
๊ธฐํํ์ ๋ง๋ง๋ค ๋ค์ ์์ฑํ ํ์๊ฐ ์์ต๋๋ค. ํ ์คํธ์ ๋ฌธ์๊ฐ ๋ณ๊ฒฝ๋๋ฉด ๊ธ๋ฆฌํ ๊ธฐํํ ํ ์ด๋ธ์์ ๋ค์ ๊ฐ์ ธ์์ผ ํฉ๋๋ค. ๋ณํ์ด ๋ณ๊ฒฝ๋๋ฉด ์ ๋ํผ ํ๋๋ง ๋ณ๊ฒฝํ๋ฉด ๋ฉ๋๋ค.
๊ธ๊ผด ๊ตฌ๋ฌธ ๋ถ์์ ์ํด ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค. ๊ธฐํํ์ผ๋ก์ ๋ณํ์ ๊ฐ๋จํฉ๋๋ค.
๊ธ๋ฆฌํ ์ฐ๊ฒฐ ๊ท์น์ด ๋ฌด์์ธ์ง ๋ชจ๋ฅด๊ฒ ์ต๋๋ค. ์ค๋ช ํด ์ฃผ์๊ฒ ์ต๋๊น?
์ผ์ชฝ์์ ์ค๋ฅธ์ชฝ ๋ ์ค๋ฅธ์ชฝ์์ ์ผ์ชฝ - ๋ฌธ์๋ฅผ ๋ฐ๋๋ก ํ๋ ค๋ฉด ํ ์ ์์ต๋๋ค. ๋ฏธ๋ฌ ์ด๋ฏธ์ง๋ฅผ ์ํ๋ฉด ๋ด๋ถ์ ์ผ๋ก scale.x=-1
๋ฅผ ์ค์ ํฉ๋๋ค.
ํ ์คํธ ์คํ์ผ์ ์ ฐ์ด๋์ ๋ ๋ง์ ์ธ์๋ฅผ ์ถ๊ฐํ์ง ์์ต๋๋ค. ์ง์ค๋ฉํธ๋ฆฌ๋ฅผ ๋ณ๊ฒฝํฉ๋๋ค. ์ด์ ๊ธ๋ฆฌํ๋ฅผ ์ง์ค๋ฉํธ๋ฆฌ๋ก ์ ์ฅํ๋ ๊ฒ์ ํ ์ค์ฒ์ ์บ์ฑํ๋ ๊ฒ๋ณด๋ค _์ ์_ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ฌ์ฉํฉ๋๋ค.
API์์ ๊ฐ์ ธ์จ ๊ธ๊ผด ํ์ผ์ ์ฌ์ฉ์ ์ปดํจํฐ์ ์บ์๋์ด์ผ ํฉ๋๋ค.
U ๋งค์ฐ ์์งํ:
isMobile
๋๋ resource-loader
์ ๋์ผํ ๋ฌธ์ ์ด๋ฏ๋ก ์ธ๋ถ ์ข
์์ฑ์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
์ฝ์ด๋ ๊นจ๋ํด์ผ ํฉ๋๋ค. ์ต์ํ์ ์ธ๋ถ ์ข
์์ฑ.
@eXponenta
ํผํฉ ๋ ์ด์์(ltr ๋ฐ rtl ๊ฒฐํฉ)์ ๊ณ ์ฑ๋ฅ๋ณด๋ค ์ฐ์ ์์๊ฐ ๋ฎ์ต๋๋ค. ํญ์ ํ์ฌ ์๊ณ ๋ฆฌ์ฆ์ผ๋ก ๋์ฒดํ ์ ์์ต๋๋ค. ๋ฐ๋ฐ๋๊ฐ๋ฆฌ์ ๋น์ทํฉ๋๋ค. ๊ทธ๋๋์ธํธ ์คํฑ๊ณผ ๊ฐ์ ํน์ ๊ธฐ๋ฅ๋ ํด๋ฐฑ์ด ํ์ํฉ๋๋ค.
ํ
์ค์ฒ๊ฐ ์์ผ๋ฉด ๋ฐฐ์น๊ฐ ๋ ์ฝ๊ธฐ ๋๋ฌธ์ ์ฌ๊ธฐ์ ์ผ๊ด ์ฒ๋ฆฌํ ์ ์์ต๋๋ค. CanvasGraphicsRenderer
์ ๊ฐ์ ํ๋ฌ๊ทธ์ธ์ ๋ง๋ค ์ ์์ต๋๋ค.
ํ์ธ. ์ ์น๋ฆฌ. ํด. ๊ทธ๋ฌ๋ ํต์ฌ ์ธ๋ถ์์ ์ฐ๋ฆฌ๋ ๊ทธ๊ฒ์๋ณด๊ณ ๊ทธ๋ ์ฐ๋ฆฌ๊ฐํด์ผ ํ ์ผ์ ๊ฒฐ์ ํ ๊ฒ์
๋๋ค.
๊ทธ๋ฌ๋ ํฐ ์์กด์ฑ์ ์์ต๋๋ค.
@eXponenta ์ ๋ฐ ๋๋ฌด ์ ๋์
@eXponenta ์ง๊ธ ์ค๋ฅธ์ชฝ์์ ์ผ์ชฝ์ผ๋ก
์ฐ๋ฆฌ๊ฐ ์๊ฐํ๊ณ ์๋ ๋ ๋ค๋ฅธ ์ ๊ทผ ๋ฐฉ์์ ์บ๋ฒ์ค 2D(ํ์ฌ์ ๋์ผ)๋ฅผ ์ฌ์ฉํ์ฌ ๊ฐ ๊ธ๋ฆฌํ๋ฅผ ๋ณ๋๋ก ๋ ๋๋งํ๊ณ ์ํ๋ผ์ค์ ์บ์ํ๋ ๊ฒ์
๋๋ค. ์ํ๋ผ์ค๋ ๋ชจ๋ PIXI.Text
์ธ์คํด์ค์ ๋ํด ์ ์ญ์ ์ผ๋ก ์ฌ์ฌ์ฉํ ์ ์์ต๋๋ค. ๊ฐ ๊ธ๋ฆฌํ + ๊ธ๊ผด ํฌ๊ธฐ + ๊ธ๊ผด ์คํ์ผ ์กฐํฉ์ ๋ณ๋๋ก ์บ์๋ฉ๋๋ค.
๊ทธ๊ฒ์ ํต์ฌ์ผ๋ก ๋ฐ์๋ค์ด๋ ๊ฒ์ ๋ํด ์ด๋ป๊ฒ ์๊ฐํ์ธ์?
์ฌ๋ฌ๋ถ, ํ ์ด๋ธ์์ ์ด๋ฌํ ์๋ก์ด ์ ๊ทผ ๋ฐฉ์์ ๋ฃ๊ฒ ๋์ด ์ ๋ง ๊ธฐ์ฉ๋๋ค. @eXponenta , ์ผ์ผํค๋ฉฐ ๊ฑด์ค์ ์ผ๋ก ์ ์งํฉ์๋ค. ๋น์ ์ ๋ถ๋ช ํ ์๋ก์ด ์ ์๋ ์ ๊ทผ ๋ฐฉ์์ ๋ํ ์ข์ ํต์ฐฐ๋ ฅ์ ๊ฐ์ง๊ณ ์์ง๋ง ์ ๊ธฐ๋ ๋ฌธ์ ๋ฅผ ์ํํ๊ณ ์น๊ทผํ๊ฒ ์ ์งํ ์ ์๋์ง ํ์ธํ๋ ๊ฒ์ ๋ชฉํ๋ก ํฉ์๋ค. :)
๋ฌธ์๋ก ์ฌ๊ธฐ ๋ด 2์ผํธ(ํ์ค?)..
๊ฐ์ธ์ ์ผ๋ก ๊ฐ์ฅ ๊ฐ์น ์๋ ์ ๊ทผ ๋ฐฉ์์ ๋นํธ๋งต ํ ์คํธ์ ์๋์ ์ฑ๋ฅ์ ์ป๋ ๊ฒ์ด์ง๋ง ์ค์ ๋ก ๋ฏธ๋ฆฌ ๋นํธ๋งต ๊ธ๊ผด์ ๋ง๋ค ํ์๊ฐ ์๋ ๊ฒ์ ๋๋ค. ์ํ๋ค๋ฉด ๋์ ๋นํธ๋งต ํ ์ค์ฒ ๊ตฌ์ถ!
๋์ ๋นํธ๋งต ๊ธ๊ผด
ํ๋ก
const textStyle = new TextStyle({
font:'comic sans',
fill:'bright green'
});
const bitmapFont = new BitmapFont(textStyle);
๋จ์
์์ด๋์ด
์์๋
SDF๋ ์์ ์ ๊ทผ ๋ฐฉ์์ ํ์ฅ์ด ๋ ์ ์์ต๋๊น? ๊ทธ ํ
์ค์ฒ๋ฅผ ๋์ ์ผ๋ก ์์ฑํ๋ ๊ฒ์ ์ผ๋ง๋ ๋ณต์กํ ๊น์? ์ํผ ์ ํค๊ฐ ๋ ๊น์? ์ฝ๋ ๊ธฐ๋ฐ์ ํฌ๊ฒ ๋๋ฆฌ๊ณ ์์ต๋๊น?
๋๋ถ๋ถ์ ์ฌ๋๋ค์ ๊ทธ๊ฒ์ด ๋ฌด์์ธ์ง ์์ง ๋ชปํ๋ฏ๋ก ์ด์์ ์ผ๋ก๋ ์จ๊ฒจ์ผ ํฉ๋๋ค. SDF ํ๋๋ฅผ ์ธ๋ถ์์ ์์ฑํด์ผ ํ๊ฑฐ๋ ์์ฑํ๋ ๋ฐ ํ์ํ ์ฝ๋๊ฐ ๋๋ฌด ํฌ๊ฑฐ๋ ๋ณต์กํ ๊ฒฝ์ฐ ์ง์์ ํ๋ฌ๊ทธ์ธ์ผ๋ก ์ฌ์ฉํ๋ ๊ฒ์ด ๋ ์ข์ต๋๋ค.
const textStyle = new TextStyle({
font:'comic sans',
fill:'bright green',
sdf:true, <----- how sweet would this be, maybe rename to more user friendly like 'cleanEdges'
});
const sdfFont = new BitmapFont(textStyle);
์ด๊ฒ์ ํ์คํ ํฅ๋ฏธ๋ก์ด ์ ๊ทผ ๋ฐฉ์์ ๋๋ค! ๋๋ ๊ณผ๊ฑฐ์ ์ด๊ฒ์ ์กฐ์ฌํ๊ณ ๋ ๋๋ง ๋ฃจํ์ ๋์ ๋ ์ ฐ์ด๋ ์ค์์น์ ํ์ํ ์ถ๊ฐ ํ ์ ๋ ์ด์ ์ด ํฐ ์ค๋ฒํค๋๋ฅผ ๊ฐ์ง ๊ฒ์ด๋ผ๊ณ ๊ฒฐ์ ํ์ต๋๋ค. @SukantPal , ๋น์ ์ ์ง๊ธ ์ ๋ณด๋ค ์ด ์์ด๋์ด์ ๋ ๊ฐ๊น์ต๋๋ค. ๊ทธ๋์ ์ ๊ฑฑ์ ์ ๋ํด ์๊ฒฌ์ ๋ฃ๊ณ ์ถ์ต๋๋ค!
๊ทธ๋ ๊ธด ํ์ง๋ง, ์ฐ๋ฆฌ์ ์๊ฐ์ ๊ฒ์ฆํ๊ธฐ ์ํด ํ ์คํธํ ์ ์๋ ํ๋กํ ํ์ ์ ๋ง๋ค ๊ฐ์น๊ฐ ์์ง ์์๊น์?
ํ ์คํธ์ ์ ๋๋ ์๊ฐ :D
SDF๋ ์์ ์ ๊ทผ ๋ฐฉ์์ ํ์ฅ์ด ๋ ์ ์์ต๋๊น? ๊ทธ ํ ์ค์ฒ๋ฅผ ๋์ ์ผ๋ก ์์ฑํ๋ ๊ฒ์ ์ผ๋ง๋ ๋ณต์กํ ๊น์? ์ํผ ์ ํค๊ฐ ๋ ๊น์? ์ฝ๋ ๊ธฐ๋ฐ์ ํฌ๊ฒ ๋๋ฆฌ๊ณ ์์ต๋๊น?
SDF ์์ฑ์ ๋น์ฉ์ด ๋ง์ด ๋ค๊ณ ํจํน ์๊ฐ์ด ์์ง๋ง(์ํ๋ผ์ค์์ ๋ค๋ฅธ ๊ธ๊ผด์ ํจํนํ ๋) ํด๋ผ์ด์ธํธ์์ ์บ์ํ ์ ์์ต๋๋ค(๋ค๋ฅธ ๋ชจ๋ ๋ณํ๊ณผ ๋ง์ฐฌ๊ฐ์ง๋ก).
์บ๋ฒ์ค (ํคํค) ๊ตฌํ์ด ์์ต๋๋ค.
https://github.com/mapbox/tiny-sdf
๊ทธ๋ฌ๋ SDF ์ปดํ์ผ์ด ์์ ํ ์ ํํ์ง ์์ต๋๋ค(๊ธ๊ผด ํฌ๊ธฐ๋ฅผ ๋๋ฆฌ๊ฑฐ๋ ์ค์ผ ๋ ๊ธ๋ฆฌํ ๋ณ๊ฒฝ).
์ ์ฉํด ๋ณด์ด์ง๋ง MSDF์ ๊ฒฝ์ฐ ์ฑ๋๋น 3๋ฒ ์คํํด์ผ ํฉ๋๋ค.
์ค ์์ฐ, ๊ทธ๊ฒ์ ์ฝ๊ฐ์ ์ฝ๋์ ๋๋ค! ์ ฐ์ด๋๋ ํ๊ธฐ์๋ ๋ฌด๋ฅด์ต์ ๊ฒ ๊ฐ์ต๋๋ค!
@GoodBoyDigital tiny-sdf ํจํค์ง๋ ๋จ์ผ ์ฑ๋ ๊ฑฐ๋ฆฌ ํ๋๋ฅผ ์์ฑํฉ๋๋ค. ๋ ์์ ๊ธ๊ผด ํฌ๊ธฐ๋ก ํ ์คํธ๋ฅผ ์บ์ํ๋ฉด ๋ ์นด๋ก์ด ๋ชจ์๋ฆฌ๊ฐ ์์ฑ๋์ง ์์ต๋๋ค. ์ด๋ ๋ ๋๋ง๋๋ ๋์ผํ ๊ธ๊ผด ํฌ๊ธฐ๋ก ์บ์ฑํ์ฌ ์ํํ ์ ์์ต๋๋ค.
๋จ์ผ ์ฑ๋ SDF ์์ฑ๋ ๋์์ง ์์ต๋๋ค. ๋ค์ค ์ฑ๋ SDF๋ ๋๋ฌด ๋ณต์กํ๋ค๋ ์ ์ ์ ์ธํ๊ณ ๋ ์ฐ์ํฉ๋๋ค. Chumskly๊ฐ ๋ชจ์๋ฆฌ๋ฅผ ์ธ์ฝ๋ฉํ๋ ๋ฐฉ๋ฒ์ ์ดํดํ ์ ์์์ต๋๋ค.
์ด์ ์ฐ๋ฆฌ๊ฐ ๊ณ ๋ คํ๊ณ ์๋ ๋ชจ๋ ๊ฒ์ rtl ๋ฐ Ltr ๋ ์ด์์ ํผํฉ์ ์ง์ํ์ง ์์ต๋๋ค( @eXponenta ๊ฐ ์ฌ๋ฐ๋ฅด๊ฒ ์ง์ ํ ๋๋ก). ํ์ง๋ง ํ์ฌ๋ก์๋ ๊ณต์์ ์ผ๋ก ์ง์ํ๊ณ ์์ง ์๋ค๊ณ ์๊ฐํฉ๋๋ค.
์ ํํ ์ ๊ทผ ๋ฐฉ์์๋ ๋ ๊ฐ์ง ์ด์ ์ด ์์ต๋๋ค. ์์ ์บ์ ํฌ๊ธฐ(๋ชจ๋ ํฝ์ ์ด ์๋ ์ ์ ์ ์บ์ฑํจ), "์คํฐ์จ๋ฆฌ์ด์ฑ" ์ค์ ์ด ๊บผ์ ธ ์๋ ๊ฒฝ์ฐ์๋ ์คํฐ์จ๋ฆฌ์ด์ฑ(ํ ์คํธ๋ ํญ์ ์คํฐ์จ๋ฆฌ์ด์ฑ๋ ๊ฒ์ผ๋ก ์์๋ฉ๋๋ค. ํ์ฌ ๊ตฌํ์ ์บ๋ฒ์ค๋ฅผ ์ฌ์ฉํ์ฌ ์ํํฉ๋๋ค. 2D).
๋ฐ๋ชจ์ ๊ด๋ จํ์ฌ ์ 2์ฐจ ๋ฒ ์ง์ด ๊ณก์ ๋ฐ๋ชจ๋ฅผ ๋ณด์ จ์ต๋๊น? https://codepen.io/sukantpal/pen/GRJawBg?editors=0010
โโ
๋์ @bigtimebuddy ๊ฐ ๊ฐ์ฅ ๊ฐ๋จํ ์๋ฃจ์
์ผ๋ก ๋
ผ์ํ ๋ ๋ค๋ฅธ ์ฌํญ์ ์บ๋ฒ์ค 2D๋ฅผ ๊ณ์ ์ฌ์ฉํ๊ณ ๊ธ๋ฆฌํ๋ฅผ ํ
์ค์ฒ์ ์บ์ํ๋ ๊ฒ์
๋๋ค. ๊ธ๋ฆฌํ๋ ์ฟผ๋๋ก ๋ ๋๋งํ ์ ์์ต๋๋ค. ์บ์ ์ํ๋ผ์ค๋ ํ
์คํธ ๊ฐ์ ์ฌ์ฌ์ฉํ ์ ์์ต๋๋ค. ๋ฌผ๋ก ์ด๊ฒ์ ํฐ ํ
์คํธ๊ฐ ๋์ผํ ํฌ๊ธฐ๋ก ์บ์๋๊ณ ๋ฐ๋ผ์ ๋ง์ ํ
์คํธ๊ฐ ๋ ๋๋ง๋์ง๋ง ๊ทธ ์ผ๋ถ(PDF์ ํ์ฌ ํ์ด์ง์ ๊ฐ์)๋ง ํ์๋ ๋ ํฐ ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋์ ์๋ฏธํฉ๋๋ค.
๋ฉ์ง,
์, ํ์ฌ ๋ฐฉ๋ฒ์ ํตํด ํญ์ ์ฌ์ฉํ ์ ์๋ rtl ๋๋ ltr์ ๋ํด ๊ฑฑ์ ํ ํ์๊ฐ ์์ผ๋ฉฐ ๋ชจ๋ ์ฌ์ฉ์ ์ง์ ํ
์คํธ ๋ ๋๋ง ๊ธฐ์ ์ด ๋์ค์ ํด๊ฒฐํด์ผ ํ๋ ๋ฌธ์ ์
๋๋ค.
์ด๋ฌํ ๊ฒฐ์ . ์ด์์ ์ผ๋ก๋ ๋ฉ๋ชจ๋ฆฌ ์๋น์ ๋ฐํ์ ์ฑ๋ฅ์ ์ค์ ์ ๋์ด์ผ ํฉ๋๋ค.
๋ฒ ์ง์ด ๋ฐ๋ชจ๋ ํ๋ฅญํ์ง๋ง ์ ์ฒด ๋ฌธ์ฅ์ ๋ ๋๋งํ ๋ ์จ๊ฒจ์ง ์ ์๋ ์ง์ ํ ๋ณต์ก์ฑ์ ์ดํดํ๋ ๋ฐ ์ถฉ๋ถํ์ง ์๋ค๊ณ ์๊ฐํฉ๋๋ค.
์์์ ๋์ ๋นํธ๋งต ๊ธ๊ผด์ ๋ํด ์ด ๋ด์ฉ์ ๊ธ๋ฆฌํ ์บ์ฑ์ ๋ํด ์ธ๊ธํ ๋ด์ฉ๊ณผ ๊ฑฐ์ ๋์ผํฉ๋๋ค. ๋ด๋ ค๊ฐ ๋ ํ์คํ ์ ์ฉํ ๋ฃจํธ๋ผ๊ณ ์๊ฐํฉ๋๋ค!
์์ฝํ์๋ฉด:
๋ฒ ์ง์ด ๊ณก์ ์๋ฃจ์ : ์ด๊ฒ์ ์ข์ ๊ฒฝ๋ก์ผ ์ ์์ง๋ง ์ค์ ํ๋ก๋์ ์ฌ์ฉ ์ฌ๋ก์ ์ด๋ป๊ฒ ๋ง๋์ง ํ์ ํ๋ ค๋ฉด ์ถ๊ฐ R&D๊ฐ ํ์ํ๋ค๊ณ ์๊ฐํฉ๋๋ค.
์ผ๋ฐ ๊ธ๊ผด์ ๋์ ๋นํธ๋งต ๊ธ๊ผด: ์ด๊ฒ์ API๋ฅผ ๋จ์ํ๊ฒ ์ ์งํ๋ฉด์ ์ข์ ์ฑ๋ฅ์ ์ ๊ณตํ๋ค๋ ๊ฒ์ ์๊ณ ์์ผ๋ฏ๋ก ํ์คํ ํ์ํด์ผ ํฉ๋๋ค. ๋ด๊ฐ ์ข์ํ๋ :D
๋จ์ผ ์ฑ๋ SDF ์ข์ ๋ค์ค ์ฑ๋ SDF๊ฐ ๋์ง๋ ๋ชปํ์ง๋ง ๋ฐ๋ชจ๋ ๊ฝค ์ข์ ๋ณด์์ต๋๋ค! ํ ์คํธ๊ฐ ์ ํ์ฅ๋๊ณ ๊ธ๊ผด๋น ํ๋์ ํ ์ค์ฒ๋ฅผ ๊ฐ์ง ์ ์๋ค๋ฉด ์ด ๊ฒฝ๋ก๋ ์กฐ์ฌํ ๊ฐ์น๊ฐ ์๋ค๊ณ ์๊ฐํฉ๋๋ค!
@GoodBoyDigital ๋๋ ๋ฐ๋ชจ์ ๊ฝค ์ข์ ํ ์คํธ๊ฐ ์๋ค๊ณ ์๊ฐํฉ๋๋ค. ๊ทธ๋ฌ๋ ์ธ๋ถ ์ฌํญ์ ์ฐพ์ผ๋ ค๋ฉด ๋์ ๋๋ ์ฐจ์ด์ ์ด ์์ต๋๋ค.
์๋จ์ ํ ์คํธ๋ ๋ ์นด๋กญ์ง ์์ต๋๋ค. ๊ฐ์ฅ์๋ฆฌ๊ฐ ํ๋ค๋ฆฝ๋๋ค. ๊ฐ ๊ธ๊ผด+(๊ธ๊ผด ํฌ๊ธฐ์ ~12-15px ์ฐจ์ด) ์กฐํฉ์ ๋ณ๋๋ก ์บ์ํด์ผ ํ ์ ์์ต๋๋ค.
ํ๋ค๋ฆผ์ด ์ค์ํ์ง ์๊ฑฐ๋ ์ฌ๋ฌ ๊ธ๊ผด ํฌ๊ธฐ์์ ์บ์ฑ์ ์ฌ์ฉํ ์ ์๋ค๋ฉด SDF๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
๊ฐ์ฅ ๊ฐ๋จํ ์๋ฃจ์ ๋ ์ ์๊ฒ๋ ๊ด์ฐฎ์ต๋๋ค ๐ฏtbh!
๋ชจ๋ ์๋ .
์ ๋ Pixi์ ๊ดํ ๋ชจ๋ ๊ฒ์ ์๋ ์ด์ฌ์์ด์ง๋ง, Pixi๋ฅผ ๋ฐฑ์๋๋ก ์ฌ์ฉํ๋ GDevelop์ ์ฌ์ฉ์์ ๋๋ค. ๊ทธ๋ฆฌ๊ณ GDevelop์ PixiJS ๋ฐ ํ ์คํธ ๋ ๋๋ง ๊ตฌํ์ ์ํด ์ ์ ๋์ ์ด์ ๋ํด ํ๊ณ ๋ค์์ต๋๋ค. ํ ์คํธ๊ฐ ๋ง์ ๋ด๊ฐ ์์ ํ๊ณ ์๋ ๊ฒ์์ ์ค์ ๋ก ์ํฅ์ ๋ฏธ์นฉ๋๋ค. (๋ด๊ฐ GDevelop์ ๊ฒ์ํ ๋ฌธ์ ์์ ๋ด ์ฐ๊ตฌ/์๋ฅผ ๋ณผ ์ ์์ต๋๋ค: https://github.com/4ian/GDevelop/issues/1449 )
๋ด๊ฐ ์ฐพ์ ์ต์ ์ค ํ๋๋ ํ ์คํธ์ ํฌ๊ธฐ ์กฐ์ ๋ฌธ์ ๋ฅผ ์์ ํ ๋ฌด์ํ๊ณ ํ ์คํธ ํฌ๊ธฐ๋ฅผ ํญ์ 100%๋ก ์ ์งํ๊ณ ๋์ ํ ์คํธ ๊ธ๊ผด ํฌ๊ธฐ๋ฅผ ์กฐ์ ํ์ฌ ๋ฌธ์ ๋ฅผ ์์ ํ ์ ๊ฑฐํ๋ ๋ฐ ์ค์ ์ ๋์์ต๋๋ค. ์ด๊ฒ์ ๊ธ๊ผด์ ๊ตฌ์ ๋ฐ์ง ์์ผ๋ฉฐ ๋ชจ๋ ํฌ๊ธฐ์์ ์๋ํ๋ ๊ฒ ๊ฐ์ต๋๋ค.
๋ค์์ Pixi๋ฅผ ์ฌ์ฉํ์ฌ ์ํ๋๋ ์ฝ๋ ์์ ์
๋๋ค. https://codepen.io/Tazy/pen/wJVExB
์ด ์ค๋ ๋์์ ์ฐพ์์ต๋๋ค: https://www.html5gamedevs.com/topic/29576-scalable-text-for-pixijs/
๋๊ตฐ๊ฐ๊ฐ GDevelop์ฉ Pixi Text ํ์ฅ์ ์์ ํ ์ ์๊ธฐ๋ฅผ ๋ฐ๋๊ธฐ ๋๋ฌธ์ ์ค์ ๋ก ์ด ๋ฌธ์ ์ ๋ํ ํ์๊ธ์ด ์์ต๋๋ค.
์ด ๋ฐฉ๋ฒ์ ์ ์ฌ์ ์ธ ๋ฌธ์ ๊ฐ ์๋์ง ์ ์ ์์ง๋ง sdf/msdf/etc์ ๋ชจ๋ ์ฑ๋ฅ ๋ฌธ์ ๋ฅผ ํผํ๋ ๊ฒ ๊ฐ์ต๋๋ค.
@Silver-Streak ํ ์คํธ ํ์ ๊ฐ์ฒด์ ์ ์ฉ๋ ์ถ์ฒ์ผ๋ก ๊ธ๊ผด ํฌ๊ธฐ๋ฅผ ๋๋ฆฌ๋ ๊ฒ์ ์๋ฏธํ๋ค๋ฉด ์ฑ๋ฅ ๋ฉด์์ ์ด๋ป๊ฒ ๋ ๋์๊น์? SDF ํญ๋ชฉ์ ๋ ํฐ ๊ธ๊ผด ํฌ๊ธฐ๋ก ๋ค์ ๋ ๋๋งํ์ง ์๊ธฐ ๋๋ฌธ์ ์ฑ๋ฅ์ ๋์์ด ๋ฉ๋๋ค.
@Silver-Streak ๋ฌผ๋ก , ๋น์ ์ ์ ์์ _ํ์ง_์ ํฅ์์ํฌ ๊ฒ์ด์ง๋ง ๊ทธ๊ฒ์ด ์ด๋ป๊ฒ ์ฑ๋ฅ์ ํฅ์์ํฌ์ง๋ ๋ชจ๋ฅด๊ฒ ์ต๋๋ค.
@Silver-Streak ๋ฌผ๋ก , ๋น์ ์ ์ ์์ _ํ์ง_์ ํฅ์์ํฌ ๊ฒ์ด์ง๋ง ๊ทธ๊ฒ์ด ์ด๋ป๊ฒ ์ฑ๋ฅ์ ํฅ์์ํฌ์ง๋ ๋ชจ๋ฅด๊ฒ ์ต๋๋ค.
๋ด๊ฐ ์คํดํ์ง ์๋ ํ, ๊ธ๊ผด ํฌ๊ธฐ๋ฅผ ๋ณ๊ฒฝํ๋ฉด ์ ์ฒด ๊ฐ์ฒด์ ํฌ๊ธฐ๋ฅผ ์กฐ์ ํ๊ฑฐ๋ ๋ค๋ฅธ ๋ ๋๋ฌ์์ ๋ก๋ํ๋ ๊ฒ๋ณด๋ค ๋ฆฌ์์ค๋ฅผ ๋ ์ฌ์ฉํ์ง ์์๊น์? ๋ค์ ๋งํ์ง๋ง, ์ ๋ Pixi์ ํฌ๊ธฐ ์กฐ์ ์ด ์ค์ ๋ก ์๋ํ๋ ๋ฐฉ์์ ๊ดํด์๋ ๋งค์ฐ ํ๋ฒํ ์ฌ๋์ ๋๋ค. ๊ธ๊ผด์ ๊ธฐ๋ณธ ํด์๋๋ก ์ ์งํ์ง๋ง ํ ์คํธ ํฌ๊ธฐ๋ฅผ ๋ณ๊ฒฝํ๋ ๊ฒ์ด ํฌ๊ธฐ๋ฅผ ์กฐ์ ํ๋ ๊ฒ๋ณด๋ค ๋น ๋ฅผ ๊ฒ์ด๋ผ๋ ๊ฒ์ด ์ดํด๊ฐ ๋์์ต๋๋ค. ๊ทธ๊ฒ์ด ์ณ์ง ์๋ค๋ฉด, ์ฃผ์๋ฅผ ์ฐ๋งํ๊ฒ ํ ๊ฒ์ ๋ํด ์ฌ๊ณผํ์ญ์์ค.
@Silver-Streak Scaling์ ๋ณํ์ผ๋ก ๊ตฌํ๋ฉ๋๋ค. ๋ณํ ํ๋ ฌ์ด ์์ผ๋ฉฐ ํด๋น ํ๋ ฌ์ ๋ฐฐ์จ์ ๋ณ๊ฒฝํ๋ ๊ฒ์ ๊ฐ๋จํ ์์ ์ ๋๋ค.
ํ์ฌ ํ ์คํธ๋ Canvas 2D API๋ฅผ ์ฌ์ฉํ์ฌ ์บ๋ฒ์ค์ ๋ ๋๋ง๋ฉ๋๋ค. ๊ทธ๋ฐ ๋ค์ ํ๋ฉด์ ๋ณต์ฌ๋ฉ๋๋ค. ๋ฐฐ์จ์ ๋ณ๊ฒฝํ๋ฉด ์บ๋ฒ์ค์ ํ ์คํธ๊ฐ ๋งคํ๋๋ ํ๋ฉด ์ขํ๋ง ๋ณ๊ฒฝ๋ฉ๋๋ค.
์, ๋ง์ด ๋๋๊ตฐ์. ๋ถํํ๋ ์ ๋ฌธ์ ๋ ๊ธ๊ผด์ ๊ทธ๋ํฝ ๋ ๋๋ง์ด ํฌ๊ธฐ๊ฐ ์กฐ์ ๋ ํ ํ๋ฆฟํด์ง๋ ๋ฌธ์ ๊ฐ ๋ ๋ง์ง๋ง ์ฑ๋ฅ๋ ๋ ์ข์ ๊ฒ์ด๋ผ๊ณ ์๊ฐํ์ต๋๋ค.
๋ค๋ฅธ ์ฌ๋์ด ์ผ๋ฐ์ ์ธ ํ ์คํธ ํ์ง ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ์ด๋ฅผ ๊ตฌํํ๋ฉด ์ข๊ฒ ์ง๋ง ์ฑ๋ฅ์ ๊ฐ์ ํ๋ ค๋ ๋ง์๋ ์ถฉ๋ถํ ์ดํดํ ์ ์์ต๋๋ค.
์ ์ ํจ๊ป ์ด์ผ๊ธฐํด์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค.
@Silver-Streak ๋ฌธ์ ์์ต๋๋ค. ๊ทธ๋ฌ๋ ํ์ง ์ฐ์ ํ ์คํธ๋ฅผ ๊ตฌํํ๋ ๊ฒ์ WebGL์์๋ ์ด๋ ต์ง ์์์ผ ํฉ๋๋ค. ์ผ๋ถ ์์ฉ ํ๋ก๊ทธ๋จ์ ์์ฒด์ ์ผ๋ก ๋ฉ์ฌ๋ฅผ ๋ง๋ค์ด ํ ์คํธ๋ฅผ ๊ตฌํํฉ๋๋ค. ๊ธ๊ผด ํ์ผ์ ๊ตฌ๋ฌธ ๋ถ์ํ๊ณ ์ ์ ๋ชฉ๋ก์ ๋ง๋ค๊ณ ํ ์ ๋ ์ด์ ํ ์ ์์ต๋๋ค. ์ด๋ฌํ ์ ์ ์ ๋ฉ์ฌ๋ฅผ ํตํด ๋ ๋๋ง๋ ์ ์์ต๋๋ค.
๋์ ์ถ์ฒ์์๋ ์ฝ๊ฐ์ "๊ฐ์ฅ์๋ฆฌ"๊ฐ ๋ฐ์ํ ์ ์์ต๋๋ค. ์๋ํ๋ฉด ๊ถ๊ทน์ ์ผ๋ก ํ ์คํธ๋ฅผ ์ผ๊ฐํ์ผ๋ก ๋ ๋๋งํ๊ธฐ ๋๋ฌธ์ ๋๋ค. ๋ ๋์ ํ์ง์ ์ํด ์ด ์ค๋ ๋์์ ์ด์ผ๊ธฐํ "์ ํํ ๋ฒ ์ง์ด ๊ณก์ " ์ ฐ์ด๋๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค. ์ด ์ ฐ์ด๋๋ ๊ณก์ ์ ์ผ๊ฐํ์ด ์๋ ๊ณก์ ์ผ๋ก ๋ ๋๋งํฉ๋๋ค.
ํ ์คํธ ํ์ง์ ๋ํ ๋์์ด ํ์ํ์๋ฉด ์ ๊ฐ ๋์๋๋ฆฌ๊ฒ ์ต๋๋ค. :)
@SukantPal ์ ๋
๊ทธ๋ฌ๋ ๊ฒ์๋ฌผ์ ๋ฌธ์ ๋ฅผ ์ดํด๋ณด๊ณ ์ถ๋ค๋ฉด Bountysource์์๋ ์ด์ ๋ํ ํ์๊ธ์ด ์์ผ๋ฉฐ ๋ชจ๋์๊ฒ ๊ณต๊ฐ๋์ด ์์ต๋๋ค. ์ฌ๊ธฐ์์ ๋ ์ด์ ํค๋์คํ์ด์ค๋ฅผ ์ฐจ์งํ๊ณ ์ถ์ง ์์ต๋๋ค. ์ผ๋ฐ์ ์ผ๋ก Pixi์ ๋ํด ํจ์ฌ ๋ ๊น์ ๋ํ๊ฐ ์งํ๋๊ณ ์๊ณ ๋ด ์ ์์ด ์๊ฐ๋งํผ ์ ํํ์ง ์๊ธฐ ๋๋ฌธ์ ๋๋ค.
@Silver-Streak ์ฝ๋ก๋ ์์ฆ์ ์ํ ๊ฒ ์์ผ๋ ํ๋ฒ ๋ด์ผ๊ฒ ๋ค
์ด๊ฒ์ด ๋ซํ ์ค๋ ๋๋ผ๋ ๊ฒ์ ์๊ณ ์์ง๋ง ๋ชจ๋ ์ฌ๋๋ค์ด ์ฌ์ ํ ํ ์คํธ ๋ ๋๋ง์ ๊ฐ์ ํ๋ ๊ฐ์ฅ ์ข์ ๋ฐฉ๋ฒ์ ์ฐพ๊ณ ์๋ค๊ณ ํ์ ํฉ๋๋ค. ๋๋ ๋๊ตฐ๊ฐ๊ฐ Pixi v5์ ํจ๊ป ์๋ํ๋ msdf ๊ตฌํ์ ๊ฐ์ง๊ณ ์๋ค๋ ๊ฒ์ ์์์ฐจ๋ ธ์ต๋๋ค. https://github.com/cjsjy123/pixi-msdf-text-v5 ๊ด์ฌ ์๋ ์ฌ๋๋ค์๊ฒ ์ธ๊ธํ ์๊ฐ์ ๋๋ค.
์ด ์ค๋ ๋๋ ํ์คํ ๋ค์ ์ด๋ฆฌ๊ณ ์ ์ง๋์ด์ผ ํฉ๋๋ค. ๋๋ ๊ฐ์ฅ ์์ฃผ ์ฐพ๋ ๋ฌธ์ ์ค ํ๋์ด๊ธฐ ๋๋ฌธ์ ์ต์ํ ์ผ์ข ์ ์ ๋ฐ์ดํธ๊ฐ ์์ฃผ ์์ด์ผ ํฉ๋๋ค.
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
@eXponenta ์ ๋ฐ ๋๋ฌด ์ ๋์