킹머핀의 제작 일지
스프레드 시트를 Construct 3 에디터로 옮기는 과정 본문
위 글에서 JSON의 참맛을 깨닫고 그것만 쓰겠다고 했지만, 역시 Construct 3 탭에서 작업하다가 구글 스프레드 시트 탭으로 넘어와 확장 프로그램으로 변환한 후 다시 Construct 3로 돌아와 덮어 씌우는 과정이 맘에 안 들어요. 그래서 결국엔 Construct 3 에디터로 모든 데이터 시트를 작성하기로 했어요.
그렇게 하면 잃는 것들이 있어요.
- 셀 안에 배열을 만들 수 없다. (문자열 분리 함수로 해결 가능, 배열의 모든 내용 전달이 용이)
- 경로(path)로 셀을 찾을 수 없다. 가장 치명적인 변화. (첫 번째 행과 열을 키워드로 이용하는 함수로 해결 예정)
성능 면에서 손해일 수 있지만, 걱정할 정도는 아닐 거예요. 아마도. 예.
지금 맥OS 몬터레이의 새로운 사파리 브라우저로 구글 스프레드시트의 셀을 Construct 3의 배열 편집기에 복제해봤는데, 'v'만 입력되고 붙여넣기가 안 되네요. 이유는 모르겠지만 어쩔 수 없이 크롬 브라우저로 전부 붙여놨습니다.
그리고 여러 개의 데이터 시트는 한 배열의 Z축으로 구분하려 했는데, 비어있는 셀이 너무 많아서 메모리 낭비될까 봐 여러 개의 파일로 분리했습니다.
이제 JSON을 이용한 모든 이벤트를 교체해야 합니다. 저는 키워드를 이용해 행과 열 번호를 찾는 함수를 선언하고, JSON 경로를 이 번호로 대체하고 있습니다. 나머지도 그에 맞게 교체해야 합니다.
- Has Key : 해당 셀이 빈 문자열이면 값이 없음.
- ArraySize : 셀 안의 문자열을 특정 문자를 기준으로 분리(tokencount)
그러려면 대사 파일을 어떻게 가져와 담아둘지 생각해봐야 합니다. 기존에는 챕터 별로 모든 시트를 통째로 한 파일에 담았는데, 지금도 그러려면 Z값으로 구별해야 할 테고, 그렇게 되면 숫자로 구별해야 합니다. (사전을 만들 수도 있지만, 오히려 복잡해질 것 같아요)
숫자로 구별하는 방법이 취약하다면 상황 별로 시트를 모두 개별 파일로 나누어야 하는데, 나중엔 이게 더 불편해질 것 같아요. 정 안 되면 나중에 사전을 써도 되므로, Z값(숫자)으로 구별하는 방법으로 만들겠습니다.
아, Z값으로 구별하면 비어있는 셀이 많다고 했지.. 게다가 대사는 마지막이 어딘지 알려면 행의 개수를 알 수 있어야 하는데 한 챕터의 모든 대사 파일을 Z값으로 통일하면 각 상황의 대사 길이를 알기 힘들어진다. 에휴 파일을 나누어야지.
폴더 째로 프로젝트에 업로드할 수 있으면 파일을 관리하기에 불편하지 않을 텐데. 아쉽게도 열려있는 프로젝트에 폴더를 업로드할 수는 없습니다. (Some files were not included as they were not valid for this folder.) 하지만 프로젝트를 폴더로 저장하고 그 폴더에 파일을 옮긴 후 프로젝트 폴더를 여는 방법이 있습니다. 이대로 진행하겠습니다.
데이터 시트와 대사 파일 모두 개별 파일로 분리하고 배열할 것이므로 하나의 객체로 인스턴스를 만들어 적용하기로 했습니다. 하나의 객체만 관리하면 되므로 함수 재사용이 용이해질 겁니다. (어쩌다 잘못되면 다 같이 망해버리겠지만 그런 일은 없길..)
쭉 하다보니 글만 주저리주저리 쓰고 있는데, 뭐 요즘 세대는 나보다 똑똑할 테니 필요한 정보는 척척 가져가겠지. ㅎㅎ
배열의 내용의 형식도 '수'일 수도, '문자열'일 수도 있다. JSON은 이런 형식을 구별하는 이벤트(Compare type)가 있지만 배열은 없다. 딱히 문제는 아니다. Construct 3의 시스템 이벤트에도 있으니까.
기존 JSON 기능을 자체 함수로 교체하다보니 실수로 파라미터와 다른 형식의 변수를 인수로 보낼까봐 신경쓰인다. Construct 3는 기본적으로 변수 형식이 서로 다르다면 입력이 불가하지만, 함수의 반환 형식이 'Any'거나 배열의 인덱스 값을 가져오는 등 형식을 명확히 알 수 없는 경우에는 입력이 가능한 문제가 있다. 이 때 수->문자열은 "NaN"이, 문자열->수는 ""이 돼버린다. 물론 사전에 방지해야겠지만, 알고 있는 게 좋을 것이다.
시스템 이벤트에는 수가 0이거나 문자열이 비어 있는지 체크하는 이벤트와 수가 NaN인지 검사하는 이벤트도 있다. 이런 디버그 이벤트가 있는 줄 몰랐네.
문자열->수는 몰라도 수->문자열은 자동 타입 변환 좀 해줬음 좋겠다. 그러면 안 좋나? 내가 프로그래머가 아니라서 모르겠네 ㅎㅎㅎ
'인디 게임 개발 > 개발 일지' 카테고리의 다른 글
리듬 노트 생성 시점 (0) | 2022.09.12 |
---|---|
부정형 함수와 긍정형 함수 중 문자열 유효성 판단에 무엇이 더 합리적일까 (0) | 2022.08.06 |
습관 오답 노트 (0) | 2021.07.01 |
로그) 작성법 변경 (0) | 2021.03.22 |
로그) 대사 출력 구현 (0) | 2021.03.04 |