Ren'Py

(렌파이에서 넘어옴)
400px

Ren'Py. 렌피가 아니라 '렌파이'다. 공식 홈페이지.

1 소개

비주얼 노벨 제작 툴. 개발자는 일명 파이톰(PyTom)으로 불리는 톰 로타멜(Tom Rothamel). 렌파이라는 이름은 파이썬 + 일본어로 연애(Renai)의 합성어다. 이때문에 기초적인 파이썬 문법을 사용하지만 고급 수준까지 필요한 것은 아니다. 단순히 스페이스바만 누르면 되는 간단한 비주얼 노벨 정도는 시나리오와 그림(가장 중요!)만 있다면 금방 만들 수 있는 수준. 하지만 여기서 더 발전하려면 물론 렌파이 언어에 대해 이해가 필요하다. 조금만 손보면 어드벤처류의 게임이나 프린세스 메이커와 같은 육성 시뮬레이션 게임도 만들 수 있다.

2 장점

텍스트 기반의 어드벤처 스크립트 문법을 만들기 위해서는 기획자나 게임 디자이너를 위한 스크립트 언어를 하나 마련해야 되는데, 프로그래머 입장에서는 바닥부터 이미지 처리와 컴파일러까지 다 만들기에는 너무나 거대한 프로젝트가 되버리고, 유니티나 코코스 위에 만들기에는 그냥 직접 프로그래머가 하드코딩을 하는게 낫거나, 아무리 잘만들어도 렌파이 스크립트 수준의 확장성을 가진 언어를 구현하기 힘들다.

렌파이 스크립트의 환경은 프로그래머들을 위한 언어와 기획자용 단순 스크립트 언어 사이에서 적절한 중간지대에 걸쳐 있는데, 텍스트 어드벤처 툴 중에서는 가장 프로그래머적 사상에 가까운 형태를 취하고 있다.

사실 아래에 언급된 이 툴의 장점들 또한 이러한 특성에서 모두 파생된것.

2.1 오픈소스

무료로 사용할 수 있으며, MIT 라이센스 기반이라 별달리 제약이 없어서 이걸로 만든 게임을 영리적 목적으로 판매할 수도 있다.
이미 수많은 동인제작팀에서 렌파이를 사용한 게임을 만들고 배포하고 있으니...

또한 그럴일은 거의 없겠지만, 원한다면 깃허브에 공개되어 있는 프로젝트 소스 코드를 직접 수정하여 원하는 형태로 렌파이 개발도구를 마개조할 수도 있다.

오픈소스로 오랜기간 커뮤니티의 기여로 개발된 툴이기에 안전성도 매우 뛰어나다.

2.2 멀티 플랫폼 지원

또한 제작 환경과 실행 환경으로 윈도우, 리눅스, 매킨토시 등 멀티 플랫폼을 지원하고 있으며 내장툴인 RAPT와 Renios를 통해 안드로이드iOS 포팅도 가능하다. iOS는 Xcode 프로젝트로 출력하기 때문에 맥 컴퓨터가 필요하며, 앱스토어 출시에 개발자 라이센스가 필요하다. [1]

또한 모바일의 경우, 각 앱스토어 (애플, 구글, 아마존) 에 대한 인앱 결제 모듈도 쉽고 충실하게 구현되어 있다.

2.3 직관적인 문법

스크립트 문법은 파이썬에서 영감을 받아 다른 비주얼 노벨 엔진들보다 코드가 직관적이고 간결하다.
다만 스크립트 언어 자체가 파이썬인 것은 아니며, 스크립트 도중에 블록을 열어 빌트인 파이썬 함수나, 직접 짠 파이썬 함수를 호출할수 있다.

또한 자체적으로 GUI 작성을 하기 위한 스크린 언어라는 것이 존재하는데, GUI 요소들 사이의 계층구조를 들여쓰기를 통해 직관적으로 짤 수 있어 편리하다.

특히 들여쓰기(4 spaces)를 통해 간단하게 서브 블록을 만들 수 있는데, 다른 비주얼 노벨 엔진에서 계층을 표현하기 위해 괄호나 태그를 남발하는 걸 생각하면 무척이나 편한편.

스토리 블록 간의 콜(서브루틴)과 점프의 차이를 명확하게 선언할 수 있는 등, 직관적인 면에서는 가히 최강이라 볼 수 있다. 특히 문법이 일관적이기 때문에, 도큐먼트를 안봐도 명령어들을 어떻게 써야할지 헷갈리지 않는 것도 장점.

