본문 바로가기

렌파이

용어집 만들기 용어집.. 이라고 하나요? 여튼 게임 내의 사전 시스템입니다. 용어가 적힌 버튼을 클릭하면 옆에 설명이 뜨는 방식이며, 기타 위치 지정이나 디자인등은 지정하지 않은 생 뼈대(..) 스크립트입니다. 1. $ dictionary = [['???', ''] for x in range(0,9)] screen dictionary: vbox: for name, desc in dictionary: hbox: # name 은 용어의 명칭 # desc 는 용어 설명문 textbutton name action If(desc != '' and [name, desc] in dictionary, Show('description', desc_text = desc), None) # 위의 Show 에서 desc_text 로 받은 용.. 더보기
버튼에서 글자와 이미지를 겹쳐 쓰는 법 screen xxx: textbutton "[month]월 [day]일" background "button.png" #........ $ ui.textbutton('글자', background = "button.png") 넵..보시다시파, 해당 버튼에서 background 라는 스타일 속성을 사용하고픈 이미지 이름으로 바꿔주면 되겠습니다. 예전에도 같은 질문을 받은 적이 있는데 그 때는 안 된다고 말씀드렸습니다만.. 두 번째로 질문을 받으니까 방법이 생각나더군요;; 예제라고까지 할 건 없지만 대략 방법을 적어봤습니다. 더보기
아날로그 어 헤이트 스토리 따라하기 - 6 세이브/로드 목표 오른편에 있는 세이브 로드 화면을 따라 만들어봤습니다. 스크립트 screens.rpy screen main_menu: #..... # 로드 스크린을 부르는 대신 환경설정 스크린을 불러오도록 바꿈 textbutton "이어서 하기" action ShowMenu("preferences") xpos 380 ypos 415 # 세이브/로드 버튼을 만드는 스크린 screen file_picker: window: # 이 스크린에서 사용하는 모든 gui의 스타일 이름을 # filepicker로 만듬 style_group "filepicker" has vbox # 레이블은 환경설정 때와 마찬가지로.. label '{color=#fff}저장 파일{/color}' xpadding 20 ypadding 5 backgr.. 더보기
아날로그 어 헤이트 스토리 따라하기 - 5 환경 설정 목표 이번엔 환경설정 메뉴입니다. 우선 왼편에 있는 "환경설정" 화면만 따라 만들어보았습니다. 준비물 스크립트 screen preferences: tag menu # 네비게이션은 안 쓰니까 뺐습니다. add 'bg mainmenu' # 환경설정 배경. 나중에 수정해야.. window: style_group "prefs" has vbox label '{color=#fff}환경설정{/color}' xpadding 20 ypadding 5 frame: background Null() xpadding 30 ypadding 20 has vbox text '음악 볼륨' bar value Preference("music volume") null height 15 text '효과음 볼륨' bar value Prefer.. 더보기
아날로그 어 헤이트 스토리 따라하기 - 4 메인 메뉴 범위 체험판(..) 의 메인 메뉴를 따라 만들어봤습니다. 준비자료 메인 메뉴 꾸밀 이미지들입니다. 아이콘/버튼/배경은 게임 캡쳐 따서(..) 만들었고, 로고는 일부러 다르게 만들었습니다. 그림 파일 이름은 스크립트에서 그대로 사용했으니 이왕이면 바꾸시지 않는 게 스크립트 시험해보기엔 편하실 듯. 스크립트 options.rpy #.... config.screen_width = 1024 # config.screen_height = 640 ## 다시 보니 게임창 크기가 600이 아니라 640이라서 수정(.. #... script.rpy #.... screen skip_intro: textbutton "인트로 넘기기" action MainMenu(confirm = False) align ( .95, .95) #.. 더보기
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 '' 더보기
Revised - GUI 기반 렌파이 에디터 http://jancoding.wordpress.com/revised/ Qt(큐트)라는 툴킷을 이용한 렌파이 에디터라고 합니다. 아직은 새 프로젝트를 만들어 캐릭터와 이미지를 정의하고 그림이나 대사를 넣는 것만 가능하지만(정말 이것만 됩니다;;) 점점 기능을 업데이트해나간다면 정말로 유용한 툴이 되겠네요. Qt는 예전에 딱 한 번 호기심에 만져본 것 빼고는 다뤄본 적이 없는 툴이라 자세한 사용법은 저도 잘 모르겠네요. -_-; 게다가 아직 그렇게 유용하진 않은 상태라 업데이트가 좀 더 진행되어 쓸만해지고 난 다음에 다뤄봐야겠습니다. * 현재는 리눅스에서만 작동한다고 합니다. 더보기
아날로그 어 헤이트 스토리 따라하기 - 3 인트로 대사 모양 수정 목표 겉모양을 조금 수정했습니다. 배경이 원작과 아주 많이 다른 건 신경쓰지 마세요(.......) 스크립트 init python: style.nvl_window.background = None # 인트로의 nvl 배경그림을 없애는 스크립트.. intro = Character(kind=nvl, what_font = "soonchunhyang.ttf", # 폰트 바꿈 window_xmargin = 100, # 인트로 텍스트 좌우 여백 window_ymargin = 100 # 문단간의 상하 여백 ) #인트로용 임의 캐릭터를 수정해서 인트로 메시지 모양 수정 #.... label splashscreen: #...... show text 'Incoming message': easein .5 alpha 0 # 메.. 더보기
아날로그 어 헤이트 스토리 따라하기 - 2 인트로 뼈대 범위 인트로 부분 뼈대만 만들었습니다. (영상 앞부분 몇 초간 인트로 화면이 나와있습니다.) 스크립트 options.rpy ### 기본 options.rpy 에서 수정 config.developer = True ## These control the width and height of the screen. config.screen_width = 1024 # config.screen_height = 600 # ## This controls the title of the window, when Ren'Py is ## running in a window. config.window_title = u"아날로그 어 헤이트 스토리 따라하기" config.default_text_cps = 80 # 글자 표시 속도 ###.. 더보기
아날로그 어 헤이트 스토리 따라하기 - 1 이 트윗을 보고 모작해볼 게임으로 아날로그: A Hate Story를 골랐습니다. (어떻게 이렇게까지 한 건지 놀랐다는 얘길 보고 제가 더 놀랐다는 게 함정입니다;..) 그냥 배울 목적이니까 본편 게임 스크립트 한번 쭉 뜯어보면 간단하겠지만 아무래도 막무가내로 부딪혀봤는데 얼추 비슷하게 만들어지는 모습을 눈으로 보는 게 가장 확실할테니까요 음음.. GUI에 쓸 이미지까지 직접 준비해서 GUI 쪽을 주로 다룰 생각입니다. 물론 이번에도 알맹이는 안 채웁니다; 저는 그저 스팀에서 세일하기를 오매불망 기다리고 있는 궁상 게이머.. 이므로; 데모에서 확인할 수 있는 만큼의 GUI만을 대상으로 만들어 볼 생각입니다. 더보기
디스플레이어블 뜻 디스플레이어블이란 플레이어/유저의 눈에 보이는 객체입니다. 객체라는 말이 어려우시면 그냥 잊어버리시고, 렌파이에서 눈으로 볼 수 있는 무언가가 있으면 그것이 이미지든 버튼이든 글씨든 뭐든 '디스플레이어블'이라고 생각하시면 편합니다. 디스플레이어블에는 다음과 같은 종류가 있습니다. 종류 이미지 # 아래의 두 행은 똑같은 동작을 한다. image logo = "logo.png" image logo = Image("logo.png") # Image 를 사용하면 이미지에 기본 위치를 지정할 수 있다. image logo right = Image("logo.png", xalign=1.0) - image eileen happy = "eileen happy.png" 처럼 이미지 파일을 배정해 만든 이미지 이름 -.. 더보기
화면 전환 효과 - 트랜지션 (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 과 함께 트랜지션 이름을 적으면 됩니다. 게임 메뉴를.. 더보기
웹 업데이터 기능 활용하기 웹 업데이터 기능을 이용하면 온라인 상태일 때 게임 자체에서 웹에 올려진 파일을 받아 플레이어의 디스크에 설치할 수 있습니다. 패치나 DLC 다운로드 기능에 활용하면 유용한 기능입니다. 준비 우선 이 웹 업데이터 기능을 활용하려면 웹 호스팅 계정이 있어야합니다. 티스토리나 클박 같은 곳에 패치 파일을 올려놔도 무의미하니 웹 호스팅 계정을 이용하세요. kth 비즈프리라는 곳에서 회원가입만 하면 무료로 하나 만들 수 있으니 참고하시기 바랍니다. (물론 무료용은 100M 라는 트래픽 제한 및 용량 제한이 있으므로 아무래도 제대로 이용하고자 하시는 분은 유료 호스팅을 이용하셔야 합니다.) 기타 웹 호스팅 서비스는 구글 검색결과 페이지를 참고하세요. 호스팅이 준비가 되었다면 런처를 실행합니다. 패치 기능으로 활용.. 더보기