Pygame으로 만드는 나만의 RPG 게임 4강 – NPC 만들기와 상호작용 기초 구현

Pygame으로 만드는 나만의 RPG 게임 4강입니다!

지난 강의에서는 Tiled를 활용해 타일맵을 만들고, JSON 맵 파일을 Pygame에서 불러오는 방법을 배웠습니다. 이제 맵은 완성됐으니, **게임 속 생명을 불어넣는 요소**, 바로 **NPC (Non-Player Character)** 를 만들어봅시다.

이번 강의에서는 NPC를 맵 위에 배치하고, 플레이어가 가까이 다가가면 간단한 대사를 출력하는 상호작용 기초 시스템을 구현합니다.

1. NPC는 어떻게 구성될까?

NPC는 다음과 같은 요소를 포함합니다:

  • 위치: 맵 위의 좌표
  • 이미지: 고유의 캐릭터 스프라이트
  • 대사: 플레이어가 접근했을 때 출력할 텍스트

우선은 움직이지 않는 고정형 NPC로 시작하고, 추후에 이동 및 퀘스트 기능을 확장해보겠습니다.

2. 예제 NPC 스프라이트 준비

images/ 폴더에 `npc.png` 파일을 넣어주세요. (예: 48×48 픽셀)

무료 리소스 예시:
OpenGameArt.org – NPC Characters
Kenney Roguelike Characters

3. NPC 클래스 구현

class NPC:
    def __init__(self, image, pos, message):
        self.image = image
        self.rect = self.image.get_rect(topleft=pos)
        self.message = message

    def draw(self, screen, cam_x, cam_y):
        screen.blit(self.image, (self.rect.x - cam_x, self.rect.y - cam_y))

    def interact(self, player_rect):
        return self.rect.colliderect(player_rect)

4. 상호작용 로직

# NPC 생성
npc_img = pygame.image.load("images/npc.png")
npc1 = NPC(npc_img, (300, 300), "안녕하세요! RPG 세계에 오신 걸 환영해요.")
npcs = [npc1]

# 플레이어의 rect (충돌용 사각형)
player_rect = pygame.Rect(x, y, player.get_width(), player.get_height())

# NPC 상호작용 체크
for npc in npcs:
    if npc.interact(player_rect):
        print(npc.message)

화면에 텍스트를 출력하는 기능은 추후 추가하지만, 지금은 콘솔에 대사가 잘 뜨는지 확인해볼 수 있습니다.

5. 개선: 상호작용 키 추가

무조건 가까이 가면 출력하는 게 아니라, 플레이어가 E 키를 누를 때만 상호작용하게 바꿔보면 더 게임스러워집니다.

interact_pressed = False

for event in pygame.event.get():
    if event.type == pygame.KEYDOWN and event.key == pygame.K_e:
        interact_pressed = True

for npc in npcs:
    if npc.interact(player_rect) and interact_pressed:
        print(npc.message)

6. 화면에 대사 출력하기

대사를 콘솔이 아닌 게임 화면에 출력하고 싶다면:

font = pygame.font.SysFont(None, 28)
msg_surface = font.render(npc.message, True, (255, 255, 255))
screen.blit(msg_surface, (20, HEIGHT - 50))

이렇게 하면 하단에 텍스트 박스 느낌으로 표시할 수 있습니다.

7. 다음 강의 예고

5강 – 대화 시스템 구현: 여러 줄 대사, Enter로 넘기기, 대화 흐름 관리
다음 시간에는 NPC가 여러 줄의 대사를 출력하고, Enter 키를 눌러 다음 대사로 넘어가는 **간단한 대화 시스템**을 만들어보겠습니다. 드디어 스토리텔링이 가능한 RPG가 됩니다!

이 시리즈는 RPG 게임을 기초부터 하나하나 직접 구현하며 학습하는 실습형 강좌입니다. 캐릭터와 세계관이 점점 살아나는 경험을 함께 해보세요!