전체 분류
해치웠나(Did we get it) 제작일지 #05
해치웠나(Did we get it) 제작일지 #05
2020.11.28오늘은 제작일지라기보단 계획에 가깝다. SRPG이다보니 좌표 중심의 구현을 하려 하는데, 헷갈리는 게 한 둘이 아니라서 써보면서 생각하려 한다. 우선 이 맵부터. Size로는 10x5의 맵이다. 좌표계를 우측 모서리가 x라고 치고, 박스가 있는 위치를 말하면 (0, 3)이다. ...이것부터 좀 고통스럽다. 0부터 시작하는 좌표계로 연산을 하면 사람 머리에서 헷갈리고, 그렇다고 1부터 시작하는 좌표계로 연산을 하면 코딩할 때 헷갈린다. 일단은 1부터 시작하는 좌표계를 사용하려고 하는데, 미래에 버그가 많이 난다면 여백을 준비해뒀으니 불만을 토하길 바란다. 내가 보기엔 훗날 100퍼센트 이 아래에 뭔가 써질듯. 제정신이냐 타일과 오브젝트는 분리하여 구현해야 할 것 같다. 타일은 게임 실행 내내 변동되지 않는..
[C#] WinForm으로 간단한 카운터 프로그램 만들기
[C#] WinForm으로 간단한 카운터 프로그램 만들기
2020.11.26개인적인 용도로 메모용의 카운터가 필요했는데, 가볍고 작게 만들어진 프로그램이 없어서 직접 만들기로 했다. 아래는 실제 구현된 결과이다. 필요 기능 정리 바탕화면에 둘 수 있는 작고 간편한 카운터를 원했기 때문에, 다음 기준을 만족시켜야 했다. - 좌클릭하면 증가 - 우클릭하면 감소 - 0으로 리셋 가능 - 원하는 숫자로 설정 가능 - 프로그램을 종료했을 때에도 마지막 숫자를 가져올 것 구현 윈도우 폼으로 구현했다. 간편하게 GUI 환경에서 프로그램을 만들 수 있어서 선호한다. 위쪽으로 Label을 배치하고, 아래에는 작은 pictureBox를 달았다. pictureBox를 눌렀을 때 메뉴가 뜰 수 있도록 contextMenuStrip을 배치했다. Reset을 클릭하면 카운터가 0이 되도록 메서드를 연결..
해치웠나(Did we get it) 제작일지 #04
해치웠나(Did we get it) 제작일지 #04
2020.11.13에디터 제작 4일째. 기존에 MapMaker에서 MapTool을 분리해 클래스를 새로 만들고 정비했다. 결과, Tiles, Height, Object를 선택할 수 있게 되었다. Tiles에서 타일 색을 고르고, Height에서 타일의 높이를 선택, object에서 타일 위에 올릴 장식물을 선택할 수 있다. 그래서 이런 게 가능해졌다. 이제 나무도 오브젝트에 넣고, 길도 깔고 하는 등 대대적으로 내부 내용을 손 보면 되겠다. UI에 3D 오브젝트를 올리고 싶어서 이것저것 찾고 있었는데, 임시로 캔버스를 카메라에 렌더하도록 설정했다. forum.unity.com/threads/what-is-the-best-way-to-display-3d-models-as-ui-elements.343205/ 도움을 받은 게시..
해치웠나(Did we get it) 제작일지 #03
해치웠나(Did we get it) 제작일지 #03
2020.11.12오늘은 친구인 바모씨가 라이트 설정에 대해 알려줘서 적용하고 왔다. 컬러 스페이스는 두 가지로 나뉘어지는데, 리니어와 감마이다. 리니어에서 블렌딩 결과는 예상하는 결과 그대로지만, 감마에서는 채도와 밝기가 과도하게 높아진다고 한다. 따라서 리니어에서는 강한 빛 아래서의 색 표현을 훨씬 풍부하게 할 수 있다고 한다. 실제로 바모씨의 조언은 '아트님들이 라이트는 리니어로 하랬어!'였으니까, 리니어로 적용해보는게 낫겠다. 그러나 이런 그래픽적 이슈를 들고 왔을 때 언제나 궁금해지는 건 성능 이슈가 아니던가. forum.unity.com/threads/linear-vs-gamma-color-space-for-android.573175/ Linear vs Gamma color space for Android He..
해치웠나(Did we get it) 제작일지 #02
해치웠나(Did we get it) 제작일지 #02
2020.11.11에디터 개발 진행중이다. 위는 약식으로 테스트를 돌려 본 화면이고, 코드상에서는 에딧을 할 수 있도록 밑작업을 했다. 다만 현재 일일이 왼쪽 마우스로 타일을 클릭해야만 작동하는데, IPointerDown으로 진행했기 때문이다. 드래그해도 편집할 수 있도록 변경이 필요해 보인다. 타일의 높낮이를 설정하는 것도 필요한데, 이는 타일 변경과는 다른 방법으로 해야겠다. 게임에서 모딩을 지원하는 것이 아니기 때문에, 에디터는 나만 알아볼 수 있으면 될 듯 하다. 설-마 모딩을 지원할까. 그런 일은 일어나지 않았으면 좋겠다. 미래의 나. 코드 작업만 하면 실질적인 결과물은 많이 보여줄 수 없어서 아쉽다. Private로 작업하니까 코드를 올릴 수 있는 것도 아니고. 배칭 문제가 Static으로 해결되는지 알고 싶어..
해치웠나(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 에셋 같은 걸 쓰면 간단하지만, 에셋스토어는 다른 에셋에 대한 의존성이 없..
그래픽(스프라이트) 없이도 UI Raycast하기
그래픽(스프라이트) 없이도 UI Raycast하기
2020.08.04보이지 않는 특정 영역을 Raycast하고 싶을 때가 있다. 이 경우 이전에는 새 게임오브젝트에 이미지를 만들고, 유니티 기본 그래픽으로 들어 있는 'UIMask'를 사용해 Raycast를 처리하였으나, 비효율적이라는 것을 깨달았다. - 보이지 않는 이미지이나 사실은 조금은 불투명한 이미지가 깔린다. (UIMask) - 어쨌든 이미지를 그리는 것이므로 배칭을 먹는다. - 이런 오브젝트가 많아질 수록 UI 최적화에 문제가 생길 수 있다. 해결 방법은 아래의 게시글에서 찾았다. https://answers.unity.com/questions/1091618/ui-panel-without-image-component-as-raycast-target.html UI panel without Image compone..
[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 올라간 링크! 훠우! 드디어 한 건 끝났다는 생각이 든다. 이 시스템 가지고 다시 개발을 시작해야겠군. 검토까지는 한달정도 걸렸다. 이번 글에서는 에셋을 업로드하기 위해 어떤 과정을 거쳐야 하는..
LINQ Method 정리
LINQ Method 정리
2020.05.06본 글은 공부하며 작성하였습니다. 정보를 얻으실 때 사실과 다르거나 부정확한 정보가 들어있을 수도 있습니다. LINQ의 Method를 정리한다. 예제는 마이크로소프트 문서 또는 본인 코드. Aggregate 데이터를 누적하여 집계한다. 원하는 규칙을 정해 데이터를 가공한다고 생각하면 된다. string[] fruits = { "apple", "mango", "orange", "passionfruit", "grape" }; // Determine whether any string in the array is longer than "banana". string longestName = fruits.Aggregate("banana", (longest, next) => next.Length > longest.L..
~05/02 Log
~05/02 Log
2020.05.02
[Asset 제작 일지] 대화 시스템 만들기 12 : 프리팹 작업
[Asset 제작 일지] 대화 시스템 만들기 12 : 프리팹 작업
2020.04.20어, 우선. 애니메이션은 포기했다. 감각이 없었기 때문 (...) 어차피 State는 참조할 수 있게 되어 있으므로 에셋을 활용해서 유저가 만들 수 있을 것이다. 그렇고말고. 오늘은 별 건 아니고, 프리팹 작업을 했다. 에셋을 사용하고 싶다면, 유저는 DialogAsset이라는 프리팹을 씬에 넣기만 하면 된다. 그 후, Character 프리팹을 DialogAsset/Characters 하위에 추가한다. 다음으로는 Character 스크립트를 수정하기만 하면 끝이다. ^O^ 그리고 문제가 있어 조금 수정한 게 있다. #1 Character 참조의 불편함 Character 프리팹은 DialogAsset/Characters 하위에 들어가는데, 이를 참조하기 위해서는 스크립트에서 Character 자료형을 선..