본문 바로가기

렌파이/게임 따라하기

아날로그 어 헤이트 스토리 따라하기 - 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) #.. 더보기
아날로그 어 헤이트 스토리 따라하기 - 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만을 대상으로 만들어 볼 생각입니다. 더보기
세리리의 해피버스데이 따라하기 _ 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나 시나리오나 그림은 고려 대상이 아닙니다. 엔진 다루는 것과는 크게 관곈 없으니까요. 이벤트같은 것도 쓰는 법만 알면 알맹이 채우는 건 간단하니까 구색 맞추는 정도로만 만들 겁니다. 사실 게임의 모든 이벤트를 찾아보는 일은 제 성질에 안 맞는 일이기도 해여.. 그리고 강의글에서처럼 일목요연하게 정리되어있지 않고, 보기에 약간 난잡할지도 모릅니다; 만들어지는대로 글을 올릴 거라 실수하는 과정이나 헤매는 모습이나 삽질이나 제 개인 취향도 그대.. 더보기