GG-Studio-990001 / Grayed-Game

Grayed Game Repo
MIT License
5 stars 0 forks source link

[CH2] CH2 설계 & ~Turn3 적용 #712

Closed wooyn730 closed 2 weeks ago

wooyn730 commented 1 month ago

작업1

접기

CH2 분기 엑셀이 업데이트 되면 프로젝트 내에서도 최신화를 유지해야함 공부할 것 - 구글 스프레드 시트 연동 방법 - 스크립터블 오브젝트란 - 유니티 커스텀 인스펙터 만드는 방법 작업 방식 - 플밍용 엑셀을 따로 판다 - 유니티 프로젝트 내에 특정 버튼을 누르면 업데이트 되도록.. 참고자료 - [[유니티] 구글 스프레드 시트(엑셀) 연동 1 - 가입](https://bonnate.tistory.com/262) - [[유니티] 구글 스프레드 시트(엑셀) 연동 2 - 유니티 연결](https://bonnate.tistory.com/263) - [[유니티] 구글 스프레드 시트(엑셀) 연동 3 - 데이터 가져오기](https://bonnate.tistory.com/264) 고민 - 현재 [CH2 스토리 분기 엑셀](https://docs.google.com/spreadsheets/d/1VRmG8Bv0I-4TSoCNACvhbK5IHR1_2LsF/edit?gid=1802129738#gid=1802129738)은 인간친화적이라 플밍용 엑셀을 따로 파는 게 나을 듯 - 수빈님이 턴 10까지 이미 작성을 해주셔서 변동이 엄청 크거나 잦을 거 같진 않긴 한데... 일단 도전 --- ## 메모 ### 구글 스프레드 시트 연동 메모) 추후 다른 사람도 관여한다면 테스트 사용자에 이메일을 추가해둬야함 문제1) `using GoogleSheetsToUnity;`에서 오류가 난다 어셈블리 정의 파일 문제인듯... 근데 `GoogleSheetsToUnity.asmdef`가 없음 => 직접 만들어줬더니 됐다..! 걍 이름만 정해줬더니 되네... 문제2) 나름 잘 따라했는데 `ArgumentOutOfRangeException: Length cannot be less than zero.` 에러가 뜸 => 몇가지 시도 끝에... 이는 공유문서함 파일을 가져와서 발생하는 에러라는 것을 확인함. 남이 생성하면 안되고 내가 생성하면 되는 것 같음..?? 일단 같은 루트에 [CH2 Branch](https://docs.google.com/spreadsheets/d/1mGlB8XE1-GcuMlUllwEH7tyCogMa6JkliMVS2Uw6AWI/edit?gid=0#gid=0) 파일 만들어둠 문제3) 개인정보 들어가있다고 push 안됨 => 일단 gitignore로 개인정보가 들어간 `GSTU_Config.asset` 빼주긴했는데... 플러그인 폴더도 그렇고 그냥 private 레포지토리로 프로젝트 관리하는 게 낫지 않을까? 문제4) 빌드하려고 하니 ![image](https://github.com/user-attachments/assets/3e85b60b-67c0-4c65-8088-d9cf156d8808) 오류가 뜸 이것도 어셈블리 정의 파일 이슈인듯 하....................... --- 예제 끝 내가 해볼 것

1 엑셀 수정 & 설계

~턴을 표시하는 Turn과 턴 내의 진척도를 표시하는 Progress로 나눈다. Turn은 1부터 시작하며 각 Turn의 Progress는 3 이상이다. Progress가 해당 Turn 내 최대 Progress를 초과하면 Turn은 1이 증가하고 Progress는 1로 초기화된다. Turn과 Progress는 진행도를 파악하기 위한 숫자이다.~ => 이는 기획적으로 소단원을 구분한 것이고 구현에는 Progress만 필요함. 0부터 1씩 증가하도록 설정.

스크립트는 N과 S로 나뉘며 S는 스토리 진행을 위해 필수적으로 확인하여야 한다. S 스크립트가 끝나면 Progress가 1 증가하며 N이 끝날 시에는 Progress가 증가하지 않는다.

장소는 x, o, 스크립트(N/S) 총 3가지로 표시되며 x는 이동 불가능하며 그 외에는 이동 가능하다. S 스크립트가 끝나면 Progress가 1 증가한 기준으로 이동 가능한 장소들이 표시된다. o는 장소 이동이 가능하되 스크립트는 출력되지 않는다. 스크립트는 최초 1회에만 출력된다.

스크립트에는 실행 가능한 다이얼로그 Title이 들어가야 하고 해당 스크립트가 N인지 S인지는 다이얼로그 내에서 확인 가능하다.

2 수정된 엑셀 적용

해당 프로그래스에 맞는 대사 출력, 이동 가능 장소 생성 S 스크립트 출력 후에만 프로그래스 증가

3 노말, 재방문 처리

image

Tmp2_3에서 C를 제외한 A, B, D를 가능한 장소로 출력. Tmp2_3에서 A로 갔다면 A를 제외한 B, C, D를 방문 가능 이미 방문(출력)한 적 있다면or O 표시라면 다이얼로그가 아닌 장소를 바로 띄워야 한다.

4 구글 스프레드 시트 연동

연동하여 가져오기

5 최종

장소 띄우기 진짜 스크립트 적용


작업2

고민

이미 출력한 대사 판별

yarn spinner에는 <<if visitied("노드이름")>> 기능을 제공하고 있으며 CH1 NPC들 대사에도 이 기능을 사용중임

하지만 CH2에서는 이 기능을 쓰기에는 다시 들릴 가능성이 있는 yarn 파일에 모두 조건문을 넣어야 해서 중복이 많고 길어질 듯 => 스크립트로 처리하는 게 나을 것 같다. => 해당 프로그래스에서 들린 적 있는 노드 이름을 가지고 있기?

구글 스프레드 시트 진짜 연동

관련해서 고민을 엄청했는데..... 삽질도 개많이 했는데 지금 그냥 csv 파일 읽어오는 방식을 이미 쓰고 있으니 csv 다운로드 코드만 써줘서 아주 간단하게 처리하는 걸로 정함........!!!!!!!!!!!!

wooyn730 commented 1 month ago

복귀 후 마저 작업할 예정입니다 생각보다 어렵고 ... 네....

현재 엑셀에 맞춰 장소 이동하는 거 빌드로 뽑아서 보여드리려고 했는데 빌드할 때 오류가 나네요 스크린샷 2024-10-13 024654 어셈블리 정의 때문인 거 같은데 계속 붙들고 있었는데 해결 못함..ㅠㅠㅠ GoogleSheetsToUnity가 UnityEditor에 대한 참조가 없어서 에러가 나는 거 같은데 해결 방법을 아직 못찾았어요.. 다른 에셋은 알아서 어셈블리 정의 파일 포함해주던데 얜 왜...?

암튼 그래서 브랜치는 아직 머지 안했고 시원님 작업 기준으로 회의록에 빌드 달아두었습니다.

roweclaw commented 2 weeks ago

고생하셨어요! 이제 챕터2의 모양이 그려지는 것 같아 좋네용~

그런데 빌드 확인해봤는데, Turn2의 3번부터 순서가 꼬인 것 같아요...! 원래 의도는 순서가 Turn2_3_S -> Turn2_4_S -> Turn2_4_N로 시작하는 N이벤트로 진행되어야 하며 장소 선택지의 순서도 창고 외관 -> 창고 내부 까지의 S이벤트가 끝난 뒤, N이벤트를 선택할 수 있는 장소들이 나오게 됩니다. 또한 창고 내부로 들어갔으면 창고 밖으로 나갈 수 있는 창고 외관만 선택 가능하며 광장, 골목길 등으로는 선택 불가능합니다. 이와 관련해서는 장소 구조 엑셀을 보시면 좋을 것 같아요!

즉, 이벤트의 우선순위는 해당 순번의 S이벤트가 제일 높기 때문에 S이벤트가 먼저 진행된 이후, 동일한 순번 안에 있는 N이벤트의 장소 선택지가 열리게 되는 구조입니다.

미리 말씀 드렸어야 하는데 놓친것 같아서 죄송하네요ㅠㅠ 이해 안되신다면 디코에서 다시 설명드릴게요!

wooyn730 commented 2 weeks ago

@roweclaw

장소 이동

제가 장소 구조 엑셀은 분명 보긴 했었는데 다른 거에 집중하느라 까먹었네요 죄송..ㅠㅠ 요거 수정하겠습니다

이벤트 순서

이벤트 순서는 제가 잘 이해하지 못한 거 같습니다... image Turn 2_4_S가 끝나면 다음 턴으로 넘어가는 거 아닌가요? 왜 Turn2_4_N이벤트로 가는 걸까요 흑흑...

이거 관련해서 다른 문서가 있었던가요? (분명 있었던 거 같아요.......... 분명 읽었던 거 같은데 어딨는지 모르겠다........)