프로그래밍 강의/게임메이커 스튜디오 (35)
여기서 말하는 더블 뷰란 보통의 2인용 게임에서 화면을 나누는것을 의미합니다. 사실 정말로 쉬운 개념인데 2인용 게임을 만드는것이 희귀한 일인지라 잘 모르시는 분들이 많습니다. 2개의 뷰를 같은 위치에 놓으면 어떻게 될까요? 뷰는 0~7번의 화면이 차례로 백그라운드와 드로우 이벤트에 의해 그려집니다. 그러므로 만약 두 개의 뷰의 위치가 같다면, 나중에 그려진 뷰가 화면에 나타나게 됩니다. 하여 두 개의 화면이 나타나야 하는 2인용 게임에서는 두 개의 뷰의 위치를 분리할 필요가 있습니다. 0번 뷰에서는 뷰 세팅을 위와 같이 하였습니다. 뷰가 300*300으로 나뉘므로, Hbor/Vbor(뷰 이동 경계선)을 중앙인 150으로 처리한 것을 보실 수가 있을 것입니다. 이제 1번 뷰입니다. 두 개의 화면을 분리해..
게임메이커: 스튜디오(GameMaker: Studio)는 현재 PNG 형식의 이미지 로드만 지원합니다. 그렇다면 GIF 형식의 이미지 파일은 로드하지 못하니까 스프라이트에 애니메이션 기능을 넣을 수는 없는 걸까요? 답은 "전혀 그렇지 않습니다." 입니다. GIF 파일을 불러오지 못해도, PNG 파일만으로도 충분히 애니메이션 스프라이트를 불러올 수가 있습니다. 이번 강좌에서는 외부 이미지를 불러와서 애니메이션화를 할 수 있는 두 가지 방법을 제시하고자 합니다. 첫 번째 방법은 스트립(Strip)으로 이미지를 불러오는 것입니다. 스프라이트 에디터에서 GIF 파일을 열면 쪼개진 이미지를 볼 수가 있습니다. 이 상태에서 스프라이트를 저장하게 되면, 이렇게 연속된 이미지로 저장됩니다. 위에서 저장된 스트립이 0~..
이번 강좌에서는 정말로 쉽게 구현할 수가 있지만, 어찌할 방법을 몰라서 발만 동동 구르는 게임 일시 정지 기능에 대해 다루겠습니다. 여러분은 강좌를 보기 전에 서피스를 먼저 배워두시는 편이 좋습니다. Create 이벤트입니다. 위 코드에서 눈여겨보아야 할 것은 'view_surface_id[0] = suf' 부분입니다. 제 서피스강좌를 보신 분들이라면 이게 화면을 서피스로 복사하는 역할을 한다는 것을 알 수가 있을 것입니다. 당연히 view_surface_id[*] 기능을 사용하는 게임 프로젝트는 뷰를 만들어야 하고요. 왜 화면을 서피스에 복사하느냐면, 게임이 일시 정지되기 때문입니다. 게임이 일시 정지가 되면, 일시 정지가 되기 전의 게임화면을 그려야 하므로 서피스로 따로 저장해 두는 것이죠. play..
게임메이커: 스튜디오(GameMaker: Studio)에서는 폰트 설정 없이 한글을 드로우 하게 되면 글자가 그려지지 않습니다. 여러분의 게임에 한글을 드로우 하려면 프로젝트에 폰트를 추가해야 합니다. * 게임메이커: 스튜디오의 문자열은 유니코드인 UTF-8 포맷으로 이루어져 있으므로, 폰트의 범위를 설정할 때는 유니코드 범위 목록을 살펴보는 것도 좋습니다. 먼저 Fonts 리소스에서 Create Font 로 새로운 폰트를 만들어주세요. 한글을 드로우 하려면 한글 폰트가 필요합니다. Font 에서 한글을 그릴 수 있는 폰트를 선택해주세요. * '@나눔고딕' 처럼 @가 붙어있는 폰트는 옆으로 누워있는 모양의 폰트입니다. 기본으로 추가되어있는 32 to 127 의 범위는 영어와 특수문자들이 들어있습니다. 불..
이번 강좌에서는 화면에 비가 내리는 파티클을 만들어볼 것입니다. 사실 원래는 짱 짱 멋진 캠프파이어를 예시로 하고자 했는데, 그 부분은 여러분이 구현하는 게 좋다고 판단하였습니다. 캠프파이어를 만들고자 하신다면, 불 모양은 part_type_shape 함수의 내장 스프라이트에서 얻으실 수 있습니다. (mamaqhf 님의 예시) 비는 모든 인스턴스 위에 존재하여야 합니다. 파티클 시스템의 깊이를 최대한 낮게 잡아줍니다. 이제 빗자국 파티클 타입을 만들어 봅시다. 원 모양을 주고 크기는 최대한 낮게 잡은 뒤 파티클이 존재할 시간을 잡아주세요. 가장 중요한 하늘에서 내리는 비 부분입니다. "part_type_death(pt, 1, pt2)" 부분의 코드를 통해서 자신이 사라지면 빗자국을 만드는 것을 보실 수가..
여러분들은 이펙트를 스프라이트로 그릴 수도 있지만, 파티클(Particle)이라는 시스템으로 컴퓨터로 만들 수도 있습니다. 게임메이커: 스튜디오(GameMaker: Studio)는 이런 파티클 기능을 쉽게 구현할 수 있게 해줍니다. 파티클은 게임메이커의 오브젝트의 기능과 매우 유사합니다. 속도, 가속도, 중력, 가변 크기, 생명, 파티클이 파괴될 시 파티클 생성 등 여러 가지 기능을 제공합니다. 당신은 강좌를 읽기 전에 게임메이커: 스튜디오의 도움말을 참조하여 어떤 파티클에 함수가 있는지 살펴보는 것이 좋습니다. 파티클을 조작하는 함수는 매우 다양하므로 강좌에서는 충분히 다루질 못합니다. 파티클의 생성은 기본적으로 '파티클 시스템 -> 파티클 타입 -> 파티클 이미터' 순서를 거치게 됩니다. 그러나 파티..
해시(Hash)란 무엇이고 왜 써야 할까요? 대부분의 게임은 소스 프로젝트 안에 유닛들의 능력치가 저장되어 있을 것입니다. 하지만, 대형 게임의 경우 패치를 통해 능력치 파일을 게임 폴더 등에 전송하게 되는데, 이때 누군가가 능력치 파일을 마음대로 수정한다면 골치가 아파지겠지요? 이럴 때 사용하는 게 암호화와 해시 기능이며, 이번 강좌에서는 해시에 관한 내용을 다룰 것입니다. 해시란, 어떤 문자열이나 파일에서 특정한 연산을 하여 특정한 문자열을 뽑아낸 것입니다. 이 문자열은 이론상으론 해시를 뽑아낸 데이터와만 일치해집니다. 그러므로 어떤 데이터가 단 1바이트라도 수정이 되면, 해시값이 크게 바뀌어서 파일이 수정된 것을 감지할 수가 있습니다. (해시는 암호화가 아닙니다. 단지 특정한 값을 뽑아낼 뿐입니다...
모바일 OS(안드로이드, IOS, Windows Phone)는 마우스가 아닌 터치를 기반으로 동작하기 때문에 오브젝트를 움직이려면 가상의 키패드가 필요합니다. 이전 강좌에서 멀티 터치 구현에 대해 알아보았지만, 다섯 가지나 되는 터치의 경우의 수로 키패드를 만들기에는 매우 복잡합니다. 그러나 다행히도 게임메이커: 스튜디오(GameMaker: Studio)에서는 가상 키(Virtual Keys) 함수들을 제공합니다. 여러분들은 이 함수들을 가지고 가상 키패드를 정말 쉽게 만드실 수 있습니다. 겜스에서는 다음과 같은 네 가지의 가상 키 함수를 제공합니다. virtual_key_add virtual_key_show virtual_key_hide virtual_key_delete 제가 지금부터 만드는 가상 키패..
이번 강좌에서는 모바일에서 종종 사용되는 멀티 터치를 다뤄볼 것이며, 위 사진의 예제를 토대로 강의합니다. 멀티 터치는 윈도우에서는 별로 쓸 일이 없는 기능이긴 하지만, 모바일(안드로이드, IOS, Windows Phone)에서는 꼭 필요한 기능이니 익혀두는 것이 좋습니다. 또한, 이 강좌에서는 서피스를 사용하니 그 기능을 모른다면 서피스 강좌를 먼저 읽어두시는 편이 좋습니다. Object0 의 Create 이벤트입니다. 화면에 터치한 흔적이 남아야 하므로 서피스를 만들고 검은색으로 초기화했습니다. mouse_previous 배열은 터치의 이전 좌표를 담는 역할을 할 것이고, mouse_check 배열은 현재 터치를 하는 중인지에 관한 여부를 담을 것입니다. device_mouse_dbclick_enab..
여러분의 게임 프로젝트가 혹시 위와 같지는 않으신가요? 적 오브젝트는 추가해야 하고, 그에 따라 충돌 이벤트는 한없이 늘려야 합니다. 만일 적 오브젝트가 100개라면, 충돌 이벤트가 무려 100개! 상상만 해도 끔찍하지 않나요? 하지만 다행히도 게임메이커: 스튜디오(GameMaker: Studio)에서는 오브젝트를 하나로 묶을 수 있는 페런츠(Parents)라는 기능을 지원합니다. 부모(Parents)를 설정하는 방법은 간단합니다. 먼저 페런츠 오브젝트를 생성한 뒤에, 원하는 오브젝트들이 그 페런츠를 선택하면 됩니다. TIP. 페런츠는 페런츠의 페런츠를 설정할 수도 있습니다. 한마디로 위처럼 오브젝트를 '계층화' 시켜서 편리하게 관리할 수가 있습니다. 페런츠 기능을 사용하게 되면, 'with(페런츠){i..