
우선 어제 마무리 못지은 밴픽 단계를 완성했다. 아직 직업별 상세 스탯 뷰를 추가 안하긴 했는데 요건 아직 직업 구현이 제대로 안 되어있어서 직업 구현부터 어느정도 완료하고 작업할 생각. 아무튼 이제 밴픽을 포함해서 핵심적인 게임 플로우는 구현을 완료했다. 다음으로 할 작업은 시뮬레이션 챔피언별 기본 특성이라도 반영하기 + 대회 결과 반영(각종 통계, 승패 정보 기반의 리그 순위 등). 이것까지 되면 게임을 플레이하는 느낌이 제대로 날 것 같다. 애니메이션 적용, 시뮬레이션 개선 궁수, 검사, 격투가의 경우 기본 애니메이션이 완성되어서 이걸 우선적으로 적용했다. 하면서 시뮬레이션도 약간 수정. 수치를 대충 넣어놔서 굉장히 밸런스가 안 맞는데 이건 차근차근 고치면 될 것 같고.. 아무튼 애니메이션 넣으니 ..

오늘은 게임 씬을 완전히 구성하는데 초점을 맞췄다. 먼저 초반 게임 플로우에서 경기 진행 사항에 따른 상세 스탯(딜량, 받은데미지량)을 확인할 수 있는 걸 작업했다. 그래서 추가된 HP 게이지 및 각 선수별 스탯 상세 정보 확인 기능. 좌/우에서 캐릭터 왔다갔다하면서 선택하면 딜량/힐량/탱킹등의 정보를 확인 가능하다. 평점의 경우 아직 공식을 설정을 못해서 그냥 내버려뒀다. 이쪽 UI 작업하면서 어제 만들어놓은 구조가 조금 불편한 부분들이 있어서 그 부분 개선 작업도 같이 진행했다. 하는김에 겸사겸사 동률 처리도 같이 했다. 경기 시간이 0초가 된 시점에서 서로 킬 수가 동일할 경우, 마지막으로 1킬이 더 나올 때까지 시뮬레이션을 하다가 1킬이 나오는 시점에서 경기를 종료한다. 그리고 다음으로는 선수 선..

오늘은 간단하게 시뮬레이션을 넣는 작업을 진행했다. 어쨌든 시뮬레이션이 게임에서 가장 중요한 파트인데 시뮬레이션 부분을 아예 빼놓자니 게임의 형태를 짐작하기가 어려워서, 아주 단순한 형태로라도 만들어 넣는 작업을 우선 완료했다. 오늘 작업한 시뮬레이션은 정말 굉장히 무식한 방식으로 동작한다. 대충 설명하자면 아래와 같은 로직을 따른다. 1. 가장 가까운 적을 찾는다. 이 적이 내 공격 사거리 안쪽이고 내가 공격 가능한 상황이면 공격한다. 2. 그런 적이 없으면 가장 가까운 적에게로 이동한다. 각각의 AI는 이 두 가지 과정을 무한히 반복한다. 이렇게만 만들어놔도 대충 시뮬레이션이 돌아가는구나 하는 건 확인할 수 있기 때문에.. 그런데 지금은 단순히 만들어도 나중에 시뮬레이션을 고도화하기 위한 기반은 만들..

(팀 창단) => (팀 지원 멤버들 경기 지켜봄) => (경기 끝나면 경기 결과 기반으로 선수 2명 선발) => (실제 게임 플레이로 진행)이 맨 처음 게임 플로우인데 오늘은 이 부분을 구현했다. 팀 생성을 하고 들어가면 이런 식으로 팝업을 통해 간단히 설명 => 경기 진행 => 결과를 바탕으로 선수 2명 선발의 과정을 거친다. 경기 시뮬레이션은 나중에 채워넣을 예정이기 때문에 적당히 랜덤한 값으로 채워넣고 경기 결과 페이지로 넘어가게 만들었다. 그래서 전체 플로우. 팝업 => 게임 진행 => 게임 결과 확인 => 선발할 선수 선택 => 해당 선수 기반으로 팀 정보 까지의 흐름을 완성했다. 내일부터는 여기에 아주 간단한 시뮬레이션 추가 + 밴픽 추가 해서 게임 씬을 좀 더 그럴듯하게 만들 예정. 게임 내..

선수단 UI 오늘은 이전에 하려다 못 했던 선수단 UI부터 작업했다. 이런 식으로 선수 정보를 확인 가능하다. 몇 가지 기능(재계약 등)을 추가해야하고 우측 하단에 원래 선수 경기 정보가 들어가야하는데 아직 경기쪽 구현이 안 돼서 이쪽은 임시로 비워뒀다. 나중에 작업해야지. 선수 이름도 완전 랜덤 스트링으로 대충 박아뒀는데 이 부분도 그럴듯한 닉네임 생성하는 기능을 추가해야 한다. 하단 키 설명 조작이 조이패드 키 어디에 대응되는지 확인할 수 있게 도와주는 각종 이미지를 임시로 만들어서 붙여놓았다. 이게 없으니 실제 조작이 어떻게 이뤄지는지 헷갈리는 경우가 많아서.. 배포 도구 개발한 내용 공유하고 다운받는 과정이 귀찮기 때문에, 자동 빌드 + 빌드된 최신 결과물 쉽게 받아서 쓸 수 있는 툴을 간단하게 ..
오늘은 선수단 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할 텍스트에 대응되는 키값을 그냥 박아넣으면 실행했을 때 자동으로 현재 세팅된 언어에 맞는 텍스트가 들어가게끔 했다. 이 텍스트에서..