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

 

준비물

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

dse2-20080829.zip dse2-20080829.zip

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

필요한 파일은 event_dispatcher.rpy / events.rpy 뿐입니다. 그것만 프로젝트/game 폴더 안에 넣으세요. events.rpy 파일은 예제가 들어있는 파일이니 확인 한 번 하면 나중에 지워도 됩니다.
 
- 게임에 쓸 그림
원하시는 분에 한해서. 전 귀찮아서 글로만 작성하렵니다
- 지식
블로그 우측의 비주얼노벨-텍스트어드벤처 카테고리 글 전부 / 모양내기 - Character의 이용, 대사꾸미기 / 고급 기능 카테고리의 스크린 언어 글 전부에 관해서는 반드시 알아야 합니다.

예제 게임 기초 설정

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

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

 

세부사항 정하기

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

- 게임 진행 기간
7일
(토요일부터 시작, 그 다음 주 토요일이 결승전-엔딩 분기)
(토, 일, 월, 화, 수, 목, 금 )

- 스케쥴
종류: 휴식. 연습. 전략 구상. 마인드 컨트롤.
기간: 오전 연습시간,  자유시간, 오후 연습시간

휴식: 스트레스 4 감소, 정신력 1 증가,
연습: 상황 판단력 1 증가, 반응 속도 3 증가, 스트레스 3 증가.
전략 구상: 상황 판단력 2 증가, 정신력 1 증가, 스트레스 2 증가
마인드 컨트롤: 정신력 2 증가,

- 스탯
스트레스 - 일정 수치 이상이 되면 병 상태가 된다.
정신력 - 말 그대로. 불굴의 의지, 기.
상황판단력 - 수치가 높을 수록 상황판단이 정확하다
민첩성 - 수치가 높을 수록 판단을 수행하는 속도가 증가한다
체력 - 값은 20으로 고정

* 체력 제외한 모든 스탯의 초기값은 0
* 스트레스가 (체력 + (정신력/2)) / 2 보다 크면 다음 날 병 상태 판정. 하루는 무조건 휴식.
* 스탯 옆에 적힌 부연 설명에 따라 특정 스탯의 수치가 높을 경우 엔딩 대사에 변화를 준다.

- 엔딩
* 우승 / 준우승
* 상황 판단력과 민첩성, 정신력 스탯이 10 이상이고 (정신력 + 상황판단력 + 민첩성) - 스트레스가 25 보다 크면 우승.
* 만일 병 상태로 결승전에 출전하면 무조건 준우승 엔딩.
* 플레이어 이름이 홍진호라면 준우승 엔딩밖에 못 본다.

- 기타
* 연습용 예제게임이다보니 필요한 스탯은 최소화했습니다.
* 스탯에 관한 모든 임시로 정한 것으로 추후 변동해야할듯요.



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

경축! 아무것도 안하여 에스천사게임즈가 새로운 모습으로 재오픈 하였습니다.
어린이용이며, 설치가 필요없는 브라우저 게임입니다.
https://s1004games.com



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

스크립트 대충 적기

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

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 & 스크린 언어를 통해 게임을 좀 더 완성에 가깝게 만들어보도록 하겠습니다.

 

출처: https://askance.tistory.com/42 [백안시의 공방 - 소설형 게임 제작실:티스토리]

 

 

본 웹사이트는 광고를 포함하고 있습니다.
광고 클릭에서 발생하는 수익금은 모두 웹사이트 서버의 유지 및 관리, 그리고 기술 콘텐츠 향상을 위해 쓰여집니다.
번호 제목 글쓴이 날짜 조회 수
191 [react native] 2025년 리액트 네이티브로 프로젝트 시작하기 file 졸리운_곰 2025.08.15 241
190 [no code 게임개발] PlayMaker 요약 file 졸리운_곰 2025.03.05 250
189 [Ren'py] 렌파이로 육성 시뮬레이션 게임 만들기 (4) DSE 를 이용해 이벤트 만들기 (2) : 미연시 만들기 file 졸리운_곰 2025.02.21 237
188 [Ren'py] 렌파이로 육성 시뮬레이션 게임 만들기 (3) DSE 를 이용해 이벤트 만들기 (1) file 졸리운_곰 2025.02.18 203
187 [Ren'py] 렌파이로 육성 시뮬레이션 게임 만들기 (2) 스크린 언어로 스케쥴 화면 만들기 file 졸리운_곰 2025.02.17 290
» [ren'py] 렌파이로 육성 시뮬레이션 게임 만들기 (1) 기초 스크립트 작성 file 졸리운_곰 2025.02.17 508
185 [flutter (플루터 앱 개발)] Dart와 Flutter를 ChatGPT에게 배우다. file 졸리운_곰 2025.02.03 297
184 [flutter (플루터 앱 개발)] Flutter PDF 뷰어를 만드는 방법 : How to build a Flutter PDF viewer file 졸리운_곰 2025.01.19 216
183 [flutter (플루터 앱 개발)] Flutter Canvas 그리기 예제 - (6) 드래그로 Canvas 내 Object 이동시키기 졸리운_곰 2025.01.19 277
182 [flutter (플루터 앱 개발)] Flutter Canvas 그리기 예제 - (5) 드래그로 Canvas 이동시키기 file 졸리운_곰 2025.01.18 157
181 [flutter (플루터 앱 개발)] Flutter Canvas 그리기 예제 - (4) Canvas에 Text 그리기 file 졸리운_곰 2025.01.18 201
180 [flutter (플루터 앱 개발)] Flutter Canvas 그리기 예제 - (3) Canvas내의 터치(마우스) 좌표 획득하는 방법 졸리운_곰 2025.01.17 247
179 [flutter (플루터 앱 개발)] Flutter Canvas 그리기 예제 - (2) Grid 격자 그리기 file 졸리운_곰 2025.01.17 504
178 [flutter (플루터 앱 개발)] Flutter Canvas 그리기 예제 - (1) 배경 색상 그리기 file 졸리운_곰 2025.01.16 241
177 [게임 일반] 선택 기반 게임의 표준 패턴 : Standard Patterns in Choice-Based Games 졸리운_곰 2025.01.13 236
176 [dart / flutter] Drawing Pixels With Dart : Dart 2d 그래픽 픽셀처리 file 졸리운_곰 2024.12.29 341
175 [unity, unity3d] 씬 뷰 조작법 | 유니티 졸리운_곰 2024.12.26 198
174 [Unity] 3D 씬(Scene) 뷰 조작법 file 졸리운_곰 2024.12.23 220
173 [Unity] 3D Unity 조작하기 file 졸리운_곰 2024.12.23 236
172 [flutter (플루터 앱 개발)] How to Implement Any UI in Flutter : 플러터에서 모든 UI를 구현하는 방법 file 졸리운_곰 2024.12.20 182
대표 김성준 주소 : 경기 용인 분당수지 U타워 등록번호 : 142-07-27414
통신판매업 신고 : 제2012-용인수지-0185호 출판업 신고 : 수지구청 제 123호 개인정보보호최고책임자 : 김성준 sjkim70@stechstar.com
대표전화 : 010-4589-2193 [fax] 02-6280-1294 COPYRIGHT(C) stechstar.com ALL RIGHTS RESERVED