전체 분류
[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..
[Asset 제작 일지] 대화 시스템 만들기 03 : Property Drawer 알아보기
[Asset 제작 일지] 대화 시스템 만들기 03 : Property Drawer 알아보기
2020.04.09지난번에는 Emotion 클래스를 완성했고, dictionary를 우회하여 배열 두 개로 입력할 수 있도록 해 보았다. 하지만 이대로는 배열 두 개일 뿐이고, dictionary처럼 보이지는 않는다. 그래서 Custom Editor를 활용하여 값이 보이는 방법을 다듬기로 했었다. 시작도 하기 전에 문제가 생겼는데, 만들었던 Emotion 클래스는 Monobehavior의 상속을 받지 않으므로, Custom Editor로 구현할 수 없었다. 이를 지원하기 위해 Monobehavior의 상속을 받지 않은 클래스도 보여지는 방식을 편집할 수 있도록, 유니티가 Property Drawer를 지원한다는 것을 알게 되었다. 유니티 Property Drawer 문서 보러가기 #1 PropertyDrawer 상속 받기..
[Asset 제작 일지] 대화 시스템 만들기 02 : 클래스 설계
[Asset 제작 일지] 대화 시스템 만들기 02 : 클래스 설계
2020.04.08지난 번에 이어서, Emotion을 저장해두고 해당 Emotion에 맞는 Sprite를 불러오기 위한 작업을 진행할 것이다. - Emotion의 자료구조 : Dictionary - Emotion의 데이터 저장 형태 : 텍스트 파일 목표는 이와 같았는데, 변경 사항이 생겼다. 첫 번째로, 데이터 저장 형태가 굳이 텍스트 파일일 필요가 없었다. Emotion의 string 데이터와 sprite 데이터 모두 메타 파일에 저장하면 되는 것이 아닌가? 오히려 텍스트 파일에 sprite를 넣으려면 경로를 저장해야 하므로 더 귀찮은 상황이 생겼다. 그래서 프리팹에 Emotion 스크립트를 넣고, 인스펙터로 값을 할당하기로 정했다. 두 번째로, 꼭 캐릭터마다 Emotion은 고정이어야 할까? 가령, A라는 캐릭터는 H..
[Asset 제작 일지] 대화 시스템 만들기 01 : 프로젝트 분석
[Asset 제작 일지] 대화 시스템 만들기 01 : 프로젝트 분석
2020.04.07만들고 싶은 게 RPG는 아니지만, RPG 만들기에서 사용하는 대화 표시 방식은 어느 게임에서든 쓸모있다고 생각한다. 하지만 개인 프로젝트였기 때문에 에셋을 받아 사용하고 싶지는 않았으므로, 직접 개발해보고자 한다. 이 에셋이 완성되고 나면 개인 프로젝트에 적극적으로 사용할 수 있을 것이다. 목표는 다음과 같다. 1. N프레임에 한 글자씩 출력되어야 한다. 2. 글자가 출력될 때마다 소리가 나야 한다. (Ex : 키보드 소리, 사람 소리 등) 3. 문장 출력 도중 감정 표현을 위해 이미지가 변할 수 있어야 한다. 4. 글자를 빠르게 나오거나, 느리게 나오도록 만들 수 있다. 5. 도중에 화면을 클릭하는 경우 한번에 문장이 출력되어야 한다. (스킵 기능) 6. 문장 데이터를 불러올 수 있어야 한다. 7. ..
해치웠나?! (2020, 1맵1치킨 대회 버전)
해치웠나?! (2020, 1맵1치킨 대회 버전)
2020.02.02안녕하세요, 쌍쌍뱌입니다. 알만툴 작품은 대단히 오랜만에 내는 것 같네요. 본 게임은 4회 1맵1치킨 대회 참여작입니다. 시간에 쫓긴... 결과물.... 빅 눈물 그 자체입니다. 플레이타임은 30분으로 예상하고 있습니다만, 헤매지 않으신다면 15분 정도 걸릴 수 있겠네요. 스테이지는 총 3개입니다. 제가 만든 게임답지 않게 난이도가 쉬운 편입니다만, 모처럼 열심히 시스템을 만들었는데 게임 스테이지를 구현할 때 시간에 쫓겼기 때문입니다 ㅎㅎ; 이후 원맵이 아닌 형태로 다시 제작하려고 합니다. 기대해주신다면 감사하겠습니다. 플레이 영상 녹화 및 스트리밍은 제작자 닉네임인 "쌍쌍뱌"를 올바르게 표시하는 한 영리적으로 이용하실 수 있습니다. 올바르게요. 제 닉네임에 맺힌 한을 잊지 마십시오... 다운로드 링크 ..