기본 콘텐츠로 건너뛰기

2월, 2020의 게시물 표시

튜터리얼 3.4. 게임 루프

PICO-8 은 게임 루프(the game loop)를 만들기 위해 세 개의 특별한 함수를 사용한다 . _ init() 함수는 한 번 작동한다 . 그 후 게임이 끝날 때까지 _ update() 와 _ draw() 함수가 반복해서 작동한다 . 아래는 PICO-8 의 기본 구조이다 . -- 뒤는 주석으로 각 함수가 어떤 작업을 하는지 설명한다 . function _init()   -- 게임이 시작하면   -- 이 부분의 코드가 한 번 작동한다 . end function _update()   -- 매 초마다   -- 이 부분의 코드가 30 번 작동한다 end function _draw()   -- 이 부분의 코드도   -- 매 초마다 30 번 작동한다   -- 하지만 _update() 함수가 작동하고 난 다음에 작동한다 end 여러분의 모든 코드를 이 세 함수 안에 넣을 수 있지만 실제로는 그렇게 하는 건 좋은 방법이 아니다 . 더 좋은 방법은 특정 작업을 하는 다른 함수를 만들고 _init(), _update(), _draw() 함수가 그 함수들을 작동시키는 것이다 . 예를 들어 , 플레이어의 동작 코드를 _update() 에 넣는 대신 move_player() 라는 함수를 만들어서 그것을 _ update() 안에서 동작케 하는 것이다 . 아래 그 예를 살펴보자 .   f unction _init()   make_player() end function _update()   move_player() end f unction _draw()   cls() -- 스크린 지우...

튜터리얼 3.3. 테이블

테이블 ( table) 은 여러 정보를 하나의 변수에 저장하는 방법이다 . 대부분의 PICO-8 게임은 테이블을 사용하게 되어 있어서 그 작동법을 알아두는 것이 좋다 . 어떤 정보나 값 ( value) 을 테이블에 추가할 때 그것은 어떤 이름 혹은 키값 ( key ) 인 숫자와 쌍을 이룬다 . 이 키값은 테이블에서 해당 정보를 다시 부를 때 이용한다 . " 저 테이블에 이 키값으로 저장한 정보를 찾아라 ." 라는 식으로 말이다 . 키값은 책의 색인과 같다 . 키값을 정하지 않고 테이블에 값을 추가하면 자동적으로 숫자가 키값으로 배정된다 . 예를 들어 살펴보자 . 이제 코드에서는 어떻게 보이는지 살펴보자 . 아래 예에서 보듯이 player 테이블을 만들 때 비어있는 중괄호를 이용한다 . 그 다음 지정된 키값으로 값을 추가한다 . 다른 예인 item 테이블은 중괄호 안에 값을 추가했지만 키값을 지정하지 않았다 . 이때 키값으로 숫자를 자동으로 지정한다 . player={} player.x=112 player.y=73 player.alive=true   Item={"sword","cloak","boots"} 이런 방식으로 테이블에 값을 넣는다 . 그렇다면 값을 다시 찾아오려면 어떻게 할까 ? 키이름이 지정된 키캆은 그냥 table.key 처럼 사용하면 된다 . 가령 , player.x 나 player.alive 처럼 말이다 . 하지만 숫자로 키값이 되어 있는 경우는 대괄호 안에 키값에 해당하는 숫자를 넣어서 사용한다 . 예를 들어 , items[1] 이나 items[3] 처럼 말이다 . 만일 키값으로 숫자를 ...

튜터리얼 3.2. 함수

