모든 글 보기 (205)
이번 강좌에서는 정말로 쉽게 구현할 수가 있지만, 어찌할 방법을 몰라서 발만 동동 구르는 게임 일시 정지 기능에 대해 다루겠습니다. 여러분은 강좌를 보기 전에 서피스를 먼저 배워두시는 편이 좋습니다. Create 이벤트입니다. 위 코드에서 눈여겨보아야 할 것은 'view_surface_id[0] = suf' 부분입니다. 제 서피스강좌를 보신 분들이라면 이게 화면을 서피스로 복사하는 역할을 한다는 것을 알 수가 있을 것입니다. 당연히 view_surface_id[*] 기능을 사용하는 게임 프로젝트는 뷰를 만들어야 하고요. 왜 화면을 서피스에 복사하느냐면, 게임이 일시 정지되기 때문입니다. 게임이 일시 정지가 되면, 일시 정지가 되기 전의 게임화면을 그려야 하므로 서피스로 따로 저장해 두는 것이죠. play..
임진록2+ 조선의반격 밸런스 수정기를 만들려고 노가다 중. HQ팀은 왜 능력치를 EXE 안에 둬서 어떤 게 어떤 능력인지도 구별하기 힘들게 하는지 모르겠다. 능력치를 하나하나 바꿔가면서 능력에 주석을 다는 중이다. 이런데에 HEX-RAY를 써보니까 분석이 훨씬 쉬워졌다. 올리디버거로 대충 예상은 가능하긴 한데, IDA에서는 임시변수 이름을 숫자로 직접 변환해준다. HEX-RAY는 리버싱이 막혔을 때 사용하면 정말 좋은 도구인 것 같다. 항상 많은 도움을 받는다. 위 사진은 조반에서 특정 파일이 "(var & 16) ? var-16 : var+16" 암호화를 쓰길래 만들어본 프로그램(UnZip.exe)으로 뽑아낸 자료. 심심해서 만들어 본 건데 정말로 쓸모가 없었다. (막상 만들어놓고 보니 암호화된 파일이..
게임메이커: 스튜디오(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..
게임메이커: 스튜디오(GameMaker: Studio)에서 게임을 만들 때 액션을 적절하게 사용할 줄 안다면 초보는 벗어난 것이라고 할 수가 있습니다. 이렇게 겜스 사용자는 게임을 만들어 가면서 서서히 중수 티를 띠게 되는데, 이런 중수들 중에서도 게임메이커의 기본 시스템은 모르는 사람이 많습니다. 일반적인 게임메이커의 시스템은 게임을 만들면서 서서히 알아갈 수도 있지만, 이번 강좌에서는 알아두면 그만큼 좋은 중요한 기초 개념에 대해서 알아보고자 합니다. 이 강좌는 단지 총 세 개의 짧은 파트를 다루는데, 이외의 개념은 게임을 만들면서 충분히 얻어갈 수 있기 때문입니다. (예를 들면 오브젝트의 sprite_*, image_* 변수.) 1. 오브젝트와 인스턴스 오브젝트는 알겠는데 인스턴스는 모르겠다? 이것..