최근 수정 시각 : 2021-06-13 02:34:51

SFML

SFML
파일:external/upload.wikimedia.org/393px-SFML2.svg.png
개발 Laurent Gomila
플랫폼 윈도우, 리눅스, 맥OS
장르 멀티미디어 API
라이센스2.0 zlib/png license
웹사이트 http://www.sfml-dev.org/


1. 개요2. 상세3. 주의점4. 장점5. 단점6. 설치법7. SFML로 개발된 게임



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을 쓸 이유는 충분하다.

6. 설치법

공식 홈페이지의 튜토리얼 페이지의 Getting started 부분에 SFML이 지원하는 운영체체들의 설치 방법이 나와있다.

7. SFML로 개발된 게임


[1] 대표적으로 문명 콜 투 파워와 심시티 3000의 리눅스판, 세컨트 라이프, Open TTD 등이 있다.[2] 정작 초급자용 맛보기 수준임에도 불구하고 작가가 아무래도 SFML 빠돌이인가 의심스러울 정도로 C++GUI 개발하려면 MFCQt 같은 걸 사용하는 것보다 SFML을 쓰는 게 훨씬 더 낫다고 홍보주장한다. 작가 개인의 취향인지 어떤지는 독자들 스스로 판단할 것