본문 바로가기

렌파이

Dress Up 예제 http://lemmasoft.renai.us/forums/viewtopic.php?f=8&t=14559 캐릭터 꾸미기? 기능이라고 하면 될까요. 아무튼 포럼에 올라온 캐릭터 꾸미기 스크립트 예제입니다. 작성자가 예제 프로젝트도 올려놓았네요. 원리는 간단합니다. hair0.jpg, hair1.jpg .... hairN.jpg.... 같은 그림 파일을 만들어놓고 버튼으로 N자리에 들어갈 정수값을 바꿀 수 있도록 만든 다음, 라이브컴포짓 기능으로 바뀐 그림들을 합성하는 것입니다. 아마 매지컬 다이어리도 이런 식으로 캐릭터 합성 기능을 만들었겠죠. 더보기
렌파이 6.14 선공개판이 나왔습니다. * 선공개판입니다. 문제가 많이 발생할 수 있으니 선공개판 버전으로 게임 배포판을 만들지 마시기 바랍니다. http://lemmasoft.renai.us/forums/viewtopic.php?f=32&t=16299 렌파이 6.14 버전 "스팀펑크 햄스터" 가 선공개되었습니다. 13에서 14로 건너뛰었다니 변경사항이 무지 많은가봅니다. 런처부터 싹 바뀌었기 때문에 shift+ U 업데이트는 불가능합니다. 완전 공개판이 아니라서 바뀐 기능을 전부 옮겨 적긴 그렇고 간단히 옮겨보자면 14버전에서의 변경점은 대충 다음과같습니다. 렌파이 런처를 재작성했습니다. 외형도 좀 더 멋지게 변하고, 새 스크립트 네비게이션 기능도 추가되어서 렌파이 코드를 살펴보기 좀 더 쉬워졌습니다. 렌파이 스크립터로 에디트라를 사용하라고.. 더보기
Pseudo 3D with Ray casting 원문: [CODE] Pseudo 3D with Ray casting 렌파이 포럼에서 재미있는 예제를 하나 발견해 소개합니다. SusanTheCat이라는 작성자가 레이 캐스팅을 이용해 렌파이에서 유사 3D 코드를 만들어 올렸습니다. 레이 캐스팅이고 pseudo 3d이고 무슨 용어인지 몰라서 찾아봤는데 레이 캐스팅이란 원근법을 이용해서 2d에서 3d 느낌을 주는 알고리즘인가봅니다. (그래서 3d 앞에 유사라는 단어가 붙었나보군요) 작성자가 말하길 HTML5 예제에서 힌트를 얻어 렌파이로 코드를 옮겨 만들었다고 하네요. 첨부된 파일을 받아서 렌파이 프로젝트 폴더 경로에 넣으면 직접 실행해보실 수 있습니다. 리턴 투 캐슬 울펜슈타인 3D같은 느낌이라는데 저는 모르는 게임이고; 대신 옛날에 즐겨 했던 마도전기라는.. 더보기
세리리의 해피버스데이 따라하기 _ 8 이벤트 추가 수정사항 여기저기 수정하고 이벤트를 몇 개 넣어놓았습니다. 스크립트 어느정도 기본 틀을 다 만드니까 별로 쓸 말이 없군요; 다운받아서 프로젝트 있는 폴더에 압축풀고 런처에서 birthday 선택해서 실행하시면 됩니다. # guis.rpy init python: # 스탯 바뀔 때마다 글씨 색을 바꾸도록 스크립트를 짰습니다. # 예전 스탯에 비해서 얼마나 바뀌었는지 확인해야 하니까 예전 스탯을 저장하는 변수가 있어야 합니다. old_pow = old_wise = old_cute = old_gap = old_kind = old_stress = 0 # 새 값이 이전값보다 크면 파랑, 작으면 빨강. 같으면 흰색 def delta_to_color(new, old): if new > old: return "#0ff".. 더보기
세리리의 해피버스데이 따라하기 _ 7 스탯/스케쥴 수정, 스케쥴 시스템 목표 스탯/스케쥴에서 자잘한 부분 완성. 그리고 드디어 실제 스케쥴을 실행할 수 있는 스케쥴 시스템을 완성했습니다. ㅇ>- calcData[month]: # 날짜를 더하다가 마지막 날이.. 더보기
세리리의 해피버스데이 따라하기_ 6 스케쥴 설정 화면 목표 스케쥴 설정화면입니다. 이거만 하면 거의 반은 한 건데 까다롭기도 그만큼 까다로워서.. 아 그러고보니 미니게임도 남아있었네요.. 뭐 어차피 하다가 어려우면 패스할 거라서 생각 안 하고 있었습니다ㅇ 더보기
세리리의 해피버스데이 따라하기_ 5 달력 목표 이번엔 달력입니다. 보기보다 신경써야할 게 많습니다. 스크립트 스크립트 양이 조금 많아서 접었습니다. 물론 주석이 반입니다. 사실 주석이고 뭐고 이렇게까지 자세하게는 안 쓰려고 했는데 마음대로 안 되네요..--; init python: # 달력스크린 screen calendar: # 이 화면에서 info 스크린을 같이 그립니다. # 달력 버튼(다음달 보기, 이전달 보기)를 누를때마다 calendar 스크린을 새로 그리는 통에 # screen info: # use calendar 처럼 쓰면 버튼 눌렀을 때 info 스크린이 사라집니다..ㅇ= 13: $ _month = month -12 # 13보다 작으면 있는 그대로 표시하면 되겠죠 else: $ _month = month # 이렇게 _month에 저.. 더보기
세리리의 해피버스데이 따라하기_ 4 호감도 창 정보 창에서 볼 수 있는 호감도 스크린을 만들어봤습니다. 목표 이 게임에선 호감도가 범위에 따라 이미지로 표시됩니다. 최고는 엔딩 조건을 만족하면 나타납니다. 메인 화면 / 그러니까 커맨드 스크린에서 정보 버튼을 누르면 이런 화면이 나옵니다. 호감도는 여기서 확인할 수 있습니다. 일단 달력은 제끼고 호감도 확인창만 만들어보겠습니다. 스크립트 # 호감도 저장 변수 $ aruru = witch = ruru = owlbear = draco = dara = 0 # 히든 캐릭터 호감도 관리용입니다. # 여기엔 호감도 수치가 아니라 캐릭터와 만난 횟수를 저장합니다. # 사실 위에 다 같이 적어도 상관 없는데 호감도와 별개로 관리하는 거니까 따로 적었습니다 ''; # 그외 의미는 없습니다.; $ masked = 0 .. 더보기
세리리의 해피버스데이 따라하기_ 3 GUI - 날짜 창, 커맨드 입력창, 스탯창 스크립트는 작성/변경한 분량만큼만 적어놓겠습니다. ''ㅋ 꽤 많이 한 것 같지만 주석이 반이라 실제 만든 건 별로 없습니다. 스크립트 init python: # 게임 화면 위쪽에 표시할 날짜 정보 관련 변수 # screen date 에서 사용 dday = 365 month = 3 day = 12 season = 'Spring' # 능력치 변수 # screen status에서 사용 # 힘, 지능, 귀여움, 말빨;, 상냥함, 피로, 초기값은 모두 0 pow = wise = cute = gap = kind = stress = 0 # 힘은 str 변수에 저장하려고 했더니 세이브/로드 화면이랑 충돌하는지 # 저장화면 불러올때마다 에러납니다. 그 스크린에서 간접적으로 str함수를 쓰거든요. # 그래서 pow로 했습.. 더보기
세리리의 해피버스데이 따라하기_ 2 오프닝 설명까지 같이 달아서 차근차근 글 쓰려니까 압박감이 느껴져서 글쓰기를 미뤘는데 댓글 받은 힘으로 (반은 의무감으로;) 글 남깁니다. 어차피 맘대로 쓰기로 마음먹은 글인데 막상 쓰려니까 그게 또 안 되고 자세히 쓰려고 애쓰게 되네요 ㅇ 더보기
세리리의 해피버스데이 따라하기 _1 컴파일이라는 회사에서 내던 잡지인 디스크 스테이션에 부록으로 있던 게임입니다. 게임이 나온지 십 몇 년은 된 거 같고.. 컴파일도 망한지 십 년은 된 거 같네요--; 어쨌든 게임 목적은 돌아오는 생일까지, 그러니까 일 년동안 친구 많이 사귀기. 짧고 간단해서 따라 만들기로했습니다. 패러미터도 6개가 끝이고, 시스템도 간단하고, 미니게임이...생각해보니까 미니게임이 있었네요. 세 개 있었나. 한 개는 드래그/드롭 기능만 있으면 돼서 예전에 만들어뒀는데 나머지는 아마도 미니게임용 디스플레이어블을 새로 만들어야겠군여... 빡치면 미니게임은 버릴지도 모르겠습니다;. 어차피 저도 "완성을 목표로" 따라 만들어보는 건 처음 하는 거라서 쉬엄쉬엄 갈 거에요. 이제보니까 달력도 있었네요 아ㅏㅏㅏㅏㅏㅏ 이벤트 발생조건은.. 더보기
따라하기 시리즈 _글 쓰기 전에 예제작 카테고리에는 게임 하나를 직접 만드는 과정을 담은 글을 적으려 합니다. 다만 만드는 과정만을 적는 것이니 다음과 같은 점은 염두에 두고 글을 읽어주세요. 우선 글에서는 게임에 있는 연출이나 시스템, 즉 스크립트로 커버할 수 있는 것을 만들어볼 생각입니다. GUI나 시나리오나 그림은 고려 대상이 아닙니다. 엔진 다루는 것과는 크게 관곈 없으니까요. 이벤트같은 것도 쓰는 법만 알면 알맹이 채우는 건 간단하니까 구색 맞추는 정도로만 만들 겁니다. 사실 게임의 모든 이벤트를 찾아보는 일은 제 성질에 안 맞는 일이기도 해여.. 그리고 강의글에서처럼 일목요연하게 정리되어있지 않고, 보기에 약간 난잡할지도 모릅니다; 만들어지는대로 글을 올릴 거라 실수하는 과정이나 헤매는 모습이나 삽질이나 제 개인 취향도 그대.. 더보기
지속 데이터 Persistent Data 렌파이에서 지속 데이터란 렌파이 게임의 흐름과는 별개로 저장하거나 이용할 수 있는 데이터입니다. 예를 들어 어떤 엔딩을 봤다면 이야기 진행을 처음서부터 아예 바꿔버린다거나, 게임의 현재 진행상태와 관계 없이 특정 조건에 따라 열리는 메뉴같은 것을 만들 때 지속 데이터를 이용해야 합니다. persistent지속 데이터는 persistent 라는 변수를 이용해 관리할 수 있습니다. 말이 굉장히 거창해보이는데 그런 거 없고 그냥 보통 변수 쓰듯 쓰면 됩니다. 다만 아래와같은 모양을 갖추고 사용해야 합니다. persistent.사용하고싶은 이름 = 값 보통 변수처럼 init 블록에서 먼저 지정하지 않아도 됩니다. 만들어지지 않은 persistent변수는 언제나 False값을 가집니다. 미리 지정해도 별 상관은 .. 더보기
음악 감상실 스크립트 설명 음악 감상실은 플레이어가 게임 중에 들었던 음악을 다시 한 번 감상 할 수 있는 기능을 갖춘 스크린입니다. 설명은 예제 스크립트를 참고해주세요. init python: # 이제부터 음악감상실 설정을 시작한다는 의미로 아래처럼 적어줍니다. # MusicRoom() 괄호 안에는 channel, fadein, fadeout 속성을 적을 수 있습니다. mr = MusicRoom(fadeout=1.0) # channel 은 음악 재생 채널, 기본 값은 'music'입니다. # fadein은 새로 재생할 음악 볼륨이 몇 초에 걸쳐 원래 크기의 사운드로 재생되는지를 # fadeout은 이전에 재생했던 음악의 볼륨이 몇 초에 걸쳐 사라지는지를 결정하는 속성입니다. # 이제 음감실에서 재생할 음악 파일을 설정합니다. #.. 더보기
CG 갤러리 코드 설명 이전 버전까지는 따로 스크립트 파일을 받아서 만들어야 했습니다만 6.13부터는 CG갤러리와 음악 감상실 만드는 스크립트가 내장되었습니다. 그래서 6.13부터는 CG 감상 버튼은 쉽게 만들.. 수 있으면 좋았겠지요 ㅇ 더보기