함수(function ) 은 컴퓨터에게 주는 명령 목록을 한 이름 밑에 묶어 놓은 것이다 . 함수는   어떤 일련의 동작을 여러 번 컴퓨터가 하도록 할 때 만든다 . 보통  함수   이름 뒤에는 괄호를 붙인다 . 이 괄호 안에  함수가   어떤 작업에   별도의 정보가 필요할 때 그 정보를 입력한다 . 별도 정보가 필요 없어도 괄호를 붙인다 . 여기 draw_target() 이라는  함수   예가 있다 . 이 예는 filled circle 을 이용해 타겟 모양을 그린다 . ( 주의 : 이 작업을 위해서는 x, y 좌표 가 필요하다 .)   f unction draw_target(x,y)   circfill(x,y,16,8)   circfill(x,y,12,7)   circfill(x,y,8,8)   circfill(x,y,4,7) end 이 코드에서 보는 circfill() 역시  함수이 다 . 이  함수는   PICO-8 에 내장된 것으로 여러분이 직접 그 코드를 만들 필요가 없다 . 이  함수 에 x, y 좌표 , 반지름 , 색을 지정하면 그 좌표 , 반지름에, 해당 색으로 채워진 원을 그린다 . PICO-8 에는 이런 내장  함수가   더 많이 있다 . 보통  함수는   draw_target() 이나 circfill() 같이 지정된 작업만 한다 . 하지만 때로  함수가   작업을 마친 후 정보를 되돌려 주도록 ( return) 할 필요가 있다 . 가령 여러분이 여러 수학적인 작업을 하는  함수를   만들었는데 , 작업...

튜터리얼 3.1. 변수

변수(variables)는   기억하기 좋은 이름으로 정보를 저장하는 방법이다 . 변수에 해당하는 영어 단어 v ariable 이라는 이름에서 보듯이  변수에   저장하는 정보는 다양하며 ( vary) 바뀔수 있다 . PICO-8 에서  변수는   숫자 , 텍스트 , 참거짓값을 가질 수 있다 . 아래는  변수의  몇 가지 예이다 . X=64 name="dylan" Alive=true 어떤 단어는 미리 예약되어 있기 때문에  변수   이름으로 사용할 수 없다 ( "function" 같은 경우 ). 또한  변수   이름을 숫자로 시작할 수 없다 .  

튜터리얼 3.0. 프로그래밍 기본

이 작은 책에 프로그래밍의 모든 것을 소개하는 것은 맞지 않을 것이다 . 실재 그렇게 할 수도 없고 PICO-8 에 대해 이야기할 다른 재미있는 것들이 많다 . 더불어 이미 인터넷 상에 프로그래밍을 소개하는 좋은 자료들이 많다 . 그럼에도 , PICO- 8 을 즐기기 전에 프로그래밍에 대해 몇 개 확실히 짚고 넘어가야 할 것이 있다 . 중요한 것들로 , 이 몇 가지만 알면 프로그래밍에 대해 잘 모르더라도 이 튜터리얼을 따라 하는데 어려움이 없을 것이다 . 이미 프로그래밍에 대해 알고 있다면 이 부분을 넘어가도 좋다 .

튜터리얼 2.6. 좌표

PICO-8 의 스크린 사이즈는 넓이 128 픽셀에 높이 128 픽셀이다 . 처음에는 굉장히 작아 보이겠지만 이 정도 공간이면  광장히  많은 일을 할 수 있다 . 좌표 0,0 이 좌상단이고  좌표  127,127 이 우하단이다 . 즉 , 양수 x 는 오른쪽으로 가고 양수 y 는 아래로 향한다는 의미이다 ( 아마도 여러분이 아는 양수 y 는 보통 위로 향한다는 것과는 다르다 ). 그리고 0 에서부터 세기 때문에 위치 127 이 실재 128 번째 픽셀이라는 것을 기억하라 .

튜터리얼 2.5. 뮤직 에디터

