본문 바로가기

렌파이/게임 제작하기

렌파이로 육성 시뮬레이션 게임 만들기 (1) 기초 스크립트 작성

준비물

- 렌파이
- DSE (여기서 다운로드 가능)

dse2-20080829.zip

(혹시라도 자료를 구할 수 없을 경우를 대비해 이곳에도 업로드합니다.)

필요한 파일은 event_dispatcher.rpy / events.rpy 뿐입니다. 그것만 프로젝트/game 폴더 안에 넣으세요. events.rpy 파일은 예제가 들어있는 파일이니 확인 한 번 하면 나중에 지워도 됩니다.

- 게임에 쓸 그림
원하시는 분에 한해서. 전 귀찮아서 글로만 작성하렵니다
- 지식
블로그 우측의 비주얼노벨-텍스트어드벤처 카테고리 글 전부 / 모양내기 - Character의 이용, 대사꾸미기 / 고급 기능 카테고리의 스크린 언어 글 전부에 관해서는 반드시 알아야 합니다.


예제 게임 기초 설정

제목: 프로게이머 키우기
게임 목적: 1주일 동안 빡세게 연습해서 스타크래프트 메이저 대회 결승전에서 우승하기!
게임 방식: 프린세스 메이커와 비슷한 방식. 스케쥴은 하루 단위로 짠다.

재미로 편하게 설정한 것들이니 위의 내용이 안 내키시면 다른 거로 바꾸셔도 됩니다.
오타쿠 키우기라던가.. 뭐 어차피 강의에서 중요한 건 DSE 에 대한 설명이랑 스크립트 구조 정도니까여.


세부사항 정하기

그럼, 아래는 게임에 대한 세부(라고 부르기는 약간 창피한..) 설정입니다.
강의는 아래에 적힌 내용에 따라서 작성되니 쭉 한번 훑어보세요.



그러니까 이 게임은 하루에 3 개의 스케쥴을 실행하며, 이것이 일곱 번 반복되는 동안 얻은 스탯에 따라서 엔딩이 갈라지게 됩니다. 게임 흐름을 알아보기 쉽게 그려보면 다음과 같습니다.



많은 부분이 생략되긴 했지만 게임 진행은 대략 이런 식으로 됩니다. 이 순서도에 따라 스크립트를 작성해봅시다. 첨부터 완벽하게 쓰려고 하지 마시고 그냥 생각을 정리하는 차원에서 적어보기로 합니다.

스크립트 대충 적기

게임에서 쓰일 변수로는 우선 스탯에 관한 것들이 있을 겁니다. 적당한 영문명으로 알아보기 쉽게 적어줍시다.

init python:
    stress = mental = judge = react = 0
    hp = 20

그리고 게임 시작 버튼을 누르면 실행될 스타트 라벨을 적어놓습니다.

label start:

그 다음은 플레이어가 스케쥴을 설정할 때 실행될 라벨을 적습니다.

label schedule_set:

이제 schedule_set 라벨에서 설정한 스케쥴이 실행될 라벨을 적습니다. 하루 중 오전/자유/오후 시간에 각각 스케쥴을 설정했으니 이를 실행할 라벨도 각기 따로 만들어줍시다.

label morning:
label free:
label afternoon:

오후 스케쥴까지 실행했으면 7일이 모두 지났는지 확인해야하며, 7일이 경과했다면 엔딩으로, 아니라면 다시 스케쥴 설정 화면으로 돌아가야 합니다. if 문으로 간단하게 처리합시다.

if day == 7:
    jump ending
else:
    jump schedule_set

이렇게 적고 보니 init 블록에 day 변수도 넣어야 할 것 같네요. 초기값은 첫째날을 뜻하는 1로 적어줍니다.

day = 1

다음은 if 문에서 썼던 ending 라벨을 적도록 합시다. 이 라벨에서는 조건에 따라 엔딩이 굿/배드로 갈려야 합니다. 이것도 if문으로 해결해줍시다.

label ending:
    if 굳엔딩 조건 == True :
        # 굳 엔딩 내용
    else:
        # 배드 엔딩 내용

예제 게임은 내용이 짧아서 그냥 ending 라벨에 모든 엔딩을 적습니다만, 엔딩에서 표시할 내용이 길다면 여기서도 각각 다른 라벨에 적어주는게 좋을 겁니다.

여기까지 적었으면 스크립트가 다음과 같은 식으로 적혀있을 겁니다.



약소하게나마 적힌 스크립트를 보니 벌써 반은 완성된 기분이네요! 물론 기분만 그런 거고 실제론 실행조차 안 됩니다. 다음 글에선 dse & 스크린 언어를 통해 게임을 좀 더 완성에 가깝게 만들어보도록 하겠습니다.