본문 바로가기

렌파이

6.13 업데이트 다운로드 페이지 링크 기존 유저는 렌파이 런처 실행 후 shift + U로 업데이트 할 수 있습니다. 주요사항 - 텍스트 디스플레이어블 코드 재작성 - 속도 향상 - DirectX 렌더링 추가. - 그래서 추후 다양한 화면효과도 만들 수 있대요 - 스크린 언어 기반 음악 감상실, CG갤러리 추가 - 근데 제 눈엔 여전히 복잡해보입니다. - 스타일 설정 시스템 - 새 테마 새로 추가된 문서가 좀 돼서 매뉴얼 번역은 시간이 걸리니 기다려주세요. 중요 이번 업데이트로 인해 대사에 변수 넣는 방식이 추가되었습니다. "%(name)s" 외에도 "[name]" 을 쓸 수 있는데, 기본 방식으로는 [name] 이 사용됩니다. 그래서 업뎃하고나서 스크립트 실행해보면 %(name)s 는 글자 그대로 나옵니다; 이미 적은.. 더보기
렌파이에서 위치를 나타내는 방법 렌파이에서 그림을 적극 활용하거나 게임을 꾸미려면 렌파이에서는 위치를 어떻게 나타내는지 알아야합니다. 위치를 나타내는 법은 사실 렌파이 튜토리얼 게임에 전부 나와있습니다. 그래서 이곳에는 튜토리얼 게임의 내용을 정리해서 적어두려고 합니다. 숫자 위치는 숫자로 나타내는데, 이 때 사용되는 숫자의 종류는 두 가지입니다. 하나는 정수, 다른 하나는 부동소수점수입니다. 정수는 아시다시피 -1, 0, 1처럼 부호와 0부터 9까지의 숫자로 이루어진 수입니다. 부동소수점수란 소수점이 있는 수를 가리킵니다. 그러니까 -123, 0, 50 은 정수고, 0.5, 0.234, -0.4는 부동소수점수입니다. 위치를 나타낼 때 정수를 적으면 그 수는 절대 좌표를 가리킵니다. 그러니까 100이라고 적으면 100 만큼의 위치를 가.. 더보기
6.13 선배포 시작 업데이트 기록 6.13 선배포 관련 토픽 대충 업데이트 내용을 요약하면 후리가나 사용 가능, 텍스트 클래스 개선, 일부 스타일 속성 추가, 문장 분리 알고리즘에 한국어 문장 분리 알고리즘 추가, 다이렉트 x 지원, 이미지 갤러리 추가, 음악 감상실 추가, 게임 대사 등 번역 관련 업데이트, 새로운 테마 추가, 새로운 액션 추가 정도 있네여. 현재 제작자가 사는 미국 동부에 허리케인 아이린(Irene)이 몰아닥쳐서 지역일대가 정전이라네요. 덕분에 개선 업데이트는 중단된 상태입니다. 자연 재해라도 일어나지 않는 한은 첫 번째 배포가 곧 시작된다고 써놨더니만 진짜로 자연 재해가 닥쳤다는 웃지 못할 상황입니다. 이것이 바로 자연 재해 면책 조항의 존재 이유. 이왕 이렇게 된 거 6.13 버전의 이름은 아이린으로.. 더보기
유저가 캐릭터 이름을 지을 수 있게 하려면 _ renpy.input renpy.input 플레이어에게 이름이라는 정보를 받으려면 특별한 함수를 써야 합니다. 렌파이에는 renpy.input 이라는 함수가 있는데, 이를 통해 사용자에게 키보드로 값을 입력받을 수 있습니다. init python: e = Character('Eileen') # 사용자의 이름을 저장할 변수, player_name player_name = 'FlaSh' # 캐릭터 이름을 변수에서 받으려면 Character에서 원래 이름을 적었던 부분에는 변수명을 적고 # dynamic = True 를 입력 p = Character('player_name', dynamic = True) label start: e "What's your name?" # renpy.input 으로 받은 글자를 player_name .. 더보기
컴퓨터에서 시간정보를 받아 렌파이에서 표시하기 init python: from time import localtime, strftime import time def clock(st, at): realTime = strftime("%X %p", localtime()) ui.frame() return ui.text('%s' %realTime, color = '#fff'), .5 init: image cl = DynamicDisplayable(clock) label start: scene bg default show cl at Position(xalign = 1.0, yalign =0) '방문 가능 시간이 저녁 9시라고 했다.' '어디 보자 지금은..' $ now = time.localtime() '[now.tm_hour]시 [now.tm_min]분인가' 더보기
대사 꾸미기 - Character init python: e = Character("아이린") envl = NVLCharacter(None) 캐릭터 이름 표시 기능 외에도 Character를 이용하면 클릭 대기 중에 보이는 커서 이미지를 바꾸거나, 대사 표시 속도를 캐릭터마다 달리한다거나, 캐릭터의 대사를 꾸밀 수 있습니다. 대사 넘기기 아이콘 넣기 대사 넘기기 아이콘이라는 건 위에서처럼 사용자의 입력(마우스 클릭 등)을 기다릴 때 대사창에 표시할 그림입니다. 이는 Character 에 다음처럼 ctc 를 이용하면 됩니다. init python: b = Character('백안시', ctc = "대사 넘기기 아이콘으로 사용할 디스플레이어블") # 예: baek = Character('백안시, ctc = "ctc_icon.png" * ct.. 더보기
트랜지션 중에도 대사창을 표시하기 대사창만 표시하는 경우 init python: _window = True 이렇게 해두면 화면전환효과가 일어날 때도 대사창은 표시됩니다. 다만 이 때는 대사같은 건 없이 빈 대사창만 덩그러니 떠 있게 됩니다. 대사도 함께 나타나도록 init python: def say_with_transition(chara, what, image, transition): chara((what+'{fast}'), interact=False) renpy.with_statement(None) renpy.show(image) renpy.transition(transition) chara((what+'{fast}'), interact=False) renpy.pause(.5) init python: baek = Character('.. 더보기
이 카테고리 외의 글을 이해하려면 파이썬 관련 지식이 필요합니다. 비주얼 노벨-텍스트 어드벤처 카테고리 외에 다른 카테고리에 분류된 글을 이해하려면 파이썬 배경 지식이 필요합니다. 파이썬 가이드는 위키독스의 점프 투 파이썬이나 왕초보를 위한 파이썬 책을 이용하세요. 위키독스: 점프 투 파이썬 바로가기 위키독스: 왕초보를 위한 파이썬 바로가기 저곳에 있는 글을 다 확인하고 그에 따른 능력을 습득한다면 물론 좋겠지만, 그게 안 된다면 최소한 04.입출력 - 함수 까지는 익히는 것이 좋습니다(왕초보를 위한 파이썬에서는 4. 자료 구조-4.4 사전 항목까지). 이 단계까지는 중학교 단계의 수학 지식과 타자 치는 능력만 있으면 무난히 소화 가능합니다. 렌파이가 비주얼 노벨 엔진치고는 자유도 높다지만 그것을 써먹으려면 써먹을 수 있는 능력이 필요한 것도 사실입니다. 그리고 변수 .. 더보기
대사 꾸미기 say 문렌파이에서 대사를 만들 때 다음처럼 문장을 적어 대사를 나타내도록 했습니다. label start: "아니 그보다도, 조금 전에 뭐라 그랬나, 날 보고 성 불구자가 된다구?" "심영" "고자가 됐다, 그 말인가?" s "고자라니, 아니, 내가 고자라니! 이게 무슨 소리야! 에잇 고자라니!!" 이렇게 렌파이에서는 대사를 표시할 때 쓰는 문장을 가리켜 say 문이라고 합니다. 다르게 말하자면 대사도 명령문의 일종이라고 할 수 있죠. say 문은 위처럼 3가지 형태가 있습니다. 하나는 대사만 적힌 문장①, 하나는 따옴표에 적힌 이름과 대사가 있는 문장②, 세 번째는 Character()를 연결한 특수한 문자와 대사가 있는 문장③입니다. 하지만 알고 보면 세 가지는 모두 같은 형태라고 할 수 있습니다... 더보기
그림으로 선택지를 만드는 법 # 아예 menu 문을 쓸 때마다 그림을 선택지로 만들 때 init: screen choice: window: style "menu_window" vbox: style "menu" for caption, action, chosen in items: if action: imagebutton idle caption hover (caption[:-4] + "_hover.png") action action else: text caption style "menu_caption" # 이 때는 선택지로 쓸 문장이 표시할 그림 파일이름이 되고 # 마우스가 그림 위에 올라가 있을 때는 그림파일이름+_hover.png 라는 이름을 가진 파일이 사용됨. # 그러므로 사용할 이미지 파일이 image.png 라면, image_.. 더보기
렌파이 게임의 아이콘을 바꾸기 렌파이 게임의 배포판을 만들면 게임 실행 파일의 아이콘은 아일린의 모습을 하고 있습니다. 윈도우7에서는 아이콘 크기를 256x256 사이즈까지 크게 볼 수 있는데, 이 경우 기존 아이콘은 상당히 볼품 없게 보입니다. 그리고 아일린도 좋기야 하지만, 되도록이면 자신이 만든 게임의 실행파일에는 그와 관련된 이미지로 아이콘을 사용해야 할 것입니다. 이 때 아이콘을 바꾸기 위해 리소스 해커같은 프로그램을 쓸 필요는 없습니다. 배포 전 간단한 작업만 해주면 배포판이 만들어질 때 자동으로 실행파일의 아이콘이 바뀌게 됩니다. 1. 사용할 아이콘을 이미지 편집 프로그램을 이용해 만듭니다. 되도록이면 이 페이지에 나와있는 권장 아이콘 크기에 맞춰서 아이콘을 만듭시다. 저는 256x256 사이즈로 그림을 만들어 png 파.. 더보기
에러메시지 창에 뜨는 유니코드 표시하기 보시면 아시겠지만 default.font 에 값을 설정해도 에러메시지 창에 나오는 유니코드 글자는 깨져나옵니다. 에러메시지에는 _default 스타일이 설정되어있기 때문입니다. 따라서 _default.font 값을 한글 출력이 가능한 폰트로 설정하면 유니코드를 제대로 확인할 수 있습니다. 그런데 들여쓰기 등이 잘못되는 등 구문 오류가 발생하면 오류메시지가 스크립트를 읽기도 전에 뜨는지라, _default.font 로 지정해준 값을 읽을 수가 없어 글자가 깨져서 출력됩니다. 이는 01errorhandling.rpy 파일을 만들어 다음 스크립트를 입력하면 해결할 수 있습니다. #01errorhandling.rpy 파일에 입력하세요. python early: style._default.font = "nanum.. 더보기
비주얼 노벨 만들기 렌파이로 비주얼 노벨을 만드는 스크립트는 텍스트 어드벤처와 크게 다르지 않습니다. 다만 아래 스크립트를 추가해야 합니다. 스크립트 init python: narrator = NVLCharacter(None) adv_menu = menu menu = nvl_menu narrator = NVLCharacter(None) narrator 는 말하는 사람이 정해지지 않은 대사, 그러니까 따옴표 적힌 문장 한 줄만 적힌 대사에 적용되는 캐릭터입니다. 고로 위 스크립트에서는 narrator 에 NVLCharacter 를 지정해 해설로 쓰이는 대사를 비주얼 노벨 타입으로 바꾸었습니다(novel 에서 모음만 빼면 NVL이니 기억하기 어렵지 않습니다) Character 안에 None 을 입력한 것은 대사 치는 사람의 이.. 더보기
배포판 만들기 게임 제작을 완료했다면, 혹은 지금까지 완성한 게임을 데모버전으로써 배포하고 싶다면 배포판을 만들어야 합니다. 배포판 만들기 런처를 실행하고 자신이 배포판을 작성하고자 하는 프로젝트가 선택되었는지 확인합니다. 그 후 Build Distributions 를 클릭합시다. options.rpy 파일에 배포판을 만들 때 필요한 정보가 스크립트로 적혀있지 않다면 위와 같은 화면이 뜹니다. 맨 처음 배포판을 만들 때는 배포판에 대한 정보가 아마 안 적혀있을 겁니다. No를 누르면 배포판을 만들지 않습니다. Yes를 눌러주고 다음 단계로 넘어갑시다. 배포판 설정 화면의 모습입니다. 각 메뉴에 대한 설명은 다음과 같습니다. - Directory Name 은 배포판이 압축된 압축파일 이름과, 프로젝트 폴더의 기본 이름이.. 더보기
텍스트 어드벤처 만들기 (3) 그림, 음악, 음성 추가하기 준비할 것 사용할 음악 파일과 그림 파일을 /game 폴더에 넣으면 준비 완료입니다. 그림 넣기 init: image bg mbcgame loox = "bg mbcgame loox.jpg" image fomos article = "fomos article.png" label start: scene bg mbcgame loox show fomos article 'MBC게임, 게임 포기하고 음악방송으로 전환하나 ' 우선 게임에서 사용할 그림을 init 블록에 등록합니다. 그 후에는 scene 문이나 show 문을 등록한 이미지 이름과 함께 적으면 화면에 그림을 추가할 수 있습니다. scene 문은 배경그림을 넣을 때, show 문은 캐릭터 그림을 불러올 때 사용하면 됩니다. image 문위에서 image 문.. 더보기