하나의 소스로 다양한 플랫폼에 대응하자
다양한 플랫폼이 등장하고 있지만 해당 플랫폼에서는 자신만의 고유한 프로그래밍 언어에 특화된 환경만을 제공하고 있다. 여러 가지 여건을 고려해 볼 때, 하나의 프로그래밍 소스로 여러 플랫폼에 대응하는 코드를 개발하는 것은 불가능한 것처럼 보이지만, SDL과 C++를 활용한다면 이 문제를 해결할 수 있다. 여러 플랫폼에서 자신만의 프로그래밍 언어로 소프트웨어를 개발하긴 하지만, 이런 소프트웨어의 개발을 도와주는 커널이나 상위 프레임워크는 근본적으로 C나 C++로 작성되었고 개별 플랫폼들이 C++ 컴파일을 지원하여 C++로 작성된 소스는 여러 플랫폼에서 활용할 수 있기 때문이다. 그리고 SDL은 미디어 처리, 렌더링, 사운드 처리에 관련된 프로그래밍 인터페이스를 여러 플랫폼에서 대응할 수 있게 제공하므로 SDL로 작성된 코드는 새로운 플랫폼으로 이식하더라도 코드를 거의 수정하지 않아도 된다. 즉, SDL과 C++를 이용해 소프트웨어를 개발한다면 저비용으로 타 플랫폼에 이식하는 게 가능하다.
SDL과 C++를 사용하면 여러 플랫폼에서 해당 소스를 재활용할 수 있지만 생산성이란 부분에서 걸림돌로 작용한다. 하지만 C++로 작성된 레거시 코드를 재활용한다거나 게임 프로그래밍처럼 C++와 궁합이 잘 맞는 분야에 사용하는 경우 C++와 SDL의 조합은 탁월한 선택이라고 할 수 있다. 물론 게임의 경우 Unity3D라는 크로스 플랫폼 개발 환경을 제공하는 개발 툴이 있다. Unity3D는 다양한 애셋이 존재하고 막강한 게임 개발 환경을 제공해 주어 그래픽 디자이너나 기획자도 게임을 제작할 수 있게 해 주지만 프로그래머 입장에서는 그만큼 구현 자유도를 빼앗기는 결과를 낳는다. 이로 볼 때 C++와 SDL 조합을 통한 게임 개발은 소프트웨어의 동작 하나하나를 처음부터 끝까지 프로그래머가 제어할 수 있기에 꽤 매력적이라고 할 수 있다.
『SDL과 C++를 이용한 크로스 플랫폼 프로그래밍』에서는 SDL과 C++로 크로스 플랫폼 프로그래밍을 하는 데 필요한 환경 설정을 구성하는 방법과 SDL을 활용하여 레거시 코드를 재활용하는 예제를 살펴본다. 특히 윈도우와 안드로이드 플랫폼용 프로그램을 단일한 소스 코드로 개발하는 방법을 중점적으로 설명한다. 이 과정에서 각 플랫폼에 특화된 내용을 점검하고 이를 해결하는 방법도 설명한다. 또한, SDL로 완성한 게임 프로젝트를 설명함으로써 SDL이 게임 개발과 궁합이 맞는다는 것을 보여준다. 게임 개발뿐만 아니라 SDL을 활용한 멀티미디어 프로그램 개발에 대한 예제도 다루며 WIN32에 특화된 사용법을 설명하고 SDL 확장 모듈에 관해 다룬다.
아직 국내에서는 크로스 플랫폼 시장이 활성화되지 않았지만 언젠가 크로스 플랫폼 프로그래밍이 주목받게 될 것이며 이 책이 큰 도움이 되리라 생각한다. 비록 이 책에서는 WIN32와 안드로이드에 중점을 둔 SDL 활용을 다루지만 이 책을 읽고 나면 프로그램을 윈도우폰이나 아이폰으로 포팅하는 것이 어렵지 않음을 알게 될 것이다.
Part 1 크로스 플랫폼 프로젝트
chapter 1 SDL
1.1 SDL 2.0
1.2 SDL과 SDL Extension
1.3 주요 내용
1.4 게임 관련 크로스 플랫폼 프레임워크 비교
1.5 정리 007
chapter 2 안드로이드 NDK 프로그래밍
2.1 JNI
2.2 안드로이드 프로젝트 설정
2.2 샘플 NDK 프로젝트
chapter 3 크로스 플랫폼 프로젝트 작성 – HelloSDL2
3.1 메인코드
3.2 안드로이드 SDL_main 함수 호출 과정
3.3 정리
chapter 4 빌드 시스템 구성
4.1 프로젝트 구성
4.2 정리
chapter 5 GUI 라이브러리의 활용
5.1 Guichan
5.2 SDLGUI 프로젝트
5.3 안드로이드 빌드
5.4 정리
chapter 6 미디 플레이어의 제작
6.1 TiMidity++
6.2 사운드 폰트
6.3 코드의 구현
6.4 안드로이드에서 미디 파일 실행하기
6.5 정리
chapter 7 IMS 플레이어의 제작
7.1 코드 구현
7.2 메인 스레드와 콜백 스레드와의 동기화
7.3 iconv 라이브러리
7.4 TTF 폰트의 사용
7.5 정리
Part 2 게임 프로그래밍
chapter 8 OpenTyrian
8.1 빌드를 위한 사전 준비
8.2 소스 분석
8.3 정리
chapter 9 Alien Blaster
9.1 게임 구조
9.2 입력처리
9.3 오브젝트 상호작용 처리 및 충돌 관련 처리
9.4 렌더링
9.5 정리
chapter 10 Arkanoid
10.1 게임 소스
10.2 코드 분석
10.3 정리
chapter 11 Snake Bite
11.1 SDL 2.0 마이그레이션
11.2 게임 구조
11.3 정리
chapter 12 Super Mario
12.1 SDL 2.0 마이그레이션
12.2 안드로이드 포팅
12.3 정리
chapter 13 Socoban
13.1 소스 코드 변경 작업
13.2 코드 리팩토링
13.3 안드로이드 포팅
13.4 정리
chapter 14 Pacman
14.1 SDL 2.0 마이그레이션
14.2 소스 분석
14.3 안드로이드 포팅
14.4 정리
chapter 15 SDL 게임 엔진
15.1 코난 게임
15.2 안드로이드 포팅
15.3 타일드맵의 사용
15.4 정리
Part 3 활용하기
chapter 16 SDL_net
16.1 채팅 서버
16.2 채팅 클라이언트
16.3 정리
chapter 17 SDL_gfx
17.1 SDL_gfx
17.2 샘플 예제
17.3 SDL_gfx 실전
17.4 정리
chapter 18 SDL_ttf
chapter 19 특정 영역에 SDL 화면 출력하기
19.1 balor 라이브러리
19.2 SDL 화면의 출력
19.3 정리
chapter 20 SDL + Windows GUI + FFmpeg
20.1 FFmpeg
20.2 SDLMPEGPlayer
20.3 정리
chapter 21 동기화
chapter 22 에러 보고 시스템 구축
22.1 콜스택
22.2 ACRA
22.3 정리
chapter 23 SDL Migration
23.1 구조체와 enum값
23.2 변경된 메서드
23.3 삭제된 메서드
23.4 Visual Studio 2013 포팅
23.5 정리
chapter 24 기타
24.1 TinyGUI
24.2 AntTweakBar
24.3 도스 박스
24.4 ScummVM
chapter 25 맺음말
리얼타임 eBook 안내
PDF 형식으로 제공되며, 다운로드한 eBook은 PDF 포맷을 지원하는 디바이스 또는 프로그램에서 제한없이 열람할 수 있습니다. 또한 eBook 내의 텍스트 검색 및 인쇄도 가능합니다.