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()