본문 바로가기

렌파이

대사창에 캐릭터의 얼굴 이미지를 띄우자 - 사이드 이미지 렌파이에서 사이드 이미지란 이렇게 대사창 옆에 표시되는 그림을 뜻합니다. 사이드 이미지는 캐릭터와 연결해서 사용하면 됩니다. 우선 사이드 이미지로 쓸 그림을 몇 장 준비합니다. 튜토리얼에도 사이드이미지용 아이린 그림이 하나 있으니 가져다 써도 됩니다만, 그거 한장만으로는 사이드이미지가 명령어에 따라 바뀌는지 확인하기는 힘드니까 되도록이면 서로 다른 그림을 몇 장 준비합니다. 먼저 init 블록에서 그림을 등록해주고 이미지 태그를 캐릭터와 연결해줍니다. 이 때 사이드 이미지로 등록할 그림에는 앞에 side 라고 적어줍니다. 그래야 렌파이가 "이것이 사이드 이미지로 사용할 그림"이라는 것을 알아채고 그림을 대사창 옆에 표시하기 때문입니다. 그리고 레이블 블록에서 이미지를 연결한 캐릭터와 함께 사이드 이미지를.. 더보기
렌파이 게임 개발에 유용한 내부 툴을 사용해보자 - 개발자용 도구 개발자용 도구란 렌파이로 게임을 만들 때 유용한 렌파이 프로그램의 기능입니다. options.rpy 에서 config.developer = True 로 설정하면 렌파이로 게임을 만들때 유용한 도구와 개발자용 메뉴를 활성화합니다. 말 그대로 개발자용 도구이니 게임을 배포할 때는 config.developer = False 로 설정해두어야 합니다. 개발자용 도구 스크립트 불러오기 - 쉬프트 + e 게임 진행 중 컨트롤 E를 누르면 해당 부분과 관련이 있는 스크립트 행을 찾아 스크립트 에디터에서 실행합니다. 선택지 건너뛰기 - 쉬프트 + .다음 선택지나 call screen문으로 불러온 화면까지 게임 진행을 건너뜁니다. 정확히는 사용자의 입력을 받는 곳까지 건너뜁니다(대사를 넘기는 입력 제외). 그러니까 게임.. 더보기
스타일 환경설정 스타일 환경설정을 이용하면 플레이어가 게임의 모양을 바꿀 수 있도록 게임을 만들 수 있습니다. 정확히 말하자면 스타일 환경설정이란, 플레이어가 스타일을 게임내에서 마음대로 바꿀 수 있도록 만든다기 보다는, 미리 만들어둔 스타일 설정 중에서 하나를 선택하도록 만드는 시스템입니다. 그러니까 우선은 플레이어가 선택할 수 있는 스타일을 먼저 렌파이에 등록해야 합니다. 이때 renpy.register_style_preference 를 이용합니다. renpy.register_style_preference init python: # renpy.register_style_preference(스타일속성, 스타일 옵션 이름, 바꾸려고 하는 스타일의 이름. 스타일 이름 등, 바꾸려고 하는 스타일의 속성, 스타일 속성에 배정.. 더보기
스크린 언어 (7) 기타 편리한 UI 소개 타이머나 단축키 등 쓸만한 기능들은 눈에 보이지 않지만 스크린 언어의 명령문으로 만들 수 있습니다. key 단축키 단축키를 만들 때 사용하는 명령문입니다. 명령문 오른쪽에 단축키로 만들 키의 심볼을 적고 해당 키가 눌렸을 때 실행할 액션을 적으면 됩니다. 키심볼 자리에는 a,b, A, B, (, ) 처럼 막바로 키보드를 눌렀을 때 나타나는 글자로 적어줘도 됩니다. 펑션 키(f1~f12같은 것들)이나 insert, home, page up..등 눌러도 따로 글자같은 걸 볼 수 없는 키에는 해당 키의 명칭이 따로 있으니 그것을 적어주면 됩니다. 각 키의 명칭은 파이게임 매뉴얼에서 확인할 수 있습니다. screen keymap_screen: key "game_menu" action ShowMenu('save'.. 더보기
스크린 언어로 3개의 텍스트를 표현하는 대사창 만들기 문자열에 사용할 수 있는 .find 함수와 문자열 인덱싱을 이용하여 만들었습니다. init python: style.window['thought'].background = "#12345640" style.window['thought'].xmaximum = 400 init python: e = Character('아이린') b = Character('백안시', show_two_window = True) screen say: default side_image = None default two_window = False # what.find는 대사에서 | 표시를 찾아서 그 인덱스를 반환합니다. # 못 찾으면 -1을 반환합니다. # thinkTF 는 그렇게 반환된 위치를 저장하는 변수입니다. $ thinkTF .. 더보기
스크린 언어 (6) 게임 화면 꾸미기 앞서도 얘기했듯, 렌파이의 모든 게임 화면은 스크린 언어로 만들어진 것입니다. 고로 각 메뉴나 게임 화면마다에는 스크린 이름이 정해져 있습니다. 따라서 같은 이름으로 스크린 블럭을 만들면 아얘 새로 만들 수 있습니다. 아니면 프로젝트/game 폴더 안에 있는 screens.rpy 파일을 이용해서 수정할 수도 있습니다. 게임 화면 게임 화면이란 게임의 일부로 쓰이는 화면을 가리킵니다. say 대사창을 만드는 스크린입니다. 이 스크린은 Character()를 통해서 충분히 모양을 바꿔줄 수 있습니다. 그러니 스크립트를 잘 모르는채로 스크린 자체를 건드리는 것은 좋지 않습니다. 단축메뉴를 사용하지 않고 싶다면 블록 제일 밑의 use quick_menu 를 주석처리해버리시면 됩니다. screen say: # D.. 더보기
스크린 언어 (5) - 바 렌파이에서 바(bar)란 어떤 값을 막대모양으로 보여주는 GUI입니다. 수치를 막대로 나타내거나, 오른쪽 그림처럼 어떤 값을 설정하는 때에도 써먹을 수 있습니다. 값을 막대로 표시하기 먼저 스크린 블럭을 만듭니다. 그리고 bar 문을 적어줍시다. screen bartest: bar bar 문에는 두 가지 정보가 필요합니다. value 와 range 인데, 둘을 일단 적어둡니다. screen bartest: bar value range 그리고 value 오른쪽에는 현재 이 바가 표시해야할 값을, range에는 이 바에서 나타낼 값의 최대치를 적어둡니다. 그러니까 분수랑 비슷하다고 보시면 되는데, range 에는 분모 값을, value 에는 분자값을 적어주면 됩니다. ..더 쉽게 예를 들면, 바를 이용해 호.. 더보기
스크린 언어 (4) - 이미지맵 이미지맵 이미지맵이란 따로 버튼이나 바를 추가하지 않고 그림의 일부를 버튼이나 바처럼 만들 수 있는 GUI입니다. 지도를 이용한 이동 시스템이나, 범죄 현장을 뒤지는 변호사 게임을 만들고 싶다면, add 로 바탕 그림을 추가하고 버튼을 일일히 넣는 대신 이미지맵을 이용합시다. 이미지맵은 스크린 블록에서 imagemap 명령문으로 만듭니다. 이미지맵에는 많은 속성을 입력해야 하니 되도록 블럭형태로 만들어서 사용합시다. screen demo_imagemap: imagemap: ground 와 hover 이미지맵을 만들 때 필요한 그림은 최소 2장입니다. 위 그림은 렌파이 튜토리얼 게임에 있는 이미지맵 예제입니다. 이 그림을 보는 순간 한가지 정보를 알 수 있습니다. 바로 저 노란색으로 나타난 아이콘이 지금 .. 더보기
드래그 앤 드롭 예제 예제 설명(영문) 및 다운로드 이미 맞춰진 퍼즐 위에 다른 곳에 있던 퍼즐을 올려놓았을 경우, 퍼즐끼리 서로 위치를 바꾸도록 하는 함수가 나와있는 유용한 예제입니다. (제가 예전에 미니게임 만들 때 실패했던 부분이 바로 이 부분입니다-0-) 더보기
스크린 언어 (3) - 유용한 스크린 명령문 및 속성 유용한 스크린 명령문 및 속성 use 한 스크린을 다른 스크린의 일부로써 사용할 때나, 한 스크린이 다른 스크린의 작동을 제어하는 스크린일 때에는 use를 이용하면 됩니다. 예를 들어 A스크린에 있는 버튼은 눌릴 때마다 각기 다른 스크린을 띄운다면 각 스크린마다 use 를 써서 A스크린을 포함시켜야 합니다. 이 예에 적합한 스크린이 바로 네비게이션 스크린입니다. 네비게이션은 게임 중에 마우스를 오른쪽 클릭하면 나타나는 화면에서 볼 수 있습니다. 네비게이션에 있는 메뉴를 각각 클릭하면 뒤에 배경처럼 나타난 세이브 화면이 눌린 버튼에 따라 다른 화면으로 바뀌게 됩니다. screens.rpy 에서 게임 메뉴 스크린들의 스크립트(save, load, preference)를 살펴보면 모두 use navigatio.. 더보기
스크린 언어 (2) - 스크린 사용 예제와 정렬용 UI 예제 1 게임 화면에 특정한 수치를 계속해서 나타내는 글자, 여기서는 d-day를 표시하는 글자를 넣어보겠습니다. 우선 init 블럭에 dday를 저장할 변수와 새로운 스크린 블럭을 만듭니다. init: $ dday = 10 # screen 스크린이름: screen d_day: 그리고 스크린 블럭에 dday 를 띄울 수 있는 명령어를 추가해줍니다. 스크린에 글자를 띄우는 명령어는 text 고, 그 옆에는 대괄호 안에 변수이름을 적은 문자열을 적으면 변수를 글자로 나타낼 수 있습니다. init: $ dday = 12 screen d_day: text '수능까지 앞으로 [dday]일' 그리고 text 명령문 옆에는 위치 스타일 속성을 적어 dday 글자의 위치를 정해줍니다. init: $ dday = 12 .. 더보기
스크린 언어 (1) - 스크린 만들기 주 메뉴, 게임 메뉴, 세이브/로드 화면, 대사창 등, 렌파이에서 볼 수 있는 화면을 모두 가리켜 스크린이라고 합니다. 그리고 스크린이 작동하는 방식을 제어하는 데 쓰는 언어를 바로 스크린 언어라고 합니다. 스크린 언어를 이용하면 기존 스크린들을 바꿀 수도 있고, 새로운 스크린을 만들 수도 있습니다. 스크린 만들기 먼저 init 블록에서 screen 명령어를 이용해 스크린을 만듭니다. 그리고 screen 명령어를 블록으로 만든 후 그 안에 스크린 언어를 이용해 화면에 나타낼 것을 적어주면 됩니다. init: # hello_world 라는 이름으로 스크린을 하나 만듭니다. screen hello_world: # eileen_happy.png 그림을 추가합니다. add "eileen_happy.png" xa.. 더보기
게임 시스템 관련 설정은 options.rpy 에서 options.rpy게임을 만들 때는 게임 화면의 크기나 세이브 파일 저장 경로처럼 미리 정해야 하는 것들이 있습니다. 이런 부분은 렌파이에서는 options.rpy 에서 관리할 수 있습니다. 반드시 그래야 할 필요는 없습니다만 관리하기 편리하게끔 config. 로 시작하는 설정은 모두 options.rpy 에 적어주는 것이 좋습니다. 프로젝트를 만들면 options.rpy 파일은 저절로 만들어집니다. 파일을 열어보면 게임에 대한 설정이 기본적으로 들어있는 것을 확인할 수 있습니다. 살펴보기 (6.13의 template 폴더에 들어있는 options.rpy 기준입니다. 처음 프로젝트를 만들었던 렌파이 버전에 따라 options.rpy 의 내용이 달라질 수 있습니다.) (앞에 #이 붙은 설정은 #을 지우면.. 더보기
이미지를 움직이거나 모양이 변경되도록 만들기 - ATL ATL은 Animation and Transform Language 의 약자입니다. 움직임이나 그림변환을 할 때 사용하는 언어라는 뜻으로, 렌파이에서만 이용할 수 있는 언어입니다. 이 ATL을 이용하면 그림을 마음에 드는 곳에 자유로이 놓거나, 자르거나, 돌리거나 할 수 있으며 그림이 움직이도록 만들 수도 있습니다. ATL 언어는 image, show, scene, transform 명령문을 블록으로 만들면 해당 블록에서 사용할 수 있습니다. 이렇게 만들어진 블록은 ATL 블록이라고 합니다. 즉, ATL 언어는 ATL 블록에서만 이용할 수 있습니다. image 문과 ATL init: image eileen happy: "eileen_happy.png" xalign 1.0 ypos 100 이전에는 imag.. 더보기
동영상 넣기 동영상 파일 준비하기렌파이에서 재생할 수 있는 동영상 형식은 다음과 같습니다. OGG Theora, MPEG 4, MPEG 2, MPEG 1 자기가 사용할 영상 파일이 어떤 형식인지 모른다면 동영상 재생 프로그램에서 확인하면 됩니다. KMP 의 경우 동영상 재생 중에 오른쪽 클릭 -> 파일 정보를 누르거나, 단축키 알트+J 를 누르면 그림처럼 확인할 수 있습니다. 곰플레이어에서는 Ctrl + F1, 마우스 오른쪽 클릭 -> 재생정보를 누르면 됩니다. 확인을 못하는 프로그램이거나 귀찮으면 그냥 렌파이에서 돌려보세요! 재생이 안 되면 변환하면 됩니다. 무료 동영상 변환 프로그램이 많으니 검색해서 적당한 것을 사용하세요. 참고로 유마일 인코더처럼 상업목적으로 이용할 수 없는 프로그램도 있을 수 있으니 반드시 .. 더보기