게임에서 대화 시스템
게임에서 대화시스템은 종종 사용되며, 장르에 따라 핵심 시스템이 되기도 한다.
대표적인 예시로는 미연시 게임이나 추리 게임 등등이 있을 것이다.
게임을 제작하기 위해 대화들을 하나하나 게임 내 스크립트에 입력할 수는 없을테니 데이터베이스를 사용해야할 것이다.
이번 글에서는 해당 방법에 대해 간단하게 알아볼 것이다.
Scene 테이블과 String 테이블
Scene 테이블은 게임에서 하나의 장면을 관리하는 테이블이다.
자세하게 설명하자면 1번 Scene에서는 A가 주인공에게 말을 걸고 선택지를 주거나, A가 끊임없이 주인공에게 정보를 전달하거나, 주인공의 선택에 따라 호감도가 변화하는 등을 체계적으로 관리할 수 있다.
게임에서 대화 시스템은 매우 간단하게 보여지지만, 게임들의 세부적인 특성에 따라 달라질 수 있는 요소가 많다.
아래가 그 예시이다.
- 대화 선택지
- 호감도 변화
- 전투로 이동
- 선택지를 고르기 위해 필요한 아이템 존재 유무
- 대화
- A가 B에게 말하는 정상적인 대화
- 독백
- 시스템이 나에게 말을 거는 대화
- 보이지 않는 시스템
- 대화 사이 시간 간격
- 대화 시 소모되는 에너지
이제 테이블에 대해 간략하게 설명하겠다.
Scene_Master 테이블은 위에서 설명했다 싶이 하나의 장면에 따라 일어나는 시스템적 기능들을 정리해 놓은 테이블이다.
어떤 Scene에 어떤 대사를 누가, 어떻게 했는지 등을 정리하였다.
아래 테이블에서는 Scene_Day, Scene_Sub, Scene_Detail 컬럼으로 Scene_Code를 정의한다.
그 이유는 게임 내 날짜와 장소에 따라 Scene을 명확하게 구분함에 있고, Scene_Detail은 Index를 정의하기 위해 필요한 컬럼이다.
이 때, 대사는 String_Master를 참조한다. 그 이유를 모른다면 아래 연결된 글을 참고바란다.
다음으로 String_Master에서는 게임 내에 들어갈 실질적인 텍스트 데이터를 정리한 데이터테이블이다.
이 데이터에서 하단에 보면 String_1_0_1과 String_1_0_2는 Anna와 플레이어가 적혀있는데, 이 데이터는 대화의 주체자를 명시하기 위해 Nickname과 같이 사용하기 위해 적혀진 데이터이다.
적용 예시
아래는 위 DB를 사용하여 게임 내에 대화 시스템이 있다는 것을 가정하고 간단하게 만든 예시이다.
위에서 테이블로 표현된 데이터들을 모두 이 그림으로 표현할 수는 없겠지만, 많은 부분이 이해될 것이다.
'게임 개발 > 기획' 카테고리의 다른 글
로컬라이징(국가에 따른 언어)을 위한 DB 작성 (0) | 2025.04.02 |
---|---|
Dungeon Scrawl - 레벨 디자인 툴 (2) | 2024.11.16 |
게임잼을 위한 축소된 기획을 하는 법 (0) | 2024.01.23 |