특히 렌파이를 제외한 다른 스크립트 엔진이나 유니티 확장 툴 사이의 가장 큰 차이는, 다른 비노베 툴들은 마크업 언어 특성을 물려받은게 대부분이라 태그가 남발되어 가독성이 좋지 않고, 언어 문법에 일관성이 없어서 확장성도 떨어지고 버그도 많이 발생한다. 하지만 렌파이는 파이썬 문법을 계승했기에 각종 명령어들을 조합하는 방향성이 통일되어 있다.

2.4 자유도

간결한 문법 덕분에 오히려 태그로 일일이 커맨드를 미리 지정해놓은 다른 비주얼 노벨 툴과 달리, 그냥 원하는 기능은 만들면 된다.
덕분에 일반적인 키네틱 노블은 물론, 육성게임이나 전략 시뮬레이션도 만들 수 있다.

사실 말이 비주얼 노벨 툴이지, 사실상 2D 이미지에 텍스트 기반 게임이라면 어떠한 장르의 게임도 만들 수 있는 자유도를 자랑한다.

2.5 체계적인 도큐먼트

체계적인인 도큐먼트가 부실한 다른 비주얼 노벨 엔진들과 달리, 사용되는 거의 대부분의 명령어와 함수 등에 대해 체계적이고 자세한 문서가 있는 것도 강점.

다른 비노베 툴들의 경우, 커뮤니티에 직접 물어보지 않으면 알수 없는 명령어들이 많은데, 렌파이의 경우 어떤 처리를 하고 싶은데, 그런 명령어가 존재하는지 모르겠다 싶으면 도큐먼트에 몇가지 키워드만 조합해서 검색하면 보통 이미 존재하는 명령어가 있어 바로 찾을 수 있다.

2.6 엄청난 레퍼런스와 두터운 커뮤니티

워낙 오랫동안 폭넓게 사용되었기에, 공식 커뮤니티인 Lemma Soft Forum 에서 렌파이 개발에 대한 정보 교환이 매우 활발한 편이다.
모르는 것에 대해 물어보면 못해도 하루안에 누가 정답을 알려줄 것이며, 개발자인 PyTom도 시간을 내서 꼬박꼬박 답변을 매일 달아주는 편.

2.7 파이썬

직접 파이썬으로 작성한 기능들을 파이썬 파일(py) 을 프로젝트 폴더에 첨부하여 사용할 수 있다. 다만 렌파이에 내장된 파이썬은 여러 라이브러리가 빠진 경량화 버전이기 때문에 numpy 등을 사용하여 복잡한 파이썬 코드를 작성하긴 힘들다. 그래도 서버 통신 등은 가볍게 구현할 수 있다.

사용하고자 하는 파이썬 라이브러리를 폴더 채로 프로젝트 내에 추가할 수는 있다.
다만 의존 라이브러리가 프로젝트 폴더와 렌파이의 경량 파이썬에 존재해야 하며, 순수 파이썬으로 작성된 모듈만 사용가능하다.
C언어 기반의 파이썬 모듈은 사용할 수 없다. 이를 하려면 직접 렌파이 소스코드를 직접 수정하여 빌드하는 수 밖에 없다.

2.8 GUI 작성 환경

렌파이의 UI는 간결한 코드를 통해 동적 생성도 가능하다. UI를 붙박이 이미지로 일일이 만들어도 되지만, 작은 사이즈의 기준 이미지 몇개만 지정하여 코드를 통해 다양한 형태의 UI로 변형 왜곡할수 도 있고, 순수 코드 만으로도 다양한 색과 형태의 UI를 만들수 있다. 파이썬 코드를 통해 사용자 해상도 환경에 따라 동적으로 조절해줄수도 있다. 많은 경우 GUI 프로그램을 작성할때 IDE에 내장된 어설픈 그래픽 에디터로 배치하는 것 보다 코드로 작성하는게 직관성에선 더 나으며, 렌파이의 UI 전용 언어인 스크린 언어는 이점을 충실히 만족시키고 있다.

문제는 6.99.10 버전까지 기본 제공되었던 UI 템플릿이 너무 구식이었던 것. 몇년째 디자인이 거의 바뀌지 않았으며, 저해상도 데스크탑 모니터를 기준으로 제작되었는지라 모바일 환경에서 보기 매우 흉했다. 직접 UI를 디자인하고 UI 코드를 작성하는데 익숙한 사람이야 기본 제공되는 템플릿을 그대로 사용할 리가 없으니 별로 문제가 되지 않았는데, UI 코드를 어떻게 처음부터 작성해야 할지 감을 잡기 어려운 입문자들에게는 그대로 쓰기엔 너무나 디자인이 구렸다.

