오늘은 선수단 UI 관련 작업을 시작했는데 선수 생성쪽 작업을 하다보니 데이터 구조가 점점 복잡해져서 이 쪽 개선 작업을 한 번 진행해야겠다는 생각이 들었다. sqlite를 쓸까 고민해봤는데 여러가지로 불편한 부분이 많았고 관련해서 작업해야할 양도 많아서 sqlite를 쓰는 건 보류. 스키마를 고민해봤는데 sqlite를 썼을 때 필요한 작업 시간이나 도입한 이후에 편의성 등을 생각해봤을 때 득보다 실이 많다고 판단했다. 뒤편에서 데이터를 저장하고 가져오는 과정이 실제로 어떻게 동작하느냐와 실제로 데이터를 불러와서 인게임에서 사용하는 인터페이스는 서로 레이어가 다르다. 지금 개발하고 있는 게임에 적합한(편리하고 생산성이 보장되는) 앞단의 인터페이스(프론트엔드)를 먼저 구성하고 실제로 그 인터페이스에 맞춰 ..
일정 생성 오늘은 경기 일정 생성 및 해당 일정들 확인하는 뷰를 만들었다. 일정을 만들려고 하다보니 게임 내에서 경기 일정이 어떻게 흘러갈 것인가, 대회는 무엇이 있고 진출자들은 어떻게 결정되는가 등에 대한 규칙에 구체화가 필요해서 해당 내용 기획도 같이 진행했다. 경기 생성 알고리즘은 표준적인 라운드 로빈 알고리즘(https://en.wikipedia.org/wiki/Round-robin_tournament)을 이용했다. 경기는 리그당 팀이 총 20개, 같은 팀과 4번씩 경기해서 1년에 총 76경기를 진행하는 형태로 생각하고 있다. 여기에 리그 같은 경우 2월에서 6월까지 진행(전반기) 후 7,8월은 이적 기간, 다시 9월부터 11월까지 진행(후반기) 후 12월,1월은 이적 기간으로 진행되는 흐름. 그..
Save & Load우선 게임 정보를 저장하고 불러오는 기능을 구현했다. 게임 데이터는 전부 GameData 클래스에 모아서 저장하고, 이걸 그냥 Binary Formatter 써서 파일로 저장하고 불러오게끔 만들었다. 게임 데이터 클래스 너무 복잡하지 않게 자료형 잘 관리하는 것만 좀 신경쓰면 될 듯. 패치 등으로 데이터 포맷 변동 등이 있을 때 그거 잘 처리하게 해주기 위한 작업이 좀 필요할 것도 같긴 한데 이것도 당장 중요한 것은 아니라 우선순위를 낮춰서 나중에 작업하기로 했다.탭 / 수신함 UI 오늘은 메일 형태로 여러 가지 정보를 수신 및 확인하는 UI를 만들었다. 만들면서 새 게임 시작할 때 각 리그 및 리그에 속하는 팀들을 생성하는 등의 기능도 같이 개발했다. 그래서 이런 식으로 인 게임에 ..
오늘은 새 게임 씬을 작업했다. 지금 만드는 게임이 기획을 간단하게 정리하면 e-sports 팀을 FM 처럼 관리하는 게임이라 맨 처음에 팀 및 감독(자기 자신)의 프로필을 설정해야 한다. 근데 게임의 목표중 하나가 조이패드로만 플레이해도 전혀 플레이에 지장이 없을 것이어서, 이 부분에서 좀 고생을 많이 했다. 유니티 기본 UI로 필요한 기능들을 다 집어넣기가 쉽지 않았고 특히 텍스트 입력이 가장 어려운 부분이었다. 나중에 가상 키보드를 자체적으로 구현해서 넣을 생각인데 일단 오늘 그걸 다 구현하기엔 양도 너무 많고 당장 중요한 이슈는 아닌 듯 해서 살짝 뒤로 미뤘다. 다만 InputField가 입력을 완료하는 걸 코드 상에서 Return 키 코드만 반응하게 되어 있어(IME 조합 모드 때문인듯. 이게 ..
퇴사하고 1월 말까지 푹 쉰 뒤 오늘부터 본격적으로 개발을 시작했다. 오늘은 일단 마일스톤 설정 & 기획 구체화 작업하는데 시간을 거의 다 써서 만든 건 별로 없긴 하다. 그래도 이제 풀 타임으로 개발하는 만큼 매일 만든 부분 조금이라도 작성을 해 둘 예정. Localization 준비 steam에 출시하는게 목표고 다양한 언어를 지원해야 하는 만큼 오늘은 미리미리 UI 등에서 번역 대응 작업을 쉽게 할 수 있게끔 준비 작업을 해뒀다. 어떻게 하는 게 좋을까 이것저것 찾아보다가 그냥 직접 구현하는게 나을 것 같아서 적당히 직접 구현했다. 대충 이런식으로 localization할 텍스트에 대응되는 키값을 그냥 박아넣으면 실행했을 때 자동으로 현재 세팅된 언어에 맞는 텍스트가 들어가게끔 했다. 이 텍스트에서..
2D 자동 전투 시뮬레이션을 만드는데 AI에 필요한 길찾기 구현에서 애를 많이 먹어서 정리해둔다. 주 참고 자료: https://www.david-gouveia.com/pathfinding-on-a-2d-polygonal-map Pathfinding on a 2D Polygonal Map I haven’t had much time to update the blog lately (mostly due to having to crunch work on my thesis) and for that I apologize. But since it’s been one month since my last post, I decided to write something up today, even if it’s not a f..
오늘은 몇 가지 생각나는 다른 시도들을 해 보았다. color space 변경 우선 색공간 설정을 gamma -> linear로 변경해보았다. 이게 팔레트에서 의도한 색이 그대로 표현되지 않을까 해서. 대충 이런 식으로 나온다. 느낌이 괜찮은 듯하긴 한데 원래 화면에 비해서 너무 어두워보임. 문제는 sRGB 옵션이었다. 컬러 스페이스가 linear일 때 팔레트 텍스쳐는 당연히 sRGB가 꺼져 있어야 하는데(원본 텍스쳐가 감마 반영이 안 되어 있는 텍스쳐이므로), 문제는 유니티에서 3D 텍스쳐가 sRGB 옵션을 지원하지 않는다. 이 때문에 3D 텍스쳐를 버리고 다시 2D 텍스쳐로 변경. 문제는 3D 색 공간을 2D 텍스쳐에 인코딩하고 그걸 읽어오는 방식(LUT처럼)으로 구현했다. 이 과정에서 인덱스 컬러를..
픽셀 아트는 정말 예쁘다. 나는 픽셀 아트 특유의 느낌을 굉장히 좋아한다. 그래서 게임도 픽셀 아트 풍으로 만들고 싶은데, 여기엔 문제가 하나 있다. 픽셀 아트는 정말로 정말로 정말로 손이 많이 가는 작업이라는 점이다. 캐릭터마다 전부 따로따로 애니메이션을 한 프레임씩 만들어줘야 하는 것도 문제고, 다 만든 다음에 수정하기가 힘들다는 것도 문제다. 작업 과정에서 캐릭터 디자인이라거나 컨셉같은게 바뀌는 일은 비일비재한데, 순수 픽셀 아트로만 작업한다면 이런 경우 기존에 작업한 애니메이션을 전부 다 수정해주어야 한다. 작업자 수가 충분히 많다면 이런 문제를 인력을 때려박아 해결할 수 있겠지만 소규모 개발팀에서 그런 선택을 할 수는 없다. 소규모 개발팀은 인력도 부족한데 돈도 없기 때문에 모든걸 최대한 빨리빨..