첫번째로 히로인 세번째 디자인...
첫번째는 아줌마같다는 지적을 받고 두번째는 동남아시아 원주민 같다는 지적을 받아 수정했다.
각설하고,
핫라인 마이애미같이 전투 - 스토리 - 전투 - 스토리 같은 게임 루프를 만든다고 할때
당연하게 스토리 파트에서는 대화시스템이 들어가야 한다는 사실을 깨달앗다.
언젠간 만들어야지 만들어야지.. 하고 생각만 했는데 막상 하려니까 막막했다.
일단 내가 생각해낸 문제점들은
1. 어떻게 대화 트리를 구현하지?
2. 대화 트리에 들어갈 대사들은 어디에다가 적지?
3. 어떻게 손쉽게 대화트리를 작성하고 멀티랭귀지를 지원하게 하지?
였다.
물론 대화시스템을 잘 소화하게 해주는 무슨무슨 에셋같은게 있는건 알지만
바퀴의 재발명을 좋아하는 나는 이번에도 저번에 한 이진세이브 파일 비스무리하게
간단한 독자 대화스크립트 규격을 구현하기로 했다.
대충 실험용으로 작성해본 대화트리 스크립트.
Json으로 페어런팅을 사용해서 스크립트를 구현할수 잇었을...지도 모르겠지만
이상하게 나는 Json을 사용할 기회가 있을때마다 독자규격 데이터타입을 만들게 되었었다...
이건 그냥 특정 포맷을 따른 txt 파일인데, 간단하게 선택지가 있을때마다 Tab 을 쳐서 분기를 구현한다.
다시말해서, 이 간단한 txt 파일은 유니티랑은 완전히 분리되어잇는 구조이기에,
한국어든 일본어든 영어든 러시아어든 이 txt 파일만 번역해 교체하면
게임상에선 자동적으로 번역된 파일을 읽어와 출력해줄수 있게 된다.
유니티상에선 이 포맷을 따른 파일을 읽어들여 트리구조를 형성하고
선택지가 있을때마다 컴백포인트를 설정하고, 특정분기 대화가 끝이나면 컴백포인트 대화 노드로 돌아와
대화를 이어나가는 식으로 구현했다...
간단한 DFS 방식인데 코드도 몇줄안되고, 공부를 안한 나에게는 구현하는게 어려웠다...
결과물. 각각 대사를 파싱해서 좀더 그럴듯한 비주얼 노벨식 프리젠테이션을 만들수 있지만
일단 기본적인걸 구현한데에서 힘이 들어 이 개발일지를 적는다...
오늘의 개발일지 끗
대사를 저렇게 관리하면 가독성 구릴거같은데... 유니티 내장 에디터용 그래프 쓰거나 트리구조 써서 대사관리용 툴을 만드는게 낫지않을까? - dc App
1. VSC로 적으면 탭 분기점 여닫기 가능해서 가독성 그닥 안구림 2. 유니티 내장 에디터용 툴을 만드는 순간 스크립트랑 유니티랑 합체되서 번역시 어려움이 많음
흠단순히 텍스트와 캐릭터 이미지 출력하려면 탭으로 해도 상관없지만 나중에 표정변화나 효과음 넣는 확장성 고려할때쯤엔 골머리좀 썩지 않을까 생각함