본문 바로가기
게임/Renpy

Renpy 게임 선택지에 따른 호감도 적용

by MOVE🔥 2023. 1. 17.
728x90
반응형

오랫만에 처박아뒀던 게임 플젝을 꺼냈다.

(취미라는게 그렇듯 굉장히 진도가 느리다)

 

보통의 비주얼 노벨 게임(?)의 정석 호감도를 선택지에 따라 적용하고 확인하는 기능을 개발했다.

물론 뭐 알고 한건 아니고 파이썬 기반이라길래 이렇게 하면 되지 않을까~ 해서 대충 짜본 코드이다.

 

우선 호감도에 사용할 객체를 만들어준다.

  • 호감도 셋과 캐릭터 이름 셋을 만들어주고 getter를 만든다. 
  • 호감도 변경 함수를 만든다
#Manitto라는 객체 생성
init python in Manitto:
    # 호감도, 캐릭터 이름 Map
    loves = {"ky":0, "ms":0, "sy":0}
    names = {"ky":"금영노래방", "ms":"마이크로소프트", "sy":"싸이"}
    
    # 캐릭터 이름 반환
    def getName(name):
        return names.get(name)
    # 캐릭터 호감도 리턴
    def getLove(name):
        return loves.get(name)
    # 캐릭터 호감도 변경함수 
    def lChange(lover, love):
        loves[lover] += love

 

 

 

선택지에 선택에 따라 호감도 변경

menu:
    "아이스 아메리카노":
    	$ Manitto.lChange("ms", 3) #ms캐릭터의 호감도를 3만큼 올린다.
    "카페 라떼":
    	$ Manitto.lChange("sy", 1)
    "핫초코":
    	$ Manitto.lChange("ky", 3) 
    	$ Manitto.lChange("ms", -1) #ms 캐릭터의 호감도 -1 하락

 

호감도 보기 눌렀을 때

$ m_name = Manitto.getName(name)
$ love =  Manitto.getLove(name)
menu:
    "금영노래방":
    	"[m_name]의 호감도 : [love] "
    "마이크로소프트":
        "[m_name]의 호감도 : [love] "
    "싸이":
        "[m_name]의 호감도 : [love] "

 

그 결과는 이런식이다

 

정리한 내용은 매우 간단한 예시이지만

활용하면 좀 더 그럴싸하게 구현 할 수 있다.

 

but 문제~~!

그냥 한큐에 게임을 실행하는데엔 문제가 없으나...

문제는 게임을 하다 저장한것을 불러오면 호감도가 초기화 되거나, 게임을 재시작했는데 남아있는 데이터에 계산된다거나의 문제가 좀 있다..

아직 파일 데이터 저장 로직까지는 못봐서 이 부분은 추후에 알아보고 적용해야 할 것 같다.

 

 

 

728x90
반응형

댓글