뮤직 에디터에서는 사운드 에디터에서 만든 사운드를 이용해 음악 패턴을 만들 수 있다 . 각 패턴은 4 개의 채널이 있고 각 채널은 사운드 채널에서 만든 사운드를 포함한다 . 패턴의 재생은 상단 우측에 있는 세 개의 버튼 ( 두 개의 화살표와 하나의 사각형 ) 으로 제어한다 . 우측으로 향하는 화살표가 켜져 있으면 시작을 의미한다 . 왼쪽으로 향하는 화살표가 켜져 있으면 반복 ( 루프 ) 지점이다 . 사각형의 켜져 있으면 정지 지점이다 . 재생은 한 패턴의 끝에서 그 다음 패턴의 시작으로 흐른다 . 하지만 , 재생 중 한 패턴의 끝에 도달했지만 거기가 반복 지점이면 시작 지점을 찾아 거기서부터 다시 재생한다 . 만약 한 패턴의 끝에 도달했는데 거기가 정지 지점이면 재생은 멈춘다 . 숏컷 Space : 재생 / 멈춤 -/+ : 앞 / 뒤 패턴으로 가기 주의 : 뮤직 에디터에서도 사운드를 편집할 수 있다 . 따라서 사운드 에디터의 대부분 숏컷을 뮤직 에디터에서 사용할 수 있다 .

튜터리얼 2.4. 사운드 에디터

PICO-8 카트 ( 카트리지 ) 는 64 개까지 사운드 노트를 담을 수 있다 . 각 노트의 진동수 , 악기 , 볼륨 , 효과를 조절할 수 있다 . 또한 전체 사운드의 재생 속도를 바꿀 수 있고 일부를 반복할 수 있다 . 사운드 에디터는 2 개의 모드가 있다 . 피치 모드와 트래커 모드이다 . 피치 모드는 간단한 음향 효과 제작에 유용하고 트래커 모드는 음악 제작에 유용하다 . 트래커 모드를 사용하기 위해서는 나중에 소개할 PICO-8 음악 레퍼런스를 참고하기 바란다 .   숏컷 Space : 재생 / 멈춤 -/+ : 앞 / 뒤 사운도로 가기 </> : 현재 사운드의 속도 바꾸기 Shift-Space : 현재 8 개 노트 재생하기 Shift-Click : 악기 , 효과 , 볼륨 위에서 시프트 - 클릭을 누르면 사운드 안의 모든 노트가 한 번에 바뀜 Ctrl-Up/Ctrl-Down, PgUp/PgDn : 4 개 노트를 한 번에 위 / 아래로 이동 ( 트래커 모드에서만 ) Ctrl-Left/Ctrl-Right : 열 바꾸기 ( 트래커 모드에서만 ) ( 맥 OS 에서는 Ctrl 대신 Cmd 사용 )

튜터리얼 2.3. 맵 에디터

PICO-8 은 맵 타일로 스프라이터 에디터에서 만든 8 X8 사이즈의 스프라이트를 사용한다 . 즉 , 16 X16 개의 타일이면 전체 화면을 다 채울 수 있다 . 최대 수평 128 개 , 수직 64 개의 타일로 맵을 다 채워도 맵의 하단은 실제로 스프라이트 에디터의 마지막 2 개 탭과 공간을 공유한다 . 따라서 큰 맵을 원하는지 많은 스프라이트를 원하는지 선택해야 한다 .(역자: 역시 앞의 스프라이트 내용과 연결되서 이해 필요) 스프라이트 #0 의 그림은 무엇이든 상관없이 지우개의 역할을 한다 . 이 걸 이용해서 맵 타일을 지울 수 있다 . 숏컷 Mouse Wheel Up/Down, </> : 줌인 / 줌아웃 Space : 스페이스 키 누르고 있는 동안 맵 그리기창 내부 선택된 영역 드래그해서 이동 가능 Q/W 혹은 -/= : 앞 / 뒤 스프라이트로 이동 Shift-Q/Shift-W 혹은 _/+ : 스프라이트 한 줄 앞 / 뒤로 움직이기 1/2 : 앞 / 뒤 색으로 움직이기 Up/Down/Left/Right : 맵 그리기창 안 스프라이트 이동하기 Right-Click : 마우스 커서 밑에 있는 스프라이트 선택하기

튜터리얼 2.2. 스프라이트 에디터

