SDL Programming: 두 판 사이의 차이
둘러보기로 이동
검색으로 이동
imported>Drake |
imported>Drake |
||
| 115번째 줄: | 115번째 줄: | ||
== Code::Blocks 설치 == | == Code::Blocks 설치 == | ||
* 다운로드 : http://www.codeblocks.org | * 다운로드 : http://www.codeblocks.org | ||
* Wx-Dev-C++ : http://wxdsgn.sourceforge.net | |||
== Code::Blocks SDL 마법사 == | == Code::Blocks SDL 마법사 == | ||
2016년 12월 25일 (일) 15:37 판
소개
목적
- 이 문서는 무료 컴파일러 IDE 및 그래픽 라이브러리를 사용하여 2D 게임을 작성하는 방법에 대해 설명합니다.
- 이 문서에서 다루는 특정 그래픽 도구는 Simple Directmedia Layer Graphics Library의 약어 인 SDL입니다.
- SDL에 대해 알아야 할 중요한 점은 이것이 크로스 플랫폼이라는 것입니다.
- SDL을 사용하여 작성된 프로그램은 코드를 거의 변경하지 않고 Windows, Mac 및 많은 UNIX 변형과 같은 다양한 운영 체제 플랫폼에서 실행되도록 다시 컴파일 할 수 있습니다.
- SDL 라이브러리는 2D 유형의 게임을 쉽게 만들 수있는 기능을 제공합니다.
- 2D 게임은 정적 필드 (예 : Pong, Donkey Kong) 또는 스크롤 (예 : Mario Bros.)에서 이루어지는 게임입니다.
- 그래픽은 처음 설계되었을 때 사용 된 게임 시스템과 컴퓨터의 초기 제한 때문에 간단합니다.
- 액션과 게임 플레이는 오늘날 만들어진 모든 현대 3D 게임만큼 재미있을 수 있습니다.
- 2D 게임의 재미와 성공에 대한 간증은 Xbox Live Arcade 및 Wii Virtual Console에 대한 그들의 부활과 인기입니다.
- SDL 라이브러리 및 SDL과 함께 작동하도록 설계된 모든 추가 지원 라이브러리가 활용됩니다.
- 우리는 간단한 게임 인 Pong, Breakout, Minesweeper, Tetris를 만들 것입니다.
- 또한, 끝으로 우리는 좀 더 진보 된 게임 기술을 보여주기 위해 플랫폼 스크롤링 게임을 제작합니다.
전제조건
- 이 노트를 이해하고 시간과 노력에 투자할만한 가치가 있으려면 C++을 어느정도 알아야 됩니다.
- 당신이 스스로 C ++을 배우고 있다면 많은 유용한 웹 사이트가 있습니다.
- http://www.steveheller.com/cppad/Output/dialogTOC.html
왜 SDL인가
- Id Software가 Commander Keen 게임을 실행하는 게임 엔진의 공개 버전으로 Klone Keen이라는게 있습니다.
- 게임 커맨더 킨 (Keen Commander)은 1990 년대 초반 일련의 게임에서 셰어웨어 4로 출시되었습니다.
- 이 게임은 닌텐도 엔터테인먼트 시스템 슈퍼 마리오 브라더스 게임의 사이드 스크롤링 동작을 복제 할 수 있다는 점에서 주목할 만했습니다.
- 클론 킨 (Klone Keen)을 운영하려면 원본 데이터 파일이 필요합니다.
- 이 게임은 사운드, 비디오 및 키보드 프로세싱을위한 SDL 중 하나 인 몇 가지 무료 라이브러리를 사용했습니다.
- SDL은 일반적으로 두 번째 C ++ 과정에서 학생들에게 제공하는 일반적인 프로그래밍 과제보다 더 재미있는 프로그램을 만들 수 있도록 학생들이 배우기에 완벽한 라이브러리였습니다.
역사
- SDL은 Sam Lantinga에 의해 만들어졌으며 1998 년에 일반인에게 공개되었습니다.
- 그는 많은 게임 프로젝트에 참여했으며 2009 년부터 블리자드 엔터테인먼트와 함께했습니다.
- http://www.devolution.com에서 온라인으로 이력서를 확인할 수 있습니다.
- 전 세계에서 가장 좋아하는 게임 인 World of Warcraft에 큰 기여를 한 것을보고 감명 받았습니다.
- Lantinga는 Windows에서 Mac으로 응용 프로그램을 이식하려는 노력을 지원하기 위해 SDL을 만들도록 영감을 받았습니다.
- 라이브러리는 응용 프로그램 생성 및 포팅을 용이하게하기 위해 만들어졌습니다.
- 최소한의 코드 변경으로 다른 플랫폼에 게임을 추가 할 수 있습니다.
- 오늘날 많은 응용 프로그램은 SDL의 다양한 구성 요소를 사용하여 키보드 처리 또는 조이스틱 지원과 같은 기능을 수행하고 OpenGL6 또는 다른 라이브러리로이를 보완합니다.
- SDL은 C로 작성되었지만 C++, Perl, C, Python 등과 함께 사용할 수 있습니다.
SDL 컴포넌트
- SDL은 다음과 같은 서브시스템으로 구성되어 있습니다.
- Video - 이 서브 시스템은 화면에 보이는 것을 처리합니다.
- 게임의 시각적 구성 요소를 구성하는 창, 색상 및 스프라이트입니다.
- 이 구성 요소는 단순한 그래픽 작업을 지원하기위한 것으로 사용자는 선, 원 등을 그릴 수있는 추가 기능을 만들 수있을 정도로 정교하다고 가정합니다.
- Event Handling - 이 하위 시스템은 사용자가 게임과 상호 작용하는 방식을 처리합니다.
- 사용자 창을 최소화하거나 마우스를 움직이거나 키를 누를 때마다 이벤트를 생성합니다.
- 다른 라이브러리로 3D 게임을 제작하려는 경우에도 SDL의 이 구성 요소를 사용하면 유용합니다.
- Joystick Handling - 이 서브 시스템은 오늘날의 조이스틱과 관련된 다양한 복잡성을 다룹니다.
- 각 조이스틱에는 다른 수의 버튼, 다이얼, 스위치, 조이스틱 및 휠이 있습니다.
- 이 구성 요소는 조이스틱을 관리하는 일련의 기능을 제공합니다.
- File I/O - 이 하위 시스템은 bmp파일. SDL은 일반적으로 게임과 같은 멀티미디어 응용 프로그램을 작성할 때 씁니다.
- 프로그래머가 cout이나 cerr를 고려할 경우 멋진 기능이 있습니다.
- 메시지는 자동으로 데이터 파일 (stdout.txt 및 stderr.txt)에 저장됩니다.
- 이것은 바로 사용할 수있는 훌륭한 로깅 시스템입니다.
- Audio - 이 하위 시스템은 게임에 추가 할 수있는 사운드를 지원합니다.
- CDROM - 이 깔끔한 하위 시스템은 사용자 CD ROM 장치에 대한 액세스 및 통신을 지원합니다.
- Timer - 이 서브 시스템은 이벤트 또는 프로세스의 순서가 주기적으로 발생하는시기를 설정하고 제어하는 기능을 제공합니다.
- 그것은 당신이 특정 시간에 당신을 깨우기 위해 매일 설정하는 자명종과 비슷합니다.
- Threading - SDL은 두 개 이상의 실행 스레드를 설정하고 제어하는 기능을 제공합니다.
- 독립적으로 실행되는 대규모 프로세스 내에 존재하는 하위 프로세스입니다.
- 이 기능은 한 번에 두 가지 이상의 작업을 수행 할 수있는 기능을 프로그래머에게 제공합니다.
- 스레드를 사용하면 통신을 관리하고 자원에 액세스해야하므로 프로그램에 복잡성이 추가됩니다.
- 여기까지 기본 라이브러리고 추가 라이브러리로 다음과 같은게 있습니다.
- SDL_image - 이 라이브러리는 PNG, GIF, JPEG 및 기타 여러 가지와 같은 bmp 이외의 이미지 형식을 지원합니다.
- SDL_mixer - 이 라이브러리는 더 많은 형식 세트에서 음악 및 사운드 샘플을 재생할 수 있도록 지원합니다.
- WAV, MOD, MP3 등 - 인기있는 MikMod MOD, Timidity MIDI, Ogg Vorbis 및 SMPEG MP3 라이브러리로 믹스 된 16 비트 스테레오 오디오와 동시에 단일 채널의 음악을 동시에 재생할 수 있습니다.
- SDL_net - 이 라이브러리는 "크로스 플랫폼 네트워킹"기능 세트를 제공합니다.
- 채팅 클라이언트 및 서버 응용 프로그램이 포함되어 있습니다.
- SDL_ttf -이 라이브러리는 트루 타입 글꼴을 사용할 수 있는 기능을 제공합니다.
- 우리는 이것을 게임 스크린에 텍스트를 표시하기 위해 사용할 것입니다.
- 이 라이브러리는 운영 체제 기능에 대한 계층 또는 랩퍼를 제공합니다.
- 라이브러리는 Macintosh와 Windows와 같은 플랫폼 간의 복잡성과 차이점을 숨기는 일련의 공통 기능을 제공합니다.
- Microsoft Windows의 경우 SDL은 기본적으로 GDI 백엔드를 사용합니다.
- GDI는 Graphics Device Interface (그래픽 장치 인터페이스)의 약자로, Windows의 경우 프린터의 컴퓨터 모니터에 표시되거나 표시 될 그래픽 개체 표현에 대한 프로그래밍 지원을 제공하는 API입니다.
- GDI는 Windows 플랫폼에서 게임을 개발하는 가장 빠르고 빠른 방법으로 알려져 있지 않습니다.
- 다른 두 가지 인기있는 옵션은 DirectX와 OpenGL입니다. 현재 버전의 SDL은 DirectX7을 사용하도록 설계되었습니다.
- 최신 DirectX를 직접 배우는 것보다 Windows에서 SDL에 대해 논의 할 이유가 궁금 할 것입니다.
- 학생들은 수업이나 가정에서 Windows를 사용할 수 있지만 Linux와 같은 다른 운영 체제 플랫폼을 선호하는 학생도 모든 프로그래밍 예제를 사용할 수 있습니다.
- Windows 운영 체제에 모든 소프트웨어를 설치한다고 가정하는 자세한 설치 지침 이외의 Windows 관련 항목은 없습니다.
- 학생들은 아직 WinMain을 배울 필요가 없습니다. SDL Windows 응용 프로그램의 진입 점은 여전히 main()입니다.
<source lang="c"> int main (int argc, char * argv []) { } </source>
- main() 형식이 WinMain()보다 아무래도 플랫폼에서 자유롭기 때문입니다.
- 이 문서는 다음 C++ 개념을 알고 있다고 가정하고 쓰여집니다.
- 데이터 타입
- 입출력
- 사칙연산
- 제어문(if, else, switch, while, for)
- 함수
- 다음 개념을 알고 있다면 이해하기가 좀더 수월합니다.
- Enumeration Types(열거형)
- typedef
- Pointers(포인터)
- Arrays(배열)
- Records(Struct 구조체)
- Classes(클래스)
- SDL이나 다른 라이브러리 사용 방법도 알아야 하지만, 아무래도 게임을 만드는게 메인입니다.
- 프로그래밍 과정 이외에도 게임을 만들기 위한 팁들을 알려드릴것입니다.
- 헤더파일을 만들고 사용하는 방법이라던지, 직접 변경하고 확장하기 위한 프로그램 설계 방법이라던지, 조이스틱이나 마우스 사용 방법 등을 설명할 것입니다.
- 초보 프로그래머에게 좋은 소식은 SDL이 오픈소스라는 것입니다. 실제 작동 원리는 소스를 까보면 알 수 있습니다.
SDL 설치
SDL 라이브러리 패키지 받아오기
- 라이브러리 받아오기
- SDL - http://www.libsdl.org/download-1.2.php
- SDL_image - http://www.libsdl.org/projects/SDL_image
- SDL_mixer - http://www.libsdl.org/projects/SDL_mixer
- SDL_net - http://www.libsdl.org/projects/SDL_net
- SDL_ttf - http://www.libsdl.org/projects/SDL_ttf
Code::Blocks 설치
- 다운로드 : http://www.codeblocks.org
- Wx-Dev-C++ : http://wxdsgn.sourceforge.net
Code::Blocks SDL 마법사
SDL 커스텀 템플릿 만들기
WxDev-C++ 설치
WxDev-C++ SDL 템플릿 파일 만들기
SDL_Image 설치 및 테스트
SDL_tff 설치 및 테스트
SDL_mixer 설치 및 테스트
SDL_net 설치 및 테스트
요약
SDL 시작하기
SDL 초기화
SDL Subsystems 초기화, 닫기
비디오 컴포넌트
SDL 비디오 스트럭쳐
비디오 프로그램 만들어보기
스크린 디스플레이
디스플레이 방법 이해하기
선긋기
선긋기에 대한 역사
Slope-Intercept 알고리듬
균형 알고리듬
SDL_Rect
자르기
SDL_VideoInfo
이미지 로드
공굴리기
더블 버퍼링과 페이지 플리핑
더블 버퍼링
페이지 플리핑
다른 타입 이미지 로드
알파 블렌딩
Other Topics
요약
질답
연습문제
원그리기 알고리듬
스프라이트, 심플뷰
프로세스 이벤트
키보드 이벤트
조이스틱 이벤트
시스템 이벤트
== 마우스 이벤트