86 캐릭터 생성기 (Character Generator)
패스파인더(Pathfinder)나 디비니티: 오리지널 신(Divinity: Original Sin)과 같은 게임에서 사용할 수 있는 무작위 캐릭터 생성 도구를 만들어 봅시다. 처음에는 단순히 능력치를 무작위로 할당하는 것부터 시작하여, 점차 AI를 도입하여 더욱 정교하고 흥미로운 배경 스토리를 가진 캐릭터를 생성하도록 발전시킬 수 있습니다.
RPG 게임의 복잡한 규칙을 코드로 구현해 보는 것은 매우 즐거운 도전입니다. 캐릭터의 종족, 직업, 기술, 장비 등을 체계적으로 관리하고, 이를 시각적으로 보여줄 수 있는 캐릭터 시트 생성 기능까지 추가해 보세요.
86.1 주요 개발 포인트
- 무작위 능력치 및 속성: 종족(Race), 직업(Class), 힘/민첩/지능 등의 능력치를 주사위 굴림 방식으로 결정합니다.
- 게임 규칙 적용: 특정 직업이 가질 수 있는 기술이나 보너스 능력치 등의 복잡한 룰을 로직으로 구현합니다.
- AI 기반 배경 스토리: OpenAI API 등을 활용하여 캐릭터의 과거사, 성격, 목표 등을 자동으로 작성합니다.
- 캐릭터 시트 출력: 생성된 정보를 JSON 형식으로 저장하거나 PDF 파일로 변환하여 출력합니다.
86.2 Python 구현 예시 (간단한 판타지 캐릭터 생성기)
import random
class CharacterGenerator:
"""
RPG 캐릭터의 기본 정보를 생성하고 관리합니다.
"""
def __init__(self):
self.races = ["인간", "엘프", "드워프", "오크", "하프링"]
self.classes = ["전사", "마법사", "도적", "사제", "궁수"]
def roll_stats(self):
"""
3d6 주사위 굴림 방식으로 능력치를 결정합니다.
"""
return sum(random.randint(1, 6) for _ in range(3))
def generate(self):
"""
새로운 무작위 캐릭터를 생성합니다.
"""
race = random.choice(self.races)
char_class = random.choice(self.classes)
stats = {
'STR': self.roll_stats(),
'DEX': self.roll_stats(),
'INT': self.roll_stats(),
'CON': self.roll_stats()
}
print(f"\n--- 신규 캐릭터 생성 완료 ---")
print(f"종족: {race} | 직업: {char_class}")
print(f"능력치: {stats}")
# 간단한 배경 스토리 생성 예시
backstory_prompts = [
f"과거에 {race} 마을의 전설적인 {char_class}였습니다.",
f"버려진 유적에서 우연히 강력한 힘을 얻은 {race}입니다.",
f"세상을 떠돌며 진정한 {char_class}가 되기 위해 수련 중입니다."
]
print(f"배경: {random.choice(backstory_prompts)}")
if __name__ == "__main__":
generator = CharacterGenerator()
# 3명의 무작위 캐릭터 생성 테스트
for _ in range(3):
generator.generate()