본문 바로가기

렌파이/연출하기

렌파이에서 움직이는 이미지를 사용하는 방법 제가 지금까지 받은 질문 중에서 자주 올라왔던 질문이 있습니다 렌파이에서 움직이는 GIF 파일을 사용할 수 없나요? 네, 못 씁니다.하지만 움직이는 이미지를 사용할 수 있는 방법은 있습니다. 1. 우선 움직이도록 만드려는 이미지를 한 장 씩 따로따로 이미지 파일로 저장합니다.그리고 해당 이미지 파일들을 렌파이 game 폴더에 넣어둡시다 2. image 블럭을 만들어 위에서 만든 이미지들을 한 장씩 입력해줍시다repeat은 위 이미지들을 차례대로 반복해서 보여준다는 뜻이고,pause는 각 이미지들을 몇 초 동안 띄울 건지 결정합니다. init: image girl: 'sample (1).png' pause 0.05 'sample (2).png' pause 0.05 'sample (3).png' pause .. 더보기
엔딩 목록 화면 만들기 플레이어가 확인한 엔딩 이름을 표시하는 스크린입니다. init: # 엔딩이 몇 안 되는 경우 screen endingList: frame: align (0.5, 0.5) vbox: if persistent.goodEnding: text '굿엔딩: 맛있는 자장면' else: text '???' if persistent.badEnding: text '배드엔딩: 인생은 Birth와 Death 사이의 Choice' else: text '???' label start: menu: '그냥 자장면인가 자장면 곱배기인가 그것이 문제로다.' '저는 그냥 자장으로 주세요': '먹음직스러운 자장면 등장!' '잘 먹겠습니다.' $ persistent.goodEnding = True '곱배기 하나요.': '호리병 안에 자장면 .. 더보기
비주얼노블 모드에서 읽은 문장은 흐릿하게 나타나게 하기 "마법사의 밤" 화면입니다. 보시면 이미 표시된 문장은 글씨색이 회색으로 변했습니다. 직접 플레이해본 분은 아시겠지만 이 글씨가 그냥 회색으로 바뀌는 게 아니라 서서히 회색으로 바뀝니다. 렌파이로도 한번 비슷하게 구현해봤습니다. 트랜스폼으로는 글씨 색을 바꿀 수 없어서 대신 그와 비슷하게 보이도록 투명도값을 줄여봤습니다. 먼저 트랜스폼을 두 개 만듭니다. transform alpha_down: linear 0.5 alpha 0.5 transform alpha_half: alpha 0.5 screens.rpy서 screen nvl: 를 검색하고 그 블록을 살펴보면 이런 부분이 있습니다. # Display dialogue. for who, what, who_id, what_id, window_id in di.. 더보기
ATL knot 속성 사용법 transform knot_example: align (.0, .0) # knot : 포물선을 그리며 이동한다 # 사용법 # 위치속성(ex: pos, align ...) (최종 도착 위치) knot (x방향 정점, y방향 정점) on show: linear 1 align (0.0, 1.0) knot (0.5, 0.5) image mouse = 'mouse.png' label start: show text '(0.0, 0.0)' at topleft show mouse at knot_example '' 더보기
화면 전환 효과 - 트랜지션 (3) 심화 심화라고 적었지만 별 건 아닙니다. 다만 제가 써야할 설명이 많아서 따로 분류했을 뿐입니다; 물론 그만큼 조금 복잡하기도 합니다. 디졸브 계열 ImageDissolve ImageDissolve(image, time, ramplen=8, reverse=False, alpha=True, time_warp=None) 설정한 이미지에 따라 다양한 모양의 디졸브를 만들 수 있는 트랜지션 클래스입니다. 기본 트랜지션인 squares 나 blinds 는 모두 ImageDissolve 클래스로 만들어진 트랜지션입니다. image - 디졸브 트랜지션에 적용할 이미지. 밑바탕이라고 보시면 됩니다. 보통은 흑백 이미지를 사용합니다. 이 클래스로 만든 트랜지션을 사용하면 이 이미지의 하얀색 픽셀과 겹쳐있는 게임 화면의 픽셀이.. 더보기
화면 전환 효과 - 트랜지션 (2) 활용 트랜지션 클래스를 활용하면 기존 트랜지션 효과 외에 복합적인 트랜지션도 만들 수 있습니다. 간단한 트랜지션 클래스 미리 마련된 트랜지션 효과를 이용하는 대신 자잘한 부분을 수정하고 싶다면 아래 목록에 있는 트랜지션을 활용하면 됩니다. 트랜지션 클래스 활용은 대략 이렇게 하면 됩니다. # 자주 쓰지 않는다면 아래처럼만 적어도 됩니다. show eileen with Dissolve(1.0) #클래스 명과 적당한 값을 입력한다. # 자주 쓰려는 트랜지션이라면 아래처럼 변수를 만들고 그곳에 배정한 뒤에 써야 합니다. init python: dissolve1 = Dissolve(1.) #그 뒤 with 문과 함께 사용하면 됩니다. show eileen with dissolve1 되도록이면 여기 적힌 스크립트 복붙.. 더보기
화면 전환 효과 - 트랜지션 (1) 기본 길라잡이에서도 설명한 적 있지만 트랜지션이란 이미지가 사라지거나 나타날 때 적용할 효과를 뜻합니다. 그냥 그림이 팟 나타나거나 사라지면 재미 없으니까요. 게임 화면을 연출할 때 적절한 트랜지션을 적용하면 비주얼을 살릴 수도 있겠지요. 사용방법 label start: scene bg room light with dissolve show baekansi smile with dissolve hide baekansi with fade # ... # options.rpy config.enter_transition = dissolve config.exit_transition = fade #... 그림에 트랜지션을 적용하려면 show 나 hide 명령문에 with 과 함께 트랜지션 이름을 적으면 됩니다. 게임 메뉴를.. 더보기
이미지를 움직이거나 모양이 변경되도록 만들기 - ATL ATL은 Animation and Transform Language 의 약자입니다. 움직임이나 그림변환을 할 때 사용하는 언어라는 뜻으로, 렌파이에서만 이용할 수 있는 언어입니다. 이 ATL을 이용하면 그림을 마음에 드는 곳에 자유로이 놓거나, 자르거나, 돌리거나 할 수 있으며 그림이 움직이도록 만들 수도 있습니다. ATL 언어는 image, show, scene, transform 명령문을 블록으로 만들면 해당 블록에서 사용할 수 있습니다. 이렇게 만들어진 블록은 ATL 블록이라고 합니다. 즉, ATL 언어는 ATL 블록에서만 이용할 수 있습니다. image 문과 ATL init: image eileen happy: "eileen_happy.png" xalign 1.0 ypos 100 이전에는 imag.. 더보기
문장 부호에 따라 텍스트창 배경 바꾸기 init python: style.say_window.background = ConditionSwitch( "exclaim == 0", "#00000050", "exclaim == 1", Frame("spiky_frame.png", 75, 75)) style.say_window.yminimum = 200 style.say_window.xpadding = 50 style.say_window.ypadding = 50 def shoutToggle(input): if input.find('!') is not -1: store.exclaim = 1 else: store.exclaim = 0 return input config.say_menu_text_filter = shoutToggle label start: $.. 더보기
스프라이트 매니저를 이용해 파티클 효과 만들기 렌파이에서 스프라이트 매니저는 파티클 이펙트라고 하는 보조 시각 효과를 만드는 데 적합한 시스템입니다. 여기서 말하는 파티클 이펙트로는 위에서 눈이 떨어진다던가 하는 익숙한 화면 효과에서부터 폭발이라던가 먼지가 이는 시각 표현 등을 예로 들 수 있습니다. 1. SnowBlossom 사실 앞서 예로 들었던 눈발이라던가 떨어지는 꽃잎같은 건 SnowBlossom 으로 간단하게 만들 수 있습니다. init: image snow = SnowBlossom("snow.png", count=100) label start: show snow '....' 이렇게 적기만 해도 게임 화면에 눈 내리는 연출을 추가할 수 있습니다. 여기에 파티클 이동 속도, 시작 방향, 갯수 등을 정하면 세로, 혹은 가로 방향에서 그 다음 방.. 더보기
값 바뀔 때마다 텍스트 색상 바꾸기 http://lemmasoft.renai.us/forums/viewtopic.php?f=8&t=10391 텍스트에 대입한 변수의 값이 증가하면 파란색 감소하면 빨간색으로 바뀌도록 한다. 도키메모 흉내낸다고 트랜스폼도 좀 추가해서.. 색이 변했다가 점차 흰 색으로 바뀌도록 하는 효과도 줌(편법으로;) - agi나 dex 라는 단어가 적힌 변수(ex ) agi, old_agi, agi_color ...)는 찾아서 필요에 따라 바꾸면 됩니다 - (별거 아니지만)스트레스처럼 올라봤자 좋을 거 없는 스탯이 증가하는 경우에 색깔이 반대로 표시되도록 함수를 추가했습니다. - 110529 init python: def delta_to_color(new, old): if new > old: return "#0ff" el.. 더보기
캐릭터 이미지가 눈을 깜박거리고 대사에 맞춰 입을 움직이게 하기 캐릭터 이미지가 눈을 깜박이고 대사중일 때 입을 움직이게 하는 스크립트입니다. 렌파이 위키의 쿡북 페이지에 실려있는데 직접 사용해보니 설명이 필요할 거 같아 적습니다. 원본 스크립트에 있는 문제점 1. 롤백, 그러니까 마우스 휠 위로 올려서 이전의 대사를 다시 표시 하면 캐릭터 입이 계속 움직인다. >> 버뜨 이건 렌파이의 롤백 시스템때문에 어떻게 될 것 같지가 않네요. 2. 텍스트창에 점을 찍을 때도 입을 움직인다 (................ 이 문제를 해결하려고 임의로 스크립트를 좀 수정했습니다. 난 원본을 쓰고 싶다!! 하시는 분은 하이라이트된 스크립트를 지우고 사용하시면 됩니다. 양이 좀 많아 보이는데, 주석 지우면 몇 줄 안 됩니다. init python: # 드립을 치고 있는 상태를 나타내.. 더보기