티스토리 뷰
숙소 커스터마이즈
오늘부터 숙소 커스터마이즈 관련 기능 작업을 시작했다.
숙소의 경우
1. 10x10 타일 사이즈로 땅을 원하는 만큼 원하는 위치에 구매할 수 있어야 하며(기존에 구매한 영역과 연결은 되어 있어야 함)
2. 벽과 바닥 타일을 원하는 형태로 수정 가능해야 하고
3. 여러가지 오브젝트를 설치 가능해야 한다
는 조건을 갖고 있다.
이 때 1번 조건으로 인해 사용자가 땅을 어떤 형태로 살 지 알 수가 없고 이 때문에 전체 맵을 단순한 배열에 저장하는 것은 불가능해진다. 그렇다고 전부 dictionary에 박아버리면 타일 개수가 엄청 많을텐데 이거대로 효율이 떨어진다. 이런 경우 적당한 사이즈의 chunk로 분할해 각 chunk는 배열 형태로 관리하고 chunk들의 관계는 dictionary 등으로 관리하는 형태가 무난하다. 어차피 10x10 사이즈로 땅을 구매하기 때문에 타일 정보는 10x10 사이즈의 배열로 구성된 chunk들의 dictionary로 저장하기로 했다.
세번째의 오브젝트 설치, 배치 수정은 그다지 어렵지 않고, 2번 조건이 조금 문제인데 벽의 경우 auto tile(주변 벽에 따라 모양이 바뀌는 것)이어야 한다. 구현이 조금 짜증나기도 하고, 더 문제가 됐던건 벽의 아래쪽 부분.
오토 타일에 쓸 벽 이미지인데, 검은 부분(벽의 위쪽 통행 불가 부분)은 별 문제가 안되는데 아래쪽 실제 벽 부분이 문제다. 실제로 설치하는 벽은 검은 부분이 될 거고 이 검은 부분에 따라 아래쪽에 실제 벽들이 자동으로 따라 생기게 만들어야 하는데, 이미 해당 벽 위치에 다른 오브젝트가 있다거나, 벽 - 벽 사이 간격이 좁다거나 할 때 여러 가지로 문제를 일으킬 가능성이 많다.
일단은 1. 벽을 깔면 자동으로 아래쪽 벽도 생기며, 2. 벽과 벽 사이의 간격이 좁을 경우 그냥 두 벽을 합쳐버림 3. 한 칸만 지울 경우 아래 벽이 생길 공간을 포함해서 두 칸을 지워버림 4. 아래쪽 벽 위치에 오브젝트가 있어서 벽을 설치할 수 없는 경우 벽 설치를 금지함 정도의 조건을 갖고 벽을 깔 게 만들기로 했다. 사용자가 불편해한다거나 비직관적으로 느낄 수 있을 것 같은데 만들어봐야 알 것 같아서, 일단 만들고 테스트해본 다음 불편하다면 다른 방안들을 고민해보기로.
chunk 정보 이용해서 바닥 타일만 렌더링 + 편집용 커서 이용해서 돌아다니는 것 구현해서 확인.
벽 오토 타일까지 구현 완료한 것.
벽 배치 테스트. 위에서 적은 제약 사항은 아직 적용 안 했고, 벽 까는게 잘 되는지만 먼저 확인.
벽 배치 제약 사항 적용 테스트해본 것. 벽 아래에 항상 두 칸의 여유 공간이 있게 만들었다. 다행히 테스트해보니 그다지 불편하다거나 직관적이지 못하는 느낌이 들지 않아 이대로 진행해도 될 것 같다. 이거랑 더불어 서로 다른 종류의 벽을 섞어서 쓰는 것도 잘 되는지 테스트해 보았다.
UI 약간 붙인 것. 설치할 타일 / 벽 종류 정하는 것까지 구현하면 일차적으로 필요한 기능은 다 사용가능할 것 같다.
'개발 일지 > Programming' 카테고리의 다른 글
2020-03-25 숙소 커스터마이즈(3) (0) | 2020.03.25 |
---|---|
2020-03-24 숙소 커스터마이즈(2) (0) | 2020.03.24 |
2020-03-20 세미 프로 리그 진행 (0) | 2020.03.20 |
2020-03-19 선수 영입 (0) | 2020.03.19 |
2020-03-18 영입 명단 UI 작업 (1) | 2020.03.18 |