모든 글 보기 (205)
일반적으로 텍스트를 드로우 하게 되면, 글자는 수평으로는 왼쪽정렬과 수직으로는 상단정렬로 그려집니다. 하지만 수평으로는 중앙정렬로 그려지길 원하시는 분들도 있으실 테고, 수직으로는 하단정렬로 그려지길 원하시는 분들도 계실 수가 있습니다. 이런 분들은, 게임메이커: 스튜디오(GameMaker: Studio)에서 제공하는 아래와 같은 함수 두 가지를 이용하여 텍스트의 정렬을 조작할 수 있습니다. draw_set_halign(halign) fa_left fa_center fa_right draw_set_valign(valign) fa_top fa_middle fa_bottom 각 함수의 초깃값은, draw_set_halign 의 경우는 fa_left 이며, draw_set_valign 의 경우는 fa_top ..
RPG, RTS, AOS 등 게임의 장르를 가리지 않고 게임에 흔하게 나타나는 것이 바로 체력 바(Healthbar, Gaugebar)입니다. 대부분의 초보 분들은 체력 바를 만들지 못해서 변수를 숫자로만 드로윙하는 경우가 많습니다. 하지만 체력 바는 게임메이커: 스튜디오(GameMaker: Studio)에서 기본적으로 지원하는 기능이므로, 여러분들은 별다른 계산 없이 체력 바를 만들 수가 있습니다. 체력 바와 디자인을 비교하기 위해 HP를 숫자로 표현해보았습니다. 아무리 봐도 보기가 불편하지요? 이제 겜스가 지원하는 예쁜 체력 바를 넣어봅시다. 체력 바는 draw_healthbar 라는 함수를 통해 구현하실 수가 있습니다. 겜스 도움말을 보시면 아시겠지만, 이 함수의 인자들은 요런 구성으로 되어있는데요..
with 문은 어떤 오브젝트 혹은 id에게 특정한 명령을 내릴 때에 사용됩니다. 오브젝트에게 명령을 내릴 경우, 그 오브젝트에 해당하는 모든 인스턴스가 명령을 처리하게 됩니다. 반면에 id에게 명령을 내릴 경우, 어차피 id라는 존재는 하나의 인스턴스이니까 그 인스턴스만 명령을 처리하게 됩니다. other 이라는 놈은, 보통 충돌(Collision)이벤트에서 충돌한 대상인 인스턴스의 id를 지칭하는 시스템 변수입니다. 이런 other은 위 사진처럼 사실 with 문에서도 사용이 가능합니다. 음. 그러니까 obj_char이 with(obj_enemy){} 이라는 코드를 수행했을 때 with에게 other이라는 존재는 obj_char입니다. 물론, 여기에서 말하는 obj_char은 with를 호출한 하나의 ..
1경기: 조선(ㅇ) vs 슬라임(마시로), ㅇ 승! 2경기: 슬라임(ㅇ) vs 조선(마시로), ㅇ 승! 오랜만에 마시로(wongalaxy)님과 3판 2선승제 경기를 했습니다. 예전에 했을 때는 한 판 졌었지만, 오늘은 2판을 다 이겼네요! ㅎㅎ
이번 강좌에서는 흔히 쓰면서도 개념을 알 듯 모를 듯한 게임메이커의 드로우 이벤트에 대해서 알아보겠습니다. 어찌 보면 가장 기초적인 개념이면서도 가장 심화적인 부분이 바로 이 드로우 이벤트입니다. 1. 인스턴스가 사라져요 드로우 이벤트를 사용하게 되면 인스턴스가 사라지게(?) 됩니다. 이렇게 되는 이유는 드로우 이벤트를 사용하기 전에는 게임메이커에서 자체적으로 인스턴스의 스프라이트를 그리지만, 드로우 이벤트를 사용하게 되면 게임메이커에서 인스턴스의 스프라이트를 그리지 않기 때문입니다. 사라짐 문제의 해결 방법은 draw_self() 함수를 사용하는 것입니다. 이 함수는 draw_sprite_ext(sprite_index, image_index, x, y, image_xscale, image_yscale,..
증가 연산자와 감소 연산자는 1을 더하거나 빼는 단순한 역할만을 합니다. 증가 연산자는 "var++, ++var"을 사용하며, 감소 연산자는 "var--, --var"을 사용하지요. 단순히 1을 더하거나 빼는 역할만을 하는 이 기능을 왜 만든 것일까요? C언어와 같은 컴파일러에서는 프로그램의 약간의 속도 향상에 있었습니다. 하지만 게임메이커: 스튜디오(GameMaker: Studio)는 인터프리터형식입니다. 그렇다면 이 기능은 필요 없지 않을까요? 그렇다면 위와 같은 코드를 살펴봅시다. 사진에서는 증가 연산자가 draw_text 함수 안에 있습니다. 원래 위의 코드는 증가 연산자를 사용하지 않았다면, draw_text(0, i*16, count) count+=1 이렇게 써졌어야 했을 코드입니다. 이것으로..
대부분의 프로그래밍 컴파일러가 그러하듯, 게임메이커: 스튜디오(GameMaker: Studio)에서도 배열은 2차원까지만 지원합니다. 하지만 여러분들이 어느 날 갑자기 꼭 n차원 배열을 사용해야 하는 때가 온다면 어떻게 해야 할까요? 이 강좌에서는 n차원 배열을 구현할 수 있는 여러 가지 방법 중 한 가지 방법을 제시하고자 합니다. 위 그림은 멍멍이(qw5628)님의 3차원 배열이 [N1, N2, N3] 일 때, [5, 4, 3] 이라는 크기를 가진 배열의 주소를 설명하는 사진입니다. 이 강좌에서는 N을 배열 크기로, n을 배열에 삽입하는 숫자라고 정의하겠습니다. [N1, N2] 에서 [5, 4] 가 배열의 크기일 때, [0, 0] 의 주소는 0 이고, [0, 3] 의 주소가 3 이라면, [1, 0] 의..
임진록 2(Seven Years War 2)의 맵 에디터입니다. 맵 에디터에 문제가 있다면 wnsrn3436@naver.com 으로 제보해주세요. [설치방법] 1. 맵 에디터가 임진록 2 폴더에 존재하여야 합니다. 2. 임진록 2의 버전이 v1.1022 이여야 합니다. [사용방법] 1. 맵 에디터를 실행한 뒤에 아무 시나리오에 들어갑니다. 2. F3 키를 눌러 원하는 맵을 불러옵니다. 3. F1 키를 눌러 유닛과 장식물들을 배치합니다. 4. F2 키를 눌러 맵을 저장합니다. * 맵 전체를 스크린 샷 찍기를 원하시면, "보이지않는위험 -> hmap" 을 순서대로 입력하시기 바랍니다. * F4 키를 꾹 누르면 미니맵에 지형 업데이트가 됩니다. [알려진 문제점들] 1. 처음 맵 에디터를 들어갔을 때 맵을 불러..
여기서 말하는 더블 뷰란 보통의 2인용 게임에서 화면을 나누는것을 의미합니다. 사실 정말로 쉬운 개념인데 2인용 게임을 만드는것이 희귀한 일인지라 잘 모르시는 분들이 많습니다. 2개의 뷰를 같은 위치에 놓으면 어떻게 될까요? 뷰는 0~7번의 화면이 차례로 백그라운드와 드로우 이벤트에 의해 그려집니다. 그러므로 만약 두 개의 뷰의 위치가 같다면, 나중에 그려진 뷰가 화면에 나타나게 됩니다. 하여 두 개의 화면이 나타나야 하는 2인용 게임에서는 두 개의 뷰의 위치를 분리할 필요가 있습니다. 0번 뷰에서는 뷰 세팅을 위와 같이 하였습니다. 뷰가 300*300으로 나뉘므로, Hbor/Vbor(뷰 이동 경계선)을 중앙인 150으로 처리한 것을 보실 수가 있을 것입니다. 이제 1번 뷰입니다. 두 개의 화면을 분리해..
게임메이커: 스튜디오(GameMaker: Studio)는 현재 PNG 형식의 이미지 로드만 지원합니다. 그렇다면 GIF 형식의 이미지 파일은 로드하지 못하니까 스프라이트에 애니메이션 기능을 넣을 수는 없는 걸까요? 답은 "전혀 그렇지 않습니다." 입니다. GIF 파일을 불러오지 못해도, PNG 파일만으로도 충분히 애니메이션 스프라이트를 불러올 수가 있습니다. 이번 강좌에서는 외부 이미지를 불러와서 애니메이션화를 할 수 있는 두 가지 방법을 제시하고자 합니다. 첫 번째 방법은 스트립(Strip)으로 이미지를 불러오는 것입니다. 스프라이트 에디터에서 GIF 파일을 열면 쪼개진 이미지를 볼 수가 있습니다. 이 상태에서 스프라이트를 저장하게 되면, 이렇게 연속된 이미지로 저장됩니다. 위에서 저장된 스트립이 0~..