본문 바로가기
programming/renpy

[renpy 강좌 02 ] 캐릭터 및 배경 이미지 추가

by FAPER 2024. 5. 10.

 

이전 강의 : https://faper.tistory.com/37

 

[renpy 강좌 01 ] 설치 및 기초 문법

Ren'Py는 주로 비주얼 노벨 및 스토리 기반 게임을 제작하는 데 사용되는 인기 있는 게임 엔진이다. 이 엔진은 Python 프로그래밍 언어에 기반을 두고 있으며, 그 이름도 Python과 '

faper.tistory.com

저번 시간에 만든 것은 이런 검은 배경에 특별한 디자인은 없었다.

 

여기에 이제 적당한 배경과 적당한 이미지를 넣어서 캐릭터를 만들 수 있다.

 

이미지는 아무곳에서 대충 구해오면 된다. 여기서는 Novel AI 나 MS의 AI 생성 사이트를 활용해서 만들어줬다. 

경로는 프로젝트 폴더에서 ./game/images에 넣으면 된다. 배경이나 아이템, 캐릭터 등등 이미지가 많아질 경우 이 폴더 안에서 추가적인 폴더를 만들어서 분리해주면 된다.

# 이 파일에 게임 스크립트를 입력합니다.

# image 문을 사용해 이미지를 정의합니다.
# image eileen happy = "eileen_happy.png"
image city = "bg01.png"
image airin01 = "airin01.png"
image airin02 = "airin02.png"

# 게임에서 사용할 캐릭터를 정의합니다.
define e = Character('아이린', color="#c8ffc8", image='airin01')
default book = False

# 여기에서부터 게임이 시작합니다.
label start:
    scene city
    e "새로운 렌파이 게임을 만들었군요."

    e "이야기와 그림, 음악을 더하면 여러분의 게임을 세상에 배포할 수 있어요!"
    e  "어디로 이동할까요?"
    menu:
        "1. 카페로 가자":
            e "카페 나도 좋아해요"
            jump cafe

        "2. 공원으로 가자":
            e "다리 아픈데"
            jump park


    label cafe:
        e "카페다!"
        $book = True
        jump airin
    
    label park:
        e "공원이다!"
        jump airin


    label airin:
        e "그래서 이제 뭐할까요?"
        if book:
            e "책을 읽을까요?"
        else:
            e "산책이나 할까요?"
    return

 

이렇게 image 키워드를 통해 이미지 파일을 불러오고 define 키워드의 Chracter()에 추가적으로 값을 넣을 수 있다.

또한, scene 키워드를 통해 배경화면을 지정 해줄 수 있다. 

 

# 이 파일에 게임 스크립트를 입력합니다.

# image 문을 사용해 이미지를 정의합니다.
# image eileen happy = "eileen_happy.png"
image city = "bg01.png"
image airin01 = "airin01.png"
image airin02 = "airin02.png"

# 게임에서 사용할 캐릭터를 정의합니다.
define e = Character('아이린', color="#c8ffc8", image='airin01')
default book = False

# 여기에서부터 게임이 시작합니다.
label start:
    scene city
    show airin01 at left
    e "새로운 렌파이 게임을 만들었군요."

    e "이야기와 그림, 음악을 더하면 여러분의 게임을 세상에 배포할 수 있어요!"
    e  "어디로 이동할까요?"
    menu:
        "1. 카페로 가자":
            e "카페 나도 좋아해요"
            jump cafe

        "2. 공원으로 가자":
            e "다리 아픈데"
            jump park


    label cafe:
        e "카페다!"
        $book = True
        jump airin
    
    label park:
        e "공원이다!"
        jump airin


    label airin:
        e "그래서 이제 뭐할까요?"
        if book:
            e "책을 읽을까요?"
        else:
            e "산책이나 할까요?"
    return

 

그리고 이렇게 show 키워드를 통해 image 객체를 불러오고 at 을 통해 위치를 지정 해줄 수 있다. 

# 이 파일에 게임 스크립트를 입력합니다.


# 게임에서 사용할 캐릭터를 정의합니다.
define e = Character('아이린', color="#c8ffc8", image='airin01')
define sys = Character('system', color="#d42a1e")
# image 문을 사용해 이미지를 정의합니다.
# image eileen happy = "eileen_happy.png"
image city = "bg01.png"
image cafe = "cafe.png"
image park = "park.png"

image airin01 = "airin01.png"
image airin01 idle = "airin02.png"

default book = False

# 여기에서부터 게임이 시작합니다.
label start:
    scene city
    show airin01 at left
    e "새로운 렌파이 게임을 만들었군요."

    e "이야기와 그림, 음악을 더하면 여러분의 게임을 세상에 배포할 수 있어요!"
    e  "어디로 이동할까요?"
    show airin01 at center:
        ease 0.5 xalign 0.5
    menu:
        "1. 카페로 가자":
            show airin01 idle at left zorder 1
            e "카페 나도 좋아해요" 
            sys "호감도 +5"
            jump cafe

        "2. 공원으로 가자":
            e "다리 아픈데"
            sys "호감도 -1"
            jump park


    label cafe:
        scene cafe
        show airin01 idle at left zorder 1
        e idle "카페다!"
        $book = True
        jump airin
    
    label park:
        scene park
        show airin01 idle at left zorder 1
        e "..이딴게 공원?"
        
        jump airin


    label airin:
        e "그래서 이제 뭐할까요?"
        if book:
            e "책을 읽을까요?"
        else:
            e "산책이나 할까요?"
    return

 

또한, ease문을 통해 css의 애니메이션과 같은 효과를 낼 수 있다. 더 자세한 이미지 변환은 아래의 링크를 통해 확인 할 수 있다.

https://www.renpy.org/doc/html/displaying_images.html

 

Displaying Images — Ren'Py Documentation

There are two ways to define images. You can either place an image file in the image directory, or an image can be defined using the image statement. The former is simple, as it involves placing properly named files in a directory, while the latter a allow

www.renpy.org

 

이렇게 자연스러운 이미지 이동이 가능하다.