하지만 모바일 디바이스 환경에 맞는 UI를 적극 지원하겠다고 명시한 렌파이 6.99.11 정식 릴리즈와 함께 모던 플랫 디자인과 좀더 객체지향적인 UI코드가 기본 첨부 템플릿으로 적극 도입되었다. 이제는 기본 생성되는 UI를 거의 변경없이 출시해도 될 정도로 세련되게 변화하였고, 파이썬 코드를 사용할 필요없이 스크린 언어 단계에서 사용자 디바이스의 종류 (데스크탑, 핸드폰, 타블렛 등)에 따른 화면 크기를 감지하고 디바이스 별로 UI의 속성을 다르게 지정할 수 있어 모바일 환경을 위한 UI를 작성하기 매우 편해졌다.

2.9 지속적인 지원과 개선

렌파이는 출시 이후 수년 동안 계속해서 PyTom 주도의 공개 프로젝트로 발전해왔고, 지금도 계속해서 커뮤니티의 피드백을 받아 지속적으로 업데이트가 되고 있다.

이는 다른 비주얼 노벨 엔진이 계속 나와도 렌파이가 계속 주류에서 벗어나지 못하는 이유인데, 아무래도 비주얼 노벨 제작툴이란 범용적으로 사용되는 개발툴이 아니기에 툴 개발사나 개발자가 지속적인 개선과 사후지원을 해주기 어렵다. 해당 비노베 툴들이 도큐먼트가 부실한 것도 그러한 이유이다.

하지만 렌파이는 커뮤니티를 기반으로 PyTom의 주도로 지속적으로 업데이트하고 있으며, 상당이 체계적으로 배포되고 있다. 프리 릴리즈와 알파, 베타를 칼같이 구분하며 배포하고, 도큐먼트도 상세하게 그때 그떄 업로드되며, 커뮤니티에서는 활발하게 질문과 답이 오가는 등, 범용적으로 사용되는 상업엔진에 필적하는 지원 환경이 마련되어 있다.

그럴일은 없겠지만 불운한 사건으로 PyTom이 렌파이를 더이상 개발할 수 없게 되어도, 이미 널리 사용되고 있는 이 오픈소스 프로젝트를 다른 사람이 가만이 두지 않을 것이다.

사실 여태까지 다른 비노베 엔진들의 문제점이 엔진 그 자체에 있다보기 보다는, 제작자들이 시간이나 금전적인 이유로 지속적인 개선을 해주기도 힘들었으며, 커뮤니티가 아니라 개발사나 개발자 개인에게 의존한 형태기 때문에 빠른 버그 수정이나 기능 개선, 체계적인 문서 등을 기대하기 힘들었다. 하지만 렌파이는 규모 있는 커뮤니티의 기여를 받고 있기 때문에, 툴 제작자 개인의 사정으로 엔진의 지속적인 업데이트가 죽어버릴 염려가 거의 없다.

3 단점

3.1 한글 기반 커뮤니티 부재

엄청난 양의 레퍼런스와 커뮤니티가 활성화되어있지만, 한국어로는 정보를 찾기 힘들며, 찾아도 예전 정보인 경우가 많다.

한국어로 검색하는 것 보다 차라리 렌파이로 직접 게임을 만든 사람들을 찾아가 물어보는게 나을 정도.

3.2 성능

PC에서는 별 문제가 없다. 어짜피 텍스트 어드벤처 게임에서 컴퓨터에 큰 연산능력을 요구하는 것도 아니다.

문제는 모바일.

파이썬 기반의 특성상, 모바일 OS위에 파이썬 인터프리터를 거쳐 렌파이를 얹은 형식이라 상당이 느리다. 최적화가 상당이 진행되었지만, 근본적으로 파이썬을 이용하는 특성상 렌파이로 만든 모바일 비노베는 다른 모바일 비주얼 노벨보다 무거운 편이다. 특히 PC에서 정상적으로 동장하는 일부 기능들은 모바일 판에서는 지연시간이 너무 길어 자체적으로 렌파이에서 무한 루프로 판정을 때려버리고 버그를 내는 경우도 있을 정도.

