본문 바로가기

렌파이/게임 제작하기

렌파이로 육성 시뮬레이션 게임 만들기 (4) DSE 를 이용해 이벤트 만들기 (2) event.어쩌구() 함수 이용하기 이제 특별한 형태로 & 특별한 조건에서 발생하는 이벤트를 만들어보도록 합시다. event.once() * 스트레스가 일정 수치에 도달하면, 좀 쉬어가면서 하라는 식의 안내 이벤트가 튀어나오도록 해봅시다. * 이 이벤트는 한 번만 나타나면 충분할 겁니다. * 일단은 스트레스가 5 이상이 되었을 때 이벤트가 등장해야겠고.. 이벤트가 한 번만 나타나도록 하는 조건은.. * event.once() 함수를 사용하면 됩니다. event.once()는 항상 참값을 반환하다가, event.once()가 적힌 이벤트가 실행되고 나면 그 이벤트에 적인 event.once() 는 거짓값을 반환하기 때문에, 한 번만 나타나면 이벤트의 조건으로 사용하면 좋습니다. init: event('re.. 더보기
렌파이로 육성 시뮬레이션 게임 만들기 (3) DSE 를 이용해 이벤트 만들기 (1) 이제 연습 게임에 이벤트를 채워봅시다. event_dispatcher.rpy 를 본격적으로 사용할 시간입니다. 그 전에 DSE 엔진의 events.rpy 파일을 확인해서, 이벤트는 어떤 식으로 스크립트를 써야 만들어지는지 살펴봅시다. #events.rpy 의 스크립트 일부 init: $ event("class", "act == 'class'", event.only(), priority=200) $ event("class_bad", "act == 'class'", priority=210) $ event("cut1", "act == 'cut'", event.choose_one('cut'), priority=200) $ event("cut2", "act == 'cut'", event.choose_one('cu.. 더보기
렌파이로 육성 시뮬레이션 게임 만들기 (2) 스크린 언어로 스케쥴 화면 만들기 필요한 게 뭘까 구조는 잡았으니 이제 다음으로 필요한 게 뭔지 생각해봅시다. 렌파이의 기본 UI를 (귀찮으므로) 그냥 사용하기로 했다 치면, 그 외에 필요한 건 아래와 같습니다. - 스탯을 표시하는 화면 - 플레이어가 스케쥴을 정할 수있게 해주는 화면 - 플레이어가 정한 스케쥴을 확인할 수 있게 해주는 화면 스탯창 일단 스탯창은 쉽게 만들 수 있습니다. 스크린 언어를 이용해서 만들어보도록 합시다. init: screen stat: # 스탯창 frame: align (0.0 , 0.7) # 스탯창의 위치 grid 4 2: # text 정렬용 박스. 4열 2행짜리 정렬용 박스를 만든다. text '정신력' text '판단력' text '민첩성' text '스트레스' text str(mental) # 해당 변.. 더보기
렌파이로 육성 시뮬레이션 게임 만들기 (1) 기초 스크립트 작성 준비물 - 렌파이 - DSE (여기서 다운로드 가능) (혹시라도 자료를 구할 수 없을 경우를 대비해 이곳에도 업로드합니다.) 필요한 파일은 event_dispatcher.rpy / events.rpy 뿐입니다. 그것만 프로젝트/game 폴더 안에 넣으세요. events.rpy 파일은 예제가 들어있는 파일이니 확인 한 번 하면 나중에 지워도 됩니다. - 게임에 쓸 그림 원하시는 분에 한해서. 전 귀찮아서 글로만 작성하렵니다 - 지식 블로그 우측의 비주얼노벨-텍스트어드벤처 카테고리 글 전부 / 모양내기 - Character의 이용, 대사꾸미기 / 고급 기능 카테고리의 스크린 언어 글 전부에 관해서는 반드시 알아야 합니다. 예제 게임 기초 설정 제목: 프로게이머 키우기 게임 목적: 1주일 동안 빡세게 연습해서.. 더보기
동영상 넣기 동영상 파일 준비하기렌파이에서 재생할 수 있는 동영상 형식은 다음과 같습니다. OGG Theora, MPEG 4, MPEG 2, MPEG 1 자기가 사용할 영상 파일이 어떤 형식인지 모른다면 동영상 재생 프로그램에서 확인하면 됩니다. KMP 의 경우 동영상 재생 중에 오른쪽 클릭 -> 파일 정보를 누르거나, 단축키 알트+J 를 누르면 그림처럼 확인할 수 있습니다. 곰플레이어에서는 Ctrl + F1, 마우스 오른쪽 클릭 -> 재생정보를 누르면 됩니다. 확인을 못하는 프로그램이거나 귀찮으면 그냥 렌파이에서 돌려보세요! 재생이 안 되면 변환하면 됩니다. 무료 동영상 변환 프로그램이 많으니 검색해서 적당한 것을 사용하세요. 참고로 유마일 인코더처럼 상업목적으로 이용할 수 없는 프로그램도 있을 수 있으니 반드시 .. 더보기
유저가 캐릭터 이름을 지을 수 있게 하려면 _ 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 .. 더보기
이 카테고리 외의 글을 이해하려면 파이썬 관련 지식이 필요합니다. 비주얼 노벨-텍스트 어드벤처 카테고리 외에 다른 카테고리에 분류된 글을 이해하려면 파이썬 배경 지식이 필요합니다. 파이썬 가이드는 위키독스의 점프 투 파이썬이나 왕초보를 위한 파이썬 책을 이용하세요. 위키독스: 점프 투 파이썬 바로가기 위키독스: 왕초보를 위한 파이썬 바로가기 저곳에 있는 글을 다 확인하고 그에 따른 능력을 습득한다면 물론 좋겠지만, 그게 안 된다면 최소한 04.입출력 - 함수 까지는 익히는 것이 좋습니다(왕초보를 위한 파이썬에서는 4. 자료 구조-4.4 사전 항목까지). 이 단계까지는 중학교 단계의 수학 지식과 타자 치는 능력만 있으면 무난히 소화 가능합니다. 렌파이가 비주얼 노벨 엔진치고는 자유도 높다지만 그것을 써먹으려면 써먹을 수 있는 능력이 필요한 것도 사실입니다. 그리고 변수 .. 더보기
에러메시지 창에 뜨는 유니코드 표시하기 보시면 아시겠지만 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 문.. 더보기
텍스트 어드벤처 만들기 (2) 선택지와 분기 만들기 선택지 만들기menu 문선택지를 만들 때는 menu: 를 사용하면 됩니다. menu 명령문 다음 줄에는 선택지로 표시할 문장을 입력하고, 그 문장에 콜론을 입력해서 다음 줄에 내용을 적으면, 그 선택지가 선택되었을 때 취할 행동을 결정할 수 있습니다. init: define b = Character("백안시") label start: b "어떤 음악을 들을까." menu: "푸 파이터즈의 디즈 데이즈": "One of these days, the ground will drop out from beneath your feet." "One of these days, your heart will stop and play it's final beat." "래드윔프스의 덕아웃": "母の腹を裂いてまで 出てきたこの娑.. 더보기
텍스트 어드벤처 만들기 (1) 대사 입력하기 대사 입력하기 한글 출력이 제대로 된다면 이제 렌파이로 게임을 만들어봅시다. 렌파이 런처를 실행하고 Create New Project 를 선택해 새 프로젝트를 만듭시다. 제대로 만들어졌다면 런처 윗 부분에 방금 만든 프로젝트 이름이 적히게 됩니다. 확인하시고 Edit Script 를 선택합시다. 스크립트 에디터가 실행되면 script.rpy 파일 내용을 확인할 수 있습니다. 안에 영어로 뭐라 적힌 내용은 전부 지우고 첫 줄에 다음과 같이 적습니다. label start: label start 는 게임이 시작될 부분을 가리키는 명령어 같은 것입니다. 적었다면 엔터 키를 누르고 인용부호를 써서 아무 말이나 입력해봅시다. 이 때 쓰는 인용부호는 따옴표이던 홑따옴표이던 차이는 없습니다. 물론 같은 인용부호를 써.. 더보기
비주얼 노벨 제작 툴, 렌파이 공식 홈페이지: http://www.renpy.org/ 렌파이는 파이썬/파이게임 기반으로 만들어진 비주얼 노벨 엔진으로 스토리 중심의 게임을 만드는데 유용한 툴입니다. 즉, 비주얼 노벨 외에도 텍스트 어드벤처, 육성 시뮬레이션을 만드는데 적합한 엔진이라고 할 수 있습니다. 크로스플랫폼을 지원하는 엔진으로 맥, 리눅스, 윈도우즈, 안드로이드 용으로도 배포판을 만들 수 있습니다. 또한 오픈 소스 프로그램이라 필요에 따라 직접 렌파이 자체를 수정할 수도 있습니다. 파이썬 프로그래밍 언어의 장점을 그대로 물려받아 스크립트 언어도 작성이 꽤 간단한 편이고 비주얼 노벨등에 필요한 메뉴나 세이브/로드/스크린샷/환경설정 기능을 기본으로 제공합니다. 또한 게임 화면 디자인을 자유롭게 꾸밀 수 있어 퀄리티 높은 상용게임을.. 더보기