개발 일지
해치웠나(Did we get it) 제작일지 #01
해치웠나(Did we get it) 제작일지 #01
2020.11.10해치웠나는 조금은 라이트한 SRPG로 제작될 예정이며, 이에 따라 쿼터뷰를 쓰기로 했다. 탑뷰도 물론 나쁘진 않다만, 사용하려고 마음먹은 에셋으로 맵을 돌려보니까 둘의 그래픽 차이가 좀 나서 별로였음. 그리고 내가 RPGMaker식의 탑뷰에 질려 있기도 했고 말이다. 아무튼, 오늘 작업한 건 두가지다. 1. 타일 메이커 2. 아이소메트릭 카메라 타일 메이커는 작업의 효율성을 위해 만든다. 실제로는 에디터로 맵을 만들어놓고, 결과물을 전부 스태틱 & 라이트맵 처리를 해 버릴 것이다. JSON으로 데이터가 입출력을 할 수 있도록 만들 것이다. 아이소메트릭 카메라는 쿼터뷰의 축이 다른 카메라와는 다르다보니, 직접 만들어야 했다. 아래는 결과. Create 버튼은 테스트를 위해 랜덤으로 맵 내용만 바꾼다. 이후..
[Asset 제작 일지] 대화 시스템 만들기 14 : 선택지 시스템 업데이트
[Asset 제작 일지] 대화 시스템 만들기 14 : 선택지 시스템 업데이트
2020.10.12깃허브 이슈에 선택지 시스템 관련 요청이 와서, 스스로 생각했을 때도 필요한 기능이었으므로 업데이트했다. 1. DialogSelect/DialogSelectItem Class DialogData 하위에서 객체로 참조할 수 있도록 새 클래스를 만들었다. 내용은 사실상 Dictionary의 하위호환이다. DialogSelectItem은 string의 Key와 Value가 존재한다. DialogSelect에서는 이를 리스트로 만들어 참조하고, 추가한 순서대로 선택지를 표시한다. 그럼 왜 Dictionary로 구현하지 않았느냐? 나중에 JSON 데이터 입출력을 위해 시리얼화될지도 모르기 때문이다. SerializableDictionary 에셋 같은 걸 쓰면 간단하지만, 에셋스토어는 다른 에셋에 대한 의존성이 없..
[Asset 제작 일지] 대화 시스템 만들기 13 : 에셋 스토어 업로드
[Asset 제작 일지] 대화 시스템 만들기 13 : 에셋 스토어 업로드
2020.05.16에셋 스토어 업로드, 등록, 오류 업데이트 과정이 모두 끝났다. https://assetstore.unity.com/packages/tools/gui/d-dialogue-system-167312 D'Dialogue System | GUI 도구 | Unity Asset Store Use the D'Dialogue System from DoublSB on your next project. Find this GUI tool & more on the Unity Asset Store. assetstore.unity.com 올라간 링크! 훠우! 드디어 한 건 끝났다는 생각이 든다. 이 시스템 가지고 다시 개발을 시작해야겠군. 검토까지는 한달정도 걸렸다. 이번 글에서는 에셋을 업로드하기 위해 어떤 과정을 거쳐야 하는..
[Asset 제작 일지] 대화 시스템 만들기 12 : 프리팹 작업
[Asset 제작 일지] 대화 시스템 만들기 12 : 프리팹 작업
2020.04.20어, 우선. 애니메이션은 포기했다. 감각이 없었기 때문 (...) 어차피 State는 참조할 수 있게 되어 있으므로 에셋을 활용해서 유저가 만들 수 있을 것이다. 그렇고말고. 오늘은 별 건 아니고, 프리팹 작업을 했다. 에셋을 사용하고 싶다면, 유저는 DialogAsset이라는 프리팹을 씬에 넣기만 하면 된다. 그 후, Character 프리팹을 DialogAsset/Characters 하위에 추가한다. 다음으로는 Character 스크립트를 수정하기만 하면 끝이다. ^O^ 그리고 문제가 있어 조금 수정한 게 있다. #1 Character 참조의 불편함 Character 프리팹은 DialogAsset/Characters 하위에 들어가는데, 이를 참조하기 위해서는 스크립트에서 Character 자료형을 선..
[Asset 제작 일지] 대화 시스템 만들기 11 : 리팩터링
[Asset 제작 일지] 대화 시스템 만들기 11 : 리팩터링
2020.04.19이제 더러운 코드를 정리할 때가 왔다. 최근에 마틴 파울러의 리팩터링을 구매했고, 읽기 시작했다. 다는 아니지만. 책의 '3장 : 코드에서 나는 악취'파트를 참조해서, 이상한 부분을 찾아 고쳤다. 대상은 DialogBase.cs와 DialogManager.cs이다. 오늘은 11시쯤 시작해서, 새벽까지 좀 오랫동안 작업했다. #1 enum State의 기이한 이름 public enum State { Show, Texting, WaitForInput, Wait, Hide } - WaitForInput과 Wait의 모호함 - Show와 Texting의 모호함 >> Show, Wait는 쓰이고 있지 않은 State였다. 해당 enum을 지우고 생각해 보았다. 실제로, State는 실행, 대기, 비활성화의 3개만..
[Asset 제작 일지] 대화 시스템 만들기 10 : 태그 오류 해결하기
[Asset 제작 일지] 대화 시스템 만들기 10 : 태그 오류 해결하기
2020.04.17오우. 벌써 이 프로젝트 시작한 지 10일째라니. 생각한 것보다 에셋 제작 기간이 길어져 간다. 아무튼, 오늘은 정말로 size/color 동시 적용 오류에 대한 해결방법을 생각해서 왔다. color 태그를 닫을 때 size 태그도 동시에 닫는 것이다. 별건 아니지만 이걸로 해결될 것 같다. 백문이 불여일견이라고, 직접 짜고 난 다음에 돌아오겠다. #1 버그 해결 방법 dialogTexts.Add("/size:up/안녕. /size:down/내 이름은 /color:red/리/color:white/이다."); dialogTexts.Add("/color:white//size:80//color:green/이 구문에 오류가 있었지?"); dialogTexts.Add("하지만 해결했지."); 기존이라면 라는 식으..
[Asset 제작 일지] 대화 시스템 만들기 09 : 문장 데이터 불러오기
[Asset 제작 일지] 대화 시스템 만들기 09 : 문장 데이터 불러오기
2020.04.16어우, 어제가 총선이었는데 개표방송을 보느라 못 잤다. 덕분에 제정신이 아님. 커피 두 잔 마시고 살아있다... 아무튼 이어서 해 볼까. 진척은 거의 없을 예정이다. - 한꺼번에 많은 String 넘기기 List으로 데이터를 넘길 수 있게 만들었다. 그리고 그러다보니 오류가 발생했는데, 별 건 아니고 Hide 단계에서 StopAllCoroutine을 돌렸기 때문에, List이 반복문을 돌리지 못하고 죽어버리는 것이었다. 메인으로 돌리는 Texting 코루틴만 Coroutine 자료형에 집어넣고 Stop하여 해결. ...리팩토링 좀 해야겠다 진짜로. 아무튼, 이렇게 전달할 수 있게 되었다. - 하나의 String으로 한꺼번에 많은 데이터 넘기기 이건 split할 예정이다. `이나 \ 기호를 split 식별..
[Asset 제작 일지] 대화 시스템 만들기 08 : 커맨드 구현 (3)
[Asset 제작 일지] 대화 시스템 만들기 08 : 커맨드 구현 (3)
2020.04.15자, 저번 구현으로 글씨 색깔과 크기를 자유롭게 바꿀 수 있게 되었다. 남은 작업은 무엇인가? - 소리 재생하기 - 텍스트 재생 속도 변경하기 - 스킵 불가 - 상호작용을 해야 다음 텍스트로 넘어감 - 상호작용 하지 않아도 창이 닫힘 보아하니 크게 어렵지 않은 작업일 것 같다. 하나하나 구현하면서, 내용을 적도록 하겠다. #1 소리 재생하기 소리 재생하기는 사실상 부가 기능인데, 대사 재생 중에 각 캐릭터의 효과음을 재생할 수 있는 의도로 기획한 기능이다. Show("/emote:Sad/나는 이제 웃을 것이다./emote:Happy//sound:haha/ 하하.", character); 이렇게 하면 "하하"가 출력될 타이밍에 'haha'가 재생된다. 여담으로, 해당 스크립트 내에는 Play_ChatSE와..
[Asset 제작 일지] 대화 시스템 만들기 07 : 커맨드 구현 (1), (2)
[Asset 제작 일지] 대화 시스템 만들기 07 : 커맨드 구현 (1), (2)
2020.04.14비장한 BGM을 틀면서 작업을 했더니 강해짐을 느낀다. 하여간, 작업은 아마도 순조로운 상태다. 이걸 봐라. 멋지게 구현하지 않았는가. 해당 커밋 보러가기 Show("이것은 /size:17/대화창이다. /emote:Sad/하지만 /color:red/'언젠가는' /color:white/ 완성되겠지. /emote:Happy/^O^", character); #1 구현 구현은 이전과 마찬가지의 방법으로 진행했다. 그리고 닫는 태그는 어떻게 처리했느냐? 출력하는 텍스트와 마지막에 붙여질 텍스트를 구분하였다. 이렇게 하면, isColoring과 isSizing을 키는것만으로 color와 size 닫는 태그의 처리를 해줄 수 있다. 아래와 같은 방식으로 말이다. _coloring과 _sizing의 내용은 사실상 같아..
[Asset 제작 일지] 대화 시스템 만들기 06 : 커맨드 밑작업 (2), (3)
[Asset 제작 일지] 대화 시스템 만들기 06 : 커맨드 밑작업 (2), (3)
2020.04.13저번에는 커맨드 밑작업을 하고, 글자 색상과 글자 크기를 변경하는 법에 대해 미래의 나에게 맡기고 끝을 냈다. 그리고 그 미래의 내가 나다. 이런 젠장. 결론부터 말하자면, UGUI를 쓰는 이상은 구문 내에서 글자 색상/크기를 변경하기 위해 Rich Text를 사용해야 한다. 그렇다면 그 거지같은 태그도 결국은 사용해야 한다는 이야기다. 그러면 어떻게 구현을 할 것인가? 텍스트를 받아올 때 처음부터 구조를 변형하는 수밖에 없겠다. 저번에 DialogText를 삭제한다고 했을 때의 업보를 받게 되겠군. 흑흑... 오늘은 너무 늦게 작업을 시작해서 딱히 글을 쓸만한 내용은 없다. 아주 약간만 정리한다. 약간만. #1 DialogText Class 으으, 결국 만들었다. DialogText. string을 C..
[Asset 제작 일지] 대화 시스템 만들기 05 : 커맨드 밑작업 (1)
[Asset 제작 일지] 대화 시스템 만들기 05 : 커맨드 밑작업 (1)
2020.04.11저번 시간까지는 쉬운 에셋 사용 및 유지보수를 위해 Emotion 클래스를 개선했다. 밑작업은 했으니, 이제 다음 목표를 고려해보려 한다. - 글자가 출력될 때마다 소리가 나야 한다. (Ex : 키보드 소리, 사람 소리 등) - 문장 출력 도중 감정 표현을 위해 이미지가 변할 수 있어야 한다. - 글자를 빠르게 나오거나, 느리게 나오도록 만들 수 있다. - 글씨 색깔, 글씨 크기를 자유롭게 바꿀 수 있었으면 좋겠다. 이 세가지 목표를 고려했을 때, 입력 string에는 커맨드가 필요하다는 결론이 났다. string 내에서 지정된 문자열을 사용해 명령을 내릴 수 있도록 만드는 것이다. "(Emotion Smile) 안녕! (잠시 쉬었다가) (Emotion Normal) 내 이름은 (느려지기) ... (빨라..
[Asset 제작 일지] 대화 시스템 만들기 04 : Property Drawer 구현하기
[Asset 제작 일지] 대화 시스템 만들기 04 : Property Drawer 구현하기
2020.04.11저번에 이어서, Property Drawer의 구현이다. 오늘은 결론부터 가져왔다. 일단은 원하는 기획대로 구현이 되었기 때문에 성공. ...코드는 최악이지만 말이다. 정리를 전혀 안 해놨다. 날코딩의 결과를 보고 싶은 사람들은 이쪽으로. 해당 커밋 보러가기 코드에서 영 좋지 않은 냄새가 좀 많이 난다. 때문에 일단 차근차근 무엇을 구현했는지 쓰고, 코드를 좀 정리해보는 시간을 갖도록 하겠다. #1 버튼 PropertyDrawer에서 버튼을 구현하기 위해서 GUI.Button을 사용하였다. 보통 CustomEditor에서는 GUILayout.Button을 사용하는데, 이상하게 해당 구문을 쓰는 게 불가능했다. 이런 오류가 뜨는데, 찾아본 결과로는 Monobehavior를 상속하고 있는 클래스여야 GUIL..