스프라이트는 게임을 이루는 그림 조각이다 . 캐릭터 , 맵 타일 , 픽업 , 타이틀 , 배경 등 그 어떤 것도 될 수 있다 . PICO-8 에서는 256 개의 8 X8 사이즈의 스프라이트를 사용할 수 있다 . 이 스프라이트는 0-3 번까지 4 개의 탭에 나눠서 만들 수 있는데 , 마지막 2 개의 탭은 맵 에디터와 공유한다 . 따라서 맵이 아주 클 경우 , 마지막 2 개의 탭은 사용하지 못할 수도 있다 . 그리고 마지막 2 개의 스프라이트 탭을 쓸 경우 , 맵 에디터의 하단을 사용할 수 없다 .(역자: 맵 에디터의 맵 그리기창에서 직접 그리면 이 그림들이 2, 3번 스프라이트 탭에 자동으로 들어갑니다. 사실 이 부분은 저도 왜 이렇게 했는지 이해하기 어렵습니다. 좀 더 사용해 봐야 알 수 있을 것 같습니다.) 숏컷 H/V : 스프라이트를 수평 / 수직으로 뒤집기 R : 시계 방향으로 스프라이트 회전하기 Q/W 혹은 -/= : 앞 / 뒤 스프라이트로 이동 Shift-Q/Shift-W 혹은 _/+ : 스프라이트 한 줄 앞 / 뒤로 움직이기 1/2 : 앞 /뒤  색으로 움직이기 Up/Down/Left/Right : 그림창 안 스프라이트 이동하기 Mousewheel Up/Down, </> : 줌인 / 줌아웃 Space : 스페이스 키 누르고 있는 동안 그림창 내부 선택된 영역 드래그해서 이동 가능 Right-Click : 마우스 커서  밑 에 있는 색 선택하기

튜터리얼 2.1. 코드 에디터

프로그램 코드는 모두 여기서 작성한다 . PICO-8 은 쓸 수 있는 코드 수량에 한계가 있다 . 이 한계는 토큰 때문에 발생한다 . 토큰은 기본적으로 개별 코드 조각들이다 . 예를 들어서 , x=width+7 은 5 개의 토큰으로 이루어져 있다 ( x, =, width, +, 7) . 전체 8192 개의 토큰만을 사용할 수 있다 . 너무 큰 게임을 만드는 게 아니라면 이 정도로도 괜찮다 . 사용한 토큰 수는 오른쪽 하단에 표시된다 . 숏컷 Alt-Up/Down: Function 간 이동 Ctrl-L : 특정 숫자의 코드 라인으로 이동 Ctrl-Up/Down : 제일 위 / 아래로 이동 Cntrl-Left/Right : 한 단어씩 좌 / 우 이동 Ctrl-F, Ctrl-G : 텍스트 찾기 혹은 다시 찾기 Ctrl-D : 현재 라인 복제하기 Tab/Shift-Tab : 들여쓰기 / 현재 선택된 라인 들여쓰기 해제 Ctrl-Tab/Shift-Ctrl-Tab : 앞 / 뒤 코드 탭으로 이동 ( 맥 OS 에서는 Ctrl 대신 Cmd 사용 )   

튜터리얼 2.0. PICO-8 사용하기

PICO-8 을 처음 작동시키면 여러분은 명령어 입력 모드에서 시작하게 된다 . 여기서 여러분은 SAVE, LOAD 그리고 RUN 같은 명령어를 입력할 수 있다 . HELP 명령어로 어떤 명령어들을 쓸 수 있는지 볼 수 있다 . ESC 키로 에디터 모드와 명령어 모드를 전환할 수 있다 . 게임을 플레이하다 ESC 키를 누르면 명령어 모드로 돌아올 수 있다 . 여기서 ESC 키를 한 번 더 누르면 에디터 모드로 들어간다 . 각각의 에디터 모드와 관련 숏컷들은 이어지는 페이지들에서 설명한다 . 아래 숏컷들은 모든 에디터 모드에서 공통이다 . 숏컷 Alt-Right/Left : 앞/뒤 에디터 이동 Ctrl-S : 저장 Ctrl-R : 실행 Ctrl-M : 묵음/해제 Alt-Enter : 전체화면 Alt-F4, Cmd-Q : 중지 ( 맥 OS 에서는 Ctrl 대신 Cmd 사용 )