Pygame으로 만드는 나만의 RPG 게임 8강입니다!
이번 강의에서는 RPG의 핵심 재미 중 하나인 **퀘스트 시스템**을 구현해보겠습니다. 이제 플레이어는 단순히 적을 처치하는 것을 넘어서, NPC로부터 퀘스트를 받고, 조건을 달성하여 보상을 받을 수 있게 됩니다.
—
1. 퀘스트 시스템 개요
우리가 이번 시간에 구현할 기능은 다음과 같습니다:
- NPC가 퀘스트를 제공
- 조건(예: 적 3마리 처치)을 만족하면 완료
- 보상으로 아이템을 지급
- 퀘스트 상태 표시: 미수락 / 진행 중 / 완료
—
2. Quest 클래스 정의
class Quest:
def __init__(self, name, description, goal_count, reward_item):
self.name = name
self.description = description
self.goal_count = goal_count
self.current_count = 0
self.completed = False
self.reward_item = reward_item
self.accepted = False
def check_complete(self):
if self.current_count >= self.goal_count:
self.completed = True
—
3. NPC와 퀘스트 연결
# 기존 NPC 클래스에 퀘스트 추가
class QuestNPC(NPC):
def __init__(self, image, pos, messages, quest):
super().__init__(image, pos, messages)
self.quest = quest
def offer_quest(self):
if not self.quest.accepted:
self.quest.accepted = True
return f"퀘스트 수락: {self.quest.name}"
elif self.quest.completed:
return f"퀘스트 완료! 보상: {self.quest.reward_item.name}"
else:
return f"진행 중... {self.quest.current_count}/{self.quest.goal_count}"
—
4. 퀘스트 생성
quest = Quest("슬라임 퇴치", "슬라임 3마리 처치", 3, potion)
npc2 = QuestNPC(npc_img, (400, 400), ["도와주세요!", "마을 근처 슬라임을 처치해주세요."], quest)
—
5. 적 처치 시 퀘스트 진행
# 전투에서 적 처치 후
if battle_enemy.hp <= 0:
enemies.remove(battle_enemy)
battle_mode = False
# 퀘스트 조건 진행
if npc2.quest.accepted and not npc2.quest.completed:
npc2.quest.current_count += 1
npc2.quest.check_complete()
---
6. 보상 지급 처리
if npc2.quest.completed and npc2.quest.reward_item not in inventory:
inventory.append(npc2.quest.reward_item)
print("보상을 받았습니다!")
---
7. 퀘스트 상태 출력
font = pygame.font.SysFont(None, 24)
text = font.render(npc2.quest.description, True, (255, 255, 255))
screen.blit(text, (20, HEIGHT - 100))
또는 더 자세한 상태를 출력하려면 `npc2.quest.current_count`와 `goal_count`를 함께 출력하면 됩니다.
---
8. 결과
- NPC가 퀘스트를 제안하고
- 플레이어가 적을 처치해 목표 달성 후
- 보상을 획득하게 됩니다
단계적으로 구조화된 퀘스트 시스템을 통해 게임에 목표와 동기를 부여할 수 있습니다!
---
9. 다음 강의 예고
9강 – 배경음악 및 효과음 추가: 전투, 대화, 이동 시 효과음 적용
이제 게임에 분위기를 불어넣을 차례! 다음 시간에는 배경 음악과 효과음을 추가해서 몰입감을 높여보겠습니다.
---
이 시리즈는 실제 RPG 게임 제작 과정을 단계적으로 배우며, 구조적 설계 능력까지 기를 수 있도록 구성된 실습형 강의입니다. 이제 게임 콘텐츠도 꽤 알차졌죠!