GAME MAKER 강좌
KAYAN
◈ 게임메이커에서 비디오 재생
게임메이커는 코덱과 함께 제공되지 않으며 게임이 실행되는 OS 플랫폼에 설치되어 있는 코덱을 사용합니다.
즉, 비디오는 게임의 대상 OS 플랫폼에서 디코딩할 수 있는 형식으로 인코딩되어야 합니다.
특정 형식을 사용하는 경우 관련 코덱의 라이선스 및 게임 수익에 따라 라이선스 비용을 지불해야 할 수 있으며,
이 경우 코덱 소유자에게 지불해야 하는 모든 수수료에 대한 법적 책임은 개발자에게 있습니다.
코덱도 플랫폼마다 라이선스가 다르기 때문에 여러 플랫폼에 배포되는 게임 개발에 주의가 필요합니다.
비디오 형식(예: .mp4, .avi, .mkv 등)은 비디오 및 오디오 스트리밍을 하는 단순한 컨테이너이며,
둘 다 별도로 인코딩해야 될 수 있고 별도의 라이선스가 필요할 수도 있습니다.
게임메이커에서 아래 함수를 사용하면 게임내에 비디오을 재생할 수 있습니다.
◎ video_open(path) : 비디오 열기 ◎ video_close( ) : 비디오 제거 ◎ video_draw( ) : 비디오 상태 배열 반환 |
비디오 재생은 아래의 단계를 거칩니다.
1) 프로젝트의 Included Files(/datafiles 디렉토리)에 비디오 파일을 추가합니다.
또는, 비디오 파일 경로를 확보합니다.
2) video_open( ) 함수를 사용하여 비디오 파일을 로드합니다.
3) video_draw( )를 사용하여 Draw 이벤트에 그립니다.
- 이 함수는 비디오을 내부 서피스에 그리고 배열의 일부로 반환합니다.
- 비디오를 표시하려면 draw_surface( )를 사용하여 해당 서피스를 수동으로 그려야 합니다.
3) 비디오가 끝나면 video_close( )를 호출하여 메모리에서 제거합니다.
(▲ 비디오 파일 재생)
일단 함수에 대해 알아봅시다.
아래 함수를 사용하면 비디오를 게임내에 로드하여 재생합니다.
◎ video_open(path) : 비디오 열기 |
이 함수를 사용한다고 해서 바로 비디오가 표시되는 것은 아닙니다.
비디오의 표시는 video_draw( )함수를 통해 별도로 표시할 필요가 있습니다.
예)
video_open("splash.mp4"); |
재생할 지정한 비디오 파일을 로드합니다.
다음 함수는 비디오 재생 상태를 배열로 반환하며, 반환된 값으로 비디오를 표시할 수 있습니다.
◎ video_draw( ) : 비디오 상태 배열 반환 - 배열[0] : 데이터 반환 (0 = 문제 없음, -1 = 오류 있음, -2 = 재생 끝) - RGBA Videos: 배열[1] 비디오 프레임 서피스 - YUV Videos : 배열[1] 흑백 서피스, 배열[2] 모든 색상 데이터를 포함하는 채도 서피스 |
사용예)
//Draw 이벤트 var _data = video_draw(); var _status = _data[0]; if (_status == 0) { var _surface = _data[1]; draw_surface(_surface, x, y);//비디오 표시 } |
비디오의 크기가 화면의 크기보다 크더라도 자동으로 맞춰주진 않습니다.
따라서 비디오의 크기(서피스의 크기로 확인)를 확인하고, draw_surface_ext 함수로 리사이징하여 표시해야합니다.
예) 화면에 꽉차게 표시(비율 고정 안함)
//Draw 이벤트 var _data = video_draw(); var _status = _data[0]; if (_status == 0) { var _surface = _data[1]; var xs=room_width/surface_get_width(_surface); var ys=room_height/surface_get_height(_surface); draw_surface_ext(_surface, 0, 0, xs, ys, 0, c_white, 1); } |
※ 파일 로드시 약간의 딜레이가 발생해 화면에 표시되는 것이 조금 늦을 수 있습니다.
마지막으로 아래 함수는 비디오가 끝났을 때, 메모리에서 완전히 제거합니다.
◎ video_close( ) : 비디오 제거 |
video_close( ) |
비디오 함수는 비동기 콜백(Async Social 이벤트)을 실행합니다.
◈ 비동기 콜백(Async Callbacks)
비동기 소셜(Async Social) 이벤트는 async_load 맵의 "type" 키가 지정된 값으로 설정된 아래 주어진 단계에서 트리거됩니다.
◎ "video_start": 비디오 재생이 시작되면 상태가 video_status_preparing에서 video_status_playing으로 변경됩니다. ◎ "video_end": 비디오이 끝날 때. 비디오가 루프로 설정되어 있으면 트리거되지 않습니다. |
다음은 비디오 콜백을 수신하는 비동기식 소셜 이벤트의 예입니다.
사용예)
//Async Social 이벤트 var _type = async_load[? "type"]; if (_type == "video_start"){ //비디오 시작 } else{ if (_type == "video_end"){ //비디오 종료 video_close( ); } } |
위의 코드는 async_load 맵에서 유형을 읽습니다.
비디오가 끝나면 video_close( )를 호출하여 메모리에서 비디오를 제거합니다.
'GameMaker강좌[GMS2] > GMS2기초강좌' 카테고리의 다른 글
[게임메이커 강좌-기초][GMS2] 게임메이커에서 비디오 재생-2 : 비디오 제어 함수 (0) | 2024.03.22 |
---|---|
[게임메이커 강좌-기초][GMS2] GIF 이미지 저장 기능 (0) | 2024.03.21 |
[게임메이커 강좌-기초][GMS2] 스프라이트 이미지 저장하기 (0) | 2024.03.20 |
[게임메이커 강좌-기초][GMS2] 추가한 스프라이트 이미지에 충돌 마스크 설정 (0) | 2024.03.20 |
[게임메이커 강좌-기초][GMS2] 게임상에서 외부 이미지 추가하기 (2) | 2024.03.19 |
댓글