๋ถ๋ฅ:๊ฒ์ ๊ฐ๋ฐ ๋๊ตฌ
์ด ๋ฌธ์์ ์๋ณธ์ ์ธ๋ถ ์ํค์์ ๊ฐ์ ธ์์ต๋๋ค.
๊ฐ๋ฐ | Laurent Gomila |
ํ๋ซํผ | |
์ฅ๋ฅด | ๋ฉํฐ๋ฏธ๋์ด API |
๋ผ์ด์ผ์ค | 2.0 zlib/png license |
์น์ฌ์ดํธ |
1. ๊ฐ์[ํธ์ง]
SFML(Simple and Fast Multimedia Library)์ ํ๋์ค์ Laurent Gomila์ฌ๊ฐ ๋ง๋ ๋ฉํฐ๋ฏธ๋์ด API์ด๋ค. ๊ธฐ์กด์ ํฌ๋ก์ค ํ๋ซํผ ๋ฉํฐ๋ฏธ๋์ด API์ธ Simple DirectMedia Layer (SDL)์ ๋์ฒดํ๋ ค๋ ๋ชฉ์ ์ผ๋ก ๋ง๋ค์ด ์ก์ผ๋ฉฐ, ์ฒ์์๋ C++์ ๊ธฐ๋ฐํ์ผ๋ ๋ฒ์ ์
์ ๊ณ์ํ๋ฉด์ C#์ด๋ Java, ์ฌ์ง์ด๋ ํ์ด์ฌ, ๋ฃจ๋น์ ๊ฐ์ ๋ค์ํ ์ธ์ด๋ฅผ ์ง์ํ๊ฒ ๋์๋ค. ๋ฉํฐ๋ฏธ๋์ด ๋ต๊ฒ ๊ทธ๋ํฝ, ์ฌ์ด๋, ์
์ถ๋ ฅ, ๋คํธ์ํฌ๋ฑ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ง์ํ๋ค. ์ต์ ๋ฒ์ ์ 2.5์ด๋ค.
2. ์์ธ[ํธ์ง]
SFML์ ์ฅ์ ์ ๋น ๋ฅด๊ณ ์ฌ์ฉํ๊ธฐ ์ฝ๊ณ ๊ฐ์ฒด์งํฅ์ ์ด๋ผ๋ ๊ฒ์ ์๋ค. SDL์ด C์ธ์ด๋ฅผ ๋ฐํ์ผ๋ก ๋ง๋ค์ด์ ธ ๊ฐ์ฒด์งํฅ์ ์ธ ๊ณ ๋ ค๊ฐ ๋์ด์์ง ์์๋ฐ ๋นํด, ์ฒ์๋ถํฐ ๊ฐ์ฒด์งํฅ์ ์ธ ๊ฐ๋ฐ์ ์ผ๋์ ๋๊ณ ๋ง๋ API๋ผ์ ํ๋์ ๋ค๋ฅธ ๊ฐ์ฒด์งํฅ ์ธ์ด(C#, JAVA)์์๋ ๋์ํ๊ธฐ๊ฐ ์ฝ๋ค. ๋ํ ์ธํฐํ์ด์ค๊ฐ ์ง๊ด์ ์ด๊ณ ๊ฐ์ฒด์งํฅ์ ์ต์ํด์๋ค๋ฉด ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ๋๋ฐ ์ด๋ ค์์ด ์ ๋ค. ๋ค์๋งํด ํธํ๊ณ ์ฝ๋ค. ๊ทธ๋ํฝ API ์ค ์ฝ๋ค๊ณ ์๋ฌธ๋ SDL๋ณด๋ค ๋ ์ฝ๋ค. ์ฌ์ฉํธ์์ฑ๋ง ์น๋ฉด ๊ณผ๊ฑฐ ๋ณผ๋๋์ฌ์์ ๊ฐ๋ฐํ winbgi์ ๋ง๋จน์ ์ ๋๋ค. ๊ทธ๋ฐ๋ฐ ์ด๊ฑด ๊ทธ๋ํฝ ๋ฟ๋ง ์๋๋ผ ์ฌ์ด๋, ์
์ถ๋ ฅ, ๋คํธ์ํฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊น์ง ๋๋ค. ๊ทธ๋ฌ๋ฉด์๋ ๋น ๋ฅด๊ธฐ๊น์ง ํ๋ค..
3. ์ฃผ์์ [ํธ์ง]
์ผ๋ฐ์ ์ธ ๊ทธ๋ํฝ API์ ๋ค๋ฅธ ๋จ์๋ฅผ ์ฌ์ฉํ๋๊ฒ๋ค์ด ๋ช๋ช ์์ด ์ฃผ์๋ฅผ ์๊ตฌํ๋ค. ์ : Vertex์ ๋ค์ด๊ฐ๋ UV๊ฐ ์ผ๋ฐ์ ์ธ API๋ ๋งจ ๋์ด 1์ด์ง๋ง SFML์ ํฝ์
๋จ์๋ก ๋ฃ์ด์ค์ผํ๋ค. ์ผ๋ฐ์ ์ผ๋ก ์๊ฐํ๊ธฐ์ ๋ ํธํ์ง๋ง ์ฌ์์๋ฐ๋ผ ๊ณ ํด์๋ ๋ฆฌ์์ค๋ฅผ ์ ๊ณตํ๋ค๋๊ฐ ํ๋ ๊ตฌํ์ ์์ด์๋ ๋งค์ฐ ๋ถํธํ ๊ตฌ์ฑ. ๊ฐ๋๋ ๋ผ๋์์ด ์๋๋ผ ์ก์ญ๋ถ๋ฒ์ผ๋ก ๋ฃ๋๋ค.
4. ์ฅ์ [ํธ์ง]
- ํฌ๋ก์ค ํ๋ซํผ ๋ผ์ด๋ธ๋ฌ๋ฆฌ
2018๋ ๊ธฐ์ค ์๋์ฐ. ๋ฆฌ๋ ์ค, ๋งฅOS, ์๋๋ก์ด๋, IOS๋ฅผ ์ง์ํ๋ค.
- ๋ค์ํ ์ธ์ด ์ง์
SFML์ C++ ์์ฃผ๋ก ๊ฐ๋ฐ๋์์ง๋ง ๋ค๋ฅธ ์ธ์ด๋ก๋ ๋ฐ์ธ๋ฉ ๋์ด์๋ค. ํ์ฌ ์ง์ํ๋ ์ธ์ด๋ ์ฌ๊ธฐ์ ๋ณผ ์ ์๋ค. ๋๋ถ๋ถ ์ต์ ๋ฒ์ ์ ๋น ๋ฅด๊ฒ ๋ฐ๋ผ ๊ฐ๊ณ ์์ง๋ง ๊ทธ๋๋ ์ญ์ C++์ด ๊ฐ์ฅ ๋น ๋ฅด๋ค.
- ๋ค๋ฅธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ค์ ๋นํด ๋งค์ฐ ์ฝ๋ค.
๊ณต์ ์ฌ์ดํธ์ ํํ ๋ฆฌ์ผ ํ๋๋ง ๋ณด๊ณ ๋ ์์ฑ๋ ๋์ ํ๋ก๊ทธ๋จ์ ๋ง๋ค ์ ์๊ณ api๋ค์ด ์ฌ์ดํธ์ ์ฒด๊ณ์ ์ผ๋ก ์ ๋ฆฌ๋์์ผ๋ฉฐ ์์๋ ์ ํ ์์ผ๋ฏ๋ก ๊ฐ๋จํ ์์ด๋ง ์์๋ ์์๋ง ๋ณด๊ณ ๋ง๋ค์ด ๋ณผ ์ ์์ ์ ๋๋ค.
5. ๋จ์ [ํธ์ง]
์ฅ์ ๋ ๋ง์ง๋ง, ๋จ์ ๋ ๊ฝค ๋ง๋ค. ์ฐ์ ๋ง์ด๋ํ๋ค. SDL์ ๊ฐ๋ฐ๋์ง ๊ฝค ๋ ๋ฌผ๊ฑด์ด๋ผ์ ๋ง์ด ์ฌ์ฉ๋์ด์๊ณ ์์ฉ ํ๋ก๊ทธ๋จ์์๋ ๋๋ฆฌ ์ฌ์ฉ๋๊ณ ์๋ค.[1] ๋ฐ๋ฉด์ SFML์ ๊ทธ๋ญ์ ๋ญ ์ธ๋งํ๋ค๊ณ ํ๊ฐ๋ฐ๋ 1.6 ๋ฒ์ ์ด ๋์จ๊ฒ 2010๋
. ๊ด๋ก์ ์ฐจ์ด๋ ๊ด๋ จ ์ปค๋ฎค๋ํฐ์ ๊ท๋ชจ, ๊ด๋ จ ๊ฐ๋ฐ ๋์, ๋ ํผ๋ฐ์ค, ์์ค ๋ฑ๋ฑ์ ์ฐจ์ด๋ก ๋ํ๋์ ๊ฐ๋ฐ์ ์ด๋ ค์์ ๊ฒช๊ฒ ํ๋ค. ์ผ๋ก๋ก SDL์ ๊ด๋ จ ์์ ์ด 10์ข
์ด์ ์ถ๊ฐ๋์์ผ๋ SFML์ ์ฒซ ๊ฐ๋ฐ ๋์์ธ <SFML Game Development>๊ฐ 2013๋
6์ 24์ผ ์ถ๊ฐ๋์๋ค.
๊ทธ๋ฆฌ๊ณ SDL ๋ณด๋ค ๊ตญ๋ด ์๋ฃ๊ฐ ๋ถ์กฑํ๋ค, ์๋ ์์ ์๋ ์์ค์ด๋ค. ๊ตญ๋ด์ ์ถ๊ฐ๋ SFML ๊ด๋ จ ๊ต์ฌ๋ ํ์ฌ ๋ฑ ํ ๊ถ ๋ฟ์ด๋ฉฐ, ๊ทธ๋๋ง๋ ์ด๊ธ์์ฉ ๋ง๋ณด๊ธฐ ์์ค์ด๋ค.[2] ์ธ๊ตญ์์๋ ๊ณต์ ํํ์ด์ง ์ธ์๋ ํ๋ฐํ ํธ์ธ ์ฌ์ดํธ๊ฐ ์์ด์ ๊ณต์ ํํ์ด์ง์ Tutorial์ด๋ Open-sourced game์ ๋ฏ์ด์ ์์ค๋ฅผ ์ดํด๋ณด๊ณ ๊ณต๋ถํ๋ ๊ฒ ์ธ์๋ ๋ฐฉ๋ฒ์ด ๊ฑฐ์ ์๋ค. ๊ทธ๋๋ ํํ์ด์ง์ ๊ฐ์ข๊ฐ ๊ฝค ์์ธํ๊ฒ ๋์์๋ ํธ์ด๋ฏ๋ก ์์ด๋ฅผ ์กฐ๊ธ ํ ์ค ์๋ค๋ฉด ์ด๊ณณ์์ ๊ณต๋ถ๋ฅผ ํ์.
SFML์ ๋ฏธ๋๋ ์์ง์ ๋ถํฌ๋ช ํ์ง๋ง, ์ฅ๊ธฐ์ ์ผ๋ก SDL์ ์์น๋ฅผ ์ํํ ์ ์์๊ฑฐ๋ผ ์ ๋ง๋๋ค. ์ผ๋จ ๊ฐ์ฒด์งํฅ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ธ ์ ์ด ๊ฐ๋ฐ์ ๊ต์ฅํ ๋ฉ๋ฆฌํธ๋ฅผ ๊ฐ๊ณ ์๊ธฐ ๋๋ฌธ์ ์ด๊ฑฐ ํ๋๋ง์ผ๋ก SFML์ ์ธ ์ด์ ๋ ์ถฉ๋ถํ๋ค.
๊ทธ๋ฆฌ๊ณ SDL ๋ณด๋ค ๊ตญ๋ด ์๋ฃ๊ฐ ๋ถ์กฑํ๋ค, ์๋ ์์ ์๋ ์์ค์ด๋ค. ๊ตญ๋ด์ ์ถ๊ฐ๋ SFML ๊ด๋ จ ๊ต์ฌ๋ ํ์ฌ ๋ฑ ํ ๊ถ ๋ฟ์ด๋ฉฐ, ๊ทธ๋๋ง๋ ์ด๊ธ์์ฉ ๋ง๋ณด๊ธฐ ์์ค์ด๋ค.[2] ์ธ๊ตญ์์๋ ๊ณต์ ํํ์ด์ง ์ธ์๋ ํ๋ฐํ ํธ์ธ ์ฌ์ดํธ๊ฐ ์์ด์ ๊ณต์ ํํ์ด์ง์ Tutorial์ด๋ Open-sourced game์ ๋ฏ์ด์ ์์ค๋ฅผ ์ดํด๋ณด๊ณ ๊ณต๋ถํ๋ ๊ฒ ์ธ์๋ ๋ฐฉ๋ฒ์ด ๊ฑฐ์ ์๋ค. ๊ทธ๋๋ ํํ์ด์ง์ ๊ฐ์ข๊ฐ ๊ฝค ์์ธํ๊ฒ ๋์์๋ ํธ์ด๋ฏ๋ก ์์ด๋ฅผ ์กฐ๊ธ ํ ์ค ์๋ค๋ฉด ์ด๊ณณ์์ ๊ณต๋ถ๋ฅผ ํ์.
SFML์ ๋ฏธ๋๋ ์์ง์ ๋ถํฌ๋ช ํ์ง๋ง, ์ฅ๊ธฐ์ ์ผ๋ก SDL์ ์์น๋ฅผ ์ํํ ์ ์์๊ฑฐ๋ผ ์ ๋ง๋๋ค. ์ผ๋จ ๊ฐ์ฒด์งํฅ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ธ ์ ์ด ๊ฐ๋ฐ์ ๊ต์ฅํ ๋ฉ๋ฆฌํธ๋ฅผ ๊ฐ๊ณ ์๊ธฐ ๋๋ฌธ์ ์ด๊ฑฐ ํ๋๋ง์ผ๋ก SFML์ ์ธ ์ด์ ๋ ์ถฉ๋ถํ๋ค.
6. ์ค์น๋ฒ[ํธ์ง]
๊ณต์ ํํ์ด์ง์ ํํ ๋ฆฌ์ผ ํ์ด์ง์ Getting started ๋ถ๋ถ์ SFML์ด ์ง์ํ๋ ์ด์์ฒด์ฒด๋ค์ ์ค์น ๋ฐฉ๋ฒ์ด ๋์์๋ค.
7. SFML๋ก ๊ฐ๋ฐ๋ ๊ฒ์[ํธ์ง]
[1] ๋ํ์ ์ผ๋ก ๋ฌธ๋ช
์ฝ ํฌ ํ์์ ์ฌ์ํฐ 3000์ ๋ฆฌ๋
์คํ, ์ธ์ปจํธ ๋ผ์ดํ, Open TTD ๋ฑ์ด ์๋ค.
[2] ์ ์ ์ด๊ธ์์ฉ ๋ง๋ณด๊ธฐ ์์ค์์๋ ๋ถ๊ตฌํ๊ณ ์๊ฐ๊ฐ ์๋ฌด๋๋ SFML ๋น ๋์ด์ธ๊ฐ ์์ฌ์ค๋ฌ์ธ ์ ๋๋ก C++๋ก GUI ๊ฐ๋ฐํ๋ ค๋ฉด MFC๋ Qt ๊ฐ์ ๊ฑธ ์ฌ์ฉํ๋ ๊ฒ๋ณด๋ค SFML์ ์ฐ๋ ๊ฒ ํจ์ฌ ๋ ๋ซ๋ค๊ณ ํ๋ณด์ฃผ์ฅํ๋ค. ์๊ฐ ๊ฐ์ธ์ ์ทจํฅ์ธ์ง ์ด๋ค์ง๋ ๋
์๋ค ์ค์ค๋ก ํ๋จํ ๊ฒ