본문 바로가기

렌파이/GUI 꾸미기

대사 꾸미기 say 문렌파이에서 대사를 만들 때 다음처럼 문장을 적어 대사를 나타내도록 했습니다. label start: "아니 그보다도, 조금 전에 뭐라 그랬나, 날 보고 성 불구자가 된다구?" "심영" "고자가 됐다, 그 말인가?" s "고자라니, 아니, 내가 고자라니! 이게 무슨 소리야! 에잇 고자라니!!" 이렇게 렌파이에서는 대사를 표시할 때 쓰는 문장을 가리켜 say 문이라고 합니다. 다르게 말하자면 대사도 명령문의 일종이라고 할 수 있죠. say 문은 위처럼 3가지 형태가 있습니다. 하나는 대사만 적힌 문장①, 하나는 따옴표에 적힌 이름과 대사가 있는 문장②, 세 번째는 Character()를 연결한 특수한 문자와 대사가 있는 문장③입니다. 하지만 알고 보면 세 가지는 모두 같은 형태라고 할 수 있습니다... 더보기
렌파이 게임의 아이콘을 바꾸기 렌파이 게임의 배포판을 만들면 게임 실행 파일의 아이콘은 아일린의 모습을 하고 있습니다. 윈도우7에서는 아이콘 크기를 256x256 사이즈까지 크게 볼 수 있는데, 이 경우 기존 아이콘은 상당히 볼품 없게 보입니다. 그리고 아일린도 좋기야 하지만, 되도록이면 자신이 만든 게임의 실행파일에는 그와 관련된 이미지로 아이콘을 사용해야 할 것입니다. 이 때 아이콘을 바꾸기 위해 리소스 해커같은 프로그램을 쓸 필요는 없습니다. 배포 전 간단한 작업만 해주면 배포판이 만들어질 때 자동으로 실행파일의 아이콘이 바뀌게 됩니다. 1. 사용할 아이콘을 이미지 편집 프로그램을 이용해 만듭니다. 되도록이면 이 페이지에 나와있는 권장 아이콘 크기에 맞춰서 아이콘을 만듭시다. 저는 256x256 사이즈로 그림을 만들어 png 파.. 더보기
선택지에 그림을 더해서 선택지의 뉘앙스 나타내기 같은 말이라고 해도 어떻게 말하느냐에 따라 그 말의 의미가 상당히 달라집니다. 그래서 플레이어는 주인공이 자기 의도와 다른 말투로 얘기하는 걸 보며 당황해하는 경우가 왕왕 있습니다. 따라서 그 선택지가 어떤 뉘앙스인지 알려준다면 오해가 발생하는 걸 막을 수 있습니다. init: $ style.say_window.yalign = 0.0 $ feel = "-" screen icon: textbutton ('%s' %feel) xalign .5 yalign 1.0 minimum (100, 100) screen choice: vbox: xanchor 1.0 xpos 350 yalign 1.0 for caption, action, chosen in items[3:]: if action: button: action.. 더보기
드래그&드롭 사용법 - 드롭 이용하기 기본: - 드래그를 끌어서 또다른 드래그에 올려놓았을 때, 그러니까 드롭했을 때(또는 되었을 때) 실행할 함수만 만들자. 그 후 드래그에 함수를 적용하면 드래그&드롭으로 인한 상호작용이 발생하게 만들 수 있다. 예제: 아래의 스크립트는 RPG게임에서의 아이템 장착창을 염두에 두고 초단순하게 만들어 본 것이다. init python: attack = 0 def hand_equipped(drop, drags): global attack attack = attack + drags[0].drag_name init: screen drop: draggroup: drag: drag_name 10 child 'sword.png' draggable True droppable False ypos .5 drag: child.. 더보기
드래그&드롭 사용법 - 드래그할 수 있는 GUI 만들기 screen say: drag: drag_name "say" yalign 1.0 drag_handle (0, 0, 1.0, 30) xalign 0.5 window id "window": # 대사창은 게임 화면보다 작아야한다 xmaximum 600 has vbox if who: text who id "who" text what id "what" 위젯을 드래그할 수 있도록 만드려면 위젯을 drag의 하위에 두어야 합니다. 네..그게 끝입니다. 그냥 창을 이리저리 움직일 수 있게만 하는 정도는 예제만 보고도 간단히 만들 수 있으니 위에서 drag_handle이라는 것만 설명하겠습니다. drag_handle (x, y, 너비, 높이) 튜플 위젯을 드래그하려면 클릭되어야 하는 부분을 가르킵니다.. 그러니까 윈도우.. 더보기
스크린 언어 활용 1. 각 ui 함수에 상응하는 스크린 언어 명령문은 대개 ui.함수에서 ui. 를 뺀 것과 동일. # 주의 # ui 함수는 python 블록 안에, 스크린 언어 명령문은 # screen 블록 안에 입력해야함. $ ui.textbutton('글자', clicked = ui.returns(1) ) screen textbutton_test: textbutton '글자' action Return(1) # ui. 함수로 입력받은 값은 ui.interact() 에 저장되지만 # 스크린 언어 명령문의 Return()을 사용하면 그 값은 _return 변수에 저장된다. 대신 ui.adjustment 와 ui.layer 등 일부 ui 는 상응하는 명령문이 없으므로 파이썬 블록이나 파이썬 라인으로 적어줘야 한다. ui.c.. 더보기
버튼이 작동하는 영역을 네모가 아닌 다른 모양으로 만들기 라는 질문이 포럼에 올라왔길래 렌파이로는 그딴 거 안됩니다.. 라고 답변을 썼는데.. "그거 됨. focus_mask 속성을 써보셈." 이라는 댓글이 달렸다. 헐.......내가 저 부분도 다 번역했었는데 왜 난 몰랐지....분명 스타일과 스타일 속성은 새 문서 번역할 때 다 번역했는데...? 하고 보니까 새 문서에는 없는 내용이었다..--; 1. 기본적으로 imagebutton으로 버튼을 만들면 설사 사용한 이미지 파일이 투명 영역을 가진 네모나지 않은 이미지라고 해도 무조건 이미지의 최대 가로 x 세로 길이만큼의 사각형 영역을 클릭하면 이미지의 빈 부분을 클릭해도 동작하게 된다. 이태까지는 그러려니 하고 있었는데. 알고보니 그렇게 작동하는 이유가 있었다. 버튼이 취하는 focus_mask 속성이 기본.. 더보기
게임 내 메뉴 화면 꾸미기 1. 레이아웃 & 스타일 이용하기 각 메뉴 (게임 메뉴, 환경설정, 세이브 로드 화면, 프롬프트 - 안내창) 마다 지정된 레이아웃이 몇 가지 있다. 이 페이지를 확인해 보면 각 메뉴에 해당하는 레이아웃 종류가 다 나와있다. layout.grouped_main_menu () 라던지 layout.classic_main_menu () 라던지 하는 것들 원하는 레이아웃으로 설정하는 방법은 init - 10 python: 블록에 이런 코드들을 써넣는 것이다. init -10 python hide: layout.grouped_main_menu () 각 레이아웃 설명 밑에 나와있는 변수 variables 는 그 레이아웃에 관련된 것들을 설정할 때 사용하는 것이다. 보기 좋게 레이아웃을 설정했던 블록에 같이 써 주면 .. 더보기
Style을 이용하여 렌파이 텍스트와 버튼을 꾸미기 렌파이 게임의 모양을 자기 입맛대로 꾸미려면 반드시 스타일 기능을 이용해야 합니다. 스타일이 무엇인지는 스타일 조사기의 쓰임새부터 먼저 보면서 조금씩 설명드리겠습니다. 스타일 조사기 Style Inspector 1. 런처에서 예제 프로젝트를 만들던가 기존 프로젝트를 선택합니다. 프로젝트 폴더 안에 screens.rpy, screens.rpyc 파일이 있는 지 확인하시고 둘 다 다른 폴더로 옮겨둡니다. 그리고 options.rpy에서 config.developer = True 로 설정합니다. 이제 게임을 실행합니다. 2. 주 메뉴가 뜨면 아무것도 없는 바탕에 커서를 갖다대고 Shift + I 를 누릅니다. * 스타일 조사기가 있는 상태에서 또 한 번 Shift + I 를 누르면 스타일 조사기의 스타일에 대.. 더보기