[1인개발] 평범한 덕후의 좌충우돌 1인 동인게임 개발 도전기 ①
지난 글에서는 비주얼 노벨 게임의 필수 요소인 캐릭터 스탠딩 이미지와 배경 이미지를 만든 과정을 다뤘습니다. 글에서는 생략하고 넘어갔지만, 배경 이미지 작업은 스크립트 코딩과 동시에 진행했죠.
정확히는 스크립트에 대사와 나레이션 등의 '내용 텍스트'와 대사에 맞는 캐릭터 이미지를 넣으면서, 그때그때 필요한 배경을 실시간으로 제작해 스크립트에 바로 끼워 넣었습니다. 3D로 제작한 세트장 수는 55개로, 그 안쪽에서 카메라 앵글을 바꾸거나 낮과 밤을 바꾸거나 폭발, 피, 가속 등의 연출을 넣어 사용하다 보니 실제 완성된 배경 이미지 수는 300장이 넘네요.
기본적으로 스토리를 진행하는 데에 필요한 텍스트와 캐릭터, 배경이 완성됐으니 이제는 게임을 좀 더 꾸밀 차례죠. 이벤트 CG를 그리고, 게임의 GUI를 편집하는 일이 남았습니다.
# 3D 세트장을 만들고 나니 이벤트 CG 배경도 한방에 해결되더라
이벤트 CG 자체는 그동안 3D로 배경을 만들던 작업에 비하면 무척이나 쉬운 작업이었습니다. 원래 하던 대로 그림을 그리고, 완성된 3D 세트장에서 배경을 찍어 합성하면 끝이었으니까요.
단지 개인적으로 힘들었던 건, 평소라면 시도하지 않았을 앵글의 그림에 도전한다는 점 때문에 어려움을 느꼈습니다. 솔직히 말해서 취미로 그림을 그릴 땐 항상 '그리기 쉬운 자세와 앵글'만 그리다가 갑자기 게임 화면 사이즈에 맞춰서, 작 중 상황에 맞는 자세를 그려야 했으니까요.
이 부분에서 어려움을 느낀 건 순전히 필자의 그림 실력이 엉망이었다는 게 원인인지라... 몇 번씩 연습을 거치며 그릴 수밖에 없었습니다. 정말 그림을 본업으로 하는 분들은 대단한 분들이에요.
그나마 다행인 건 배경을 3D 세트장으로 완성해둔 덕분에 어떤 위치에 어떤 앵글의 그림이라도 배경 때문에 골머리를 썩일 일이 없다는 정도일까요?
약 1주일의 작업 끝에 이벤트 CG가 완성되어, 드디어 시작부터 엔딩까지 진행 가능한 버전이 완성됐습니다.
이렇게 생긴 배경을 3D로 만들어 놓고 나니까.
캐릭터 그림을 그린 뒤 앵글에 맞게 카메라만 옮기면 배경이 뚝딱 완성!
# 스크립트 코딩할 땐 쉬운 줄 알았지? GUI의 세계에 온 걸 환영해!
게임의 스토리 진행과 관련된 이미지 작업이 완료됐으니 이제는 스토리 외적인 게임의 구성 요소를 손볼 차례입니다.
사실 게임의 기본적인 틀 자체는 처음부터 어느 정도 만들어져 있습니다. 렌파이 툴에서 새 게임을 생성하면 기본적인 메뉴 기능이 대부분 지원되는 상태로 프로젝트가 만들어지거든요. 물론 디자인적인 요소는 없는 거나 마찬가지지만요.
이번에 할 일은 그 기본 기능 부분의 디자인을 바꾸는 것이었습니다. 시스템 폰트로 표시되는 메뉴를 이미지 버튼으로 바꾼다든지, 메뉴의 배경을 바꾼다든지, 텍스트박스의 형태를 바꾸고 메뉴 항목을 변경하는 등의 커스터마이징 과정이죠.
시스템 폰트로만 구성된, 문자 그대로 '기본 형태'죠.
렌파이 툴 자체가 파이썬 언어를 기반으로 만들어진 거긴 하지만 필자는 그 파이썬조차 제대로 모르는 프로그래밍 문외한... 제대로 프로그래밍 공부를 해본 적은 아예 없었습니다. 그나마 뭔가 만져볼 줄 아는 건 일 하면서 배운 html이 고작인데, 그조차도 기초적인 정도죠.
그나마 대충 모양을 보니까 어떤 부분이 버튼인지 정도는 알 수 있겠더라고요.
이미 게임에 배치된 이미지(메뉴 배경, 스크롤 바, 세이브슬롯 선택 등)를 바꾸는 건 쉽게 진행됐습니다. 그건 크기만 맞춰서 새로 만든 이미지 파일을 덮어씌우면 그만이니까요.
하지만 게임 내 메뉴를 수정한다든지 기능을 추가한다든지 하는 건 해외 포럼 등의 제작 사례를 최대한 찾아볼 수밖에 없었습니다. 해외에서도 적어도 한 명은 나와 같은 고민을 하고 질문을 올리지 않았을까 하는 심정으로요.
결론부터 말하자면 '그렇게 운 좋게 나와 같은 질문을 하고 답변을 받은 사람' 따윈 없었습니다. 세상일이 다 그렇죠. 하지만 다른 부분에 대한 설명 등에서 힌트를 얻어 어찌어찌 길을 찾을 수는 있었습니다.
해외 포럼에 올라온 제작 사례 등에서 필자에게 필요한 코딩 정보가 있는지 필사적으로 찾아봤습니다.
그래도 기본적인 형태는 잡혀있다 보니, 하나씩 찬찬히 뜯어보면 기능을 알 수 있었습니다.
단지 기본 형태에 없는 내용을 넣어야 할 땐 '뭘 넣어야 하는지' 모를 뿐...
이미 있던 메뉴를 빼버린다든지, 텍스트 속도의 기본값을 설정한다든지 하는 건 비교적 쉽게 찾아서 해결할 수 있었습니다. 하지만 필자를 가장 괴롭힌 건 바로 '이미지 갤러리'와 '메뉴별 이미지 타이틀'이었습니다.
이미지 갤러리의 경우 대부분의 비주얼 노벨 게임에 필수적으로 들어가는 기능이죠. 스토리를 진행하면서 이벤트 CG를 하나씩 볼 때마다 갤러리에서 하나씩 열리는 그 기능이요.
하지만, 렌파이 툴에서 기본적으로 생성되는 프로젝트엔 그 기능이 없었습니다. 물론 공식 홈페이지의 매뉴얼에는 갤러리 기능을 넣는 설명이 있긴 했는데 너무 옛날 버전이라 현재의 렌파이 버전과 맞지 않기도 했고요.
게다가 그 옛날 버전 코딩을 머리 싸매고 하나씩 실험해가며 편집해서 넣어도 결과물은 참담한 상태. 필자가 만든 게임은 스토리 진행 외의 기능(세이브, 로드, 옵션 등등)을 열 땐 화면 왼쪽에 메인 메뉴가 뜨도록 디자인되어 있는데, 옛날 버전 갤러리를 넣으니 그 메뉴가 표시되지 않는 문제도 발생했습니다.
대체 왜 제대로 안 되는 걸까 고민도 많이 하고, 시험 삼아 다른 메뉴 스크린에 있는 코딩을 하나씩 복사해서 붙여넣기도 해보고, 스크립트를 하나씩 찬찬히 읽어보면서 이게 어떤 기능인지 연구했습니다. 일단 눈 앞에 펼쳐진 프로그램 언어가 무슨 뜻인지는 알아야 대처를 할 테니까요.
그 결과 며칠에 걸친 삽질 끝에 필자의 게임에 맞는 이미지 갤러리부터 해서 하나씩 문제를 해결해나갈 수 있었습니다. 물론 그런 자체 분석으로는 도저히 해결할 수 없어 이곳저곳에 물어보고 다니며 몇 주씩 걸려 방법을 찾은 부분도 있었지만요.
우여곡절 끝에 이미지 갤러리 완성! 직접 새로운 기능을 추가해 넣은 건 이것밖에 없네요.
렌파이에서 지원하는 기본 기능이 워낙 잘 돼있어서 '꾸미기'에 집중하는 식으로 GUI는 마무리!