다만 게임을 못 돌릴 정도는 아니고, 레거시 기기들에서 잔렉이 많은 편이다.

3.3 보안

빌드시 옵션에 따라서, 이미지파일이나 (컴파일된)코드 파일들을 전용 확장자로 묶어서 외부로 노출시키지 못하게 할 수 있다. 문제는 이 파일을 코드 몇줄로 해체하는 간단한 프로그램이 인터넷에 이미 나도는 것.

코드 같은 경우는 원본 코드가 담긴 rpy가 아니라 미리 컴파일한 rpyc를 빌드에 넣기 때문에 rpy를 넣도록 옵션을 방치하지 않는 이상 코드가 그대로 노출될 일은 없다. 물론 역컴파일을 통해 원본 코드를 추측할 수 있겠지만, 파이썬에 대한 역컴파일이 아니라 렌파이 코드에 대한 역컴파일 이기에 기존 파이썬 도구를 그대로 사용할 순 없다.

사실 코드와 기타 소스 파일에 대한 보안을 철저히 구현하는 수준을 원한다면 비노베 툴이 아니라 직접 좀더 하드웨어에 가까운 게임 엔진을 써야 하는게 맞다. 비주얼 노벨이 그렇게 엄한 보안을 요구하지 않기 때문에 큰 문제는 아니다.

다른 문제로는 DRM 기능이 포함되어 있지 않다. 공식적으로 지원하지 않는다고 못박았다.
즉 렌파이 스크립트나 렌파이의 경량화된 파이썬을 가지고 DRM을 구현해야 하는데, 수준 높은 DRM을 구현하는게 불가능 하다.

물론 덴더라이언의 경우 처럼, 로그인 방식을 사용하거나, 스팀 서버와의 통신을 사용할 순 있겠다. 하지만 애초에 비주얼 노벨 툴이라는 것이 로그인을 요구하는 종류의 게임과는 거리가 멀기에 덴더라이언의 방식은 일반적으로는 적용하기 힘든 편.

또한 안드로이드의 경우, 인앱결제 명령어 등 소수의 명령어를 제외하면, 렌파이 스크립트에서 직접 안드로이드 운영체제의 API들을 액세스할 방법이 전혀 없기 때문에 DRM 만들 방법이 없다. 렌파이 스크립트를 사용하지 않고, 렌파이 RAPT의 임시파일들을 모아 직접 안드로이드 스튜디오 프로젝트를 생성후, 실행 단계에서 안드로이드 네이티브로 직접 앱스토어 연동 DRM을 짜는 방법이 있을순 있겠지만, 안드로이드 개발에 대한 지식을 요구한다.

4 기타

2012년에 화제가 됐던 아날로그 역시 렌파이 기반으로 제작되어 스팀에서 판매되었으며 멀티 플랫폼을 지원하여 윈도우와 맥 둘 다 실행이 가능하다. 물론 이론적으로는 리눅스에서도 실행할 수 있다.

주로 일본 인디게임을 영어 번역하여 퍼블리싱하는 세카이 프로젝트에서 렌파이 엔진을 PS VITA용으로도 포팅하고 있다고 한다... 의 정체는 RenPy에서 Unity로 자동으로 포팅하는 유니티 확장툴로 밝혀졌다. 세카이 프로젝트에서 RenPy를 PS4용으로 만든다는 말이 있었는데, 이것을 가리키던 것. 유니티는 본래 콘솔과 모바일을 모두 지원하는 개발엔진이니 렌파이를 유니티로 포팅하면 자연스럽게 멀티플랫폼이 된다는 발상.

다만 세카이 프로젝트 외부 개발자들한테는 공개하지 않는다고 한다.


한국어 페이지가 있긴 하지만 양은 실로 빈약하다. 인터페이스 한글화는 6.9.2 버전(2009년 6월)에 와서야 이뤄졌고, 당시 국내에서 렌파이를 알던 사람은 정말 얼마 없었기 때문.(포럼 기준으로 고작 2명이었다 카더라.) 그나마 강의 블로그는 준비되어 있으니 그것을 봐도 좋다. 또한 튜토리얼 게임도 번역이 되어있다.

4.1 렌파이로 제작된 게임들

한국어로 된 것은 특별히 ☆ 표시한다.
나머지는 이곳에서 확인 가능하고 원한다면 목록에 추가 요청할 수도 있다.

4.2 관련 항목

  1. 이점은 유니티 등 다른 게임 엔진들을 통한 iOS 게임 제작에 있어서도 동일하다.