기업협약 프로젝트의 팀 편성이 시작되었다. 이번 프로젝트 기간은 약 두 달간 진행하는 프로젝트로 8월 14일 ~ 10월 17일까지 진행하는 프로젝트이다. 이렇게 긴 기간 동안 진행할 프로젝트의 내용은 다음과 같다.
기획서상 살펴본 내용을 분석해봤을 때, 게임의 볼륨이 상당히 큰 편이라서 정말 빠듯하게 작업해야 할 것으로 생각된다. 더군다나 일정 또한 프로토타입, CBT, OBT, 최종 출시까지 해야 하기 때문에 프로토타입까지도 당장 작업량이 얼마나 나올련지 걱정이 되는 부분이 있다.
당장 데모 빌드만 주말 제외 2주만에 나와야 하는 상황이다 보니 최대한 시간을 효율적으로 분배해서 작업에 들어가야 할 것으로 보인다.
또한 여기에서 무엇보다도 어려운 부분이 내가 맡은 역할에 대한 것이다.
그 외 기획 시스템 담당? 이게 대체 뭘 해야하는 건지 아직은 다소 감이 잡히지 않았다.
다만 지금 단계에서 우선적으로 해 달라고 하는 작업은 있었고, 파티 코스트 관련 R&D를 해 달라는 요청이 있었다.
전체적인 시스템 플로우를 듣고 이 중에서 뭔가 이런 업무는 내가 해야할지도 모르겠다는 위주로 정리했다.
리더 캐릭터 자체는 변경이 가능하지만, 리더 캐릭터만 남은 상황에서 편성에서 제외하는 것은 불가능한 구조이다. 그러니까, 최소 한 칸에는 무조건 캐릭터가 들어가 있어야 하는 구조이다.
리더로 설정된 캐릭터는 리더 전용 버프가 활성화되며, 이는 직업별로 전부 따로 있다.
이 두 가지 시너지에 따라 팀의 시너지가 결정이 되고, 시너지의 종류는 현지는 직업시너지 6종 역할 시너지 5종으로 보인다. 이를 오토체스처럼 시너지별로 조합을 모으면서 최대 8개의 캐릭터를 필드에 배치하고 전투가 진행되는 방식이 게임의 기본 전투 플로우이다.
여기서 플레이어는 편성을 통해 먼저 최대 5개의 캐릭터를 배치할 수 있으며, 여기서 코스트의 개념으로 충성도라는 것이 나온다. 캐릭터의 편성은 이 충성도 수치를 넘겨서 배치할 수 없으며, 캐릭터별 가치에 따라서 충성도 수치가 달라진다.
캐릭터의 편성에 있어서는 자동 편성이 가능하다. 자동 편성의 경우 시너지에 관계 없이 전투력이 높은 순서대로 편성이 되며, 팀 전투력 자체에는 시너지로 인한 전투력 상승 수치가 반영된 수치로 나와야 한다.
-> 해야 할 업무 : 시너지 시스템(직업 시너지/역할 시너지), 리더 시스템/시너지 및 판매 제한 조건, 코스트(충성도) 및 편성 제한 수(최대 5명)에 따른 편성 제한 규칙, 캐릭터 자동 편성 시스템(전투력순, 코스트 고려 필요), 파티 프리셋 저장/불러오기/삭제
캐릭터의 소환 자체는 왼쪽 위부터 정렬 순으로 생성되며(가로로 한 줄 먼저 생성) 같은 성급의 같은 캐릭터 3개가 모였을 시 자동 합성된다.(합성 여부 선택 불가) 다만 자동 배치를 했을 경우 어떤 캐릭터가 먼저 배치되는지에 대해서는 정해진 규칙이 없어 협의가 필요해 보인다.
각 배치칸에 따라서 받을 수 있는 효과가 다르다.(ex) 최전방 - 체력 증가, 후열 - 공격속도 증가 등) 이 수치는 게임에 크게 영향을 미치는 수준이 아니며(배치 자체는 플레이어의 재량에 따름), 다만 예를 들어 원거리 딜러는 공격과 관련된 열에 배치하는 등의 전략적 요소로 보인다.
또한 캐릭터 배치에 따른 시너지가 활성화되고, 이 시너지에 관해서는 활성화가 많이 된 순서대로 정렬하는 기능을 추가하기로 합의되었다. 시너지의 종류가 두 가지이므로, 두 가지의 시너지에 관해 정렬 순서를 정하고 나머지 비활성화된 시너지를 뒤에 배치하는 등의 정렬에 관련된 로직이 필요하다.
-> 해야 할 업무 : 배치 관련 내용 추가 확인 필요 - 캐릭터 배치 우선순위는 어떻게 할 건지?(성급순/그냥 가지고 있는 캐릭터 중 앞 순서대로만 배치/기타), 캐릭터 자동 배치 규칙, 시너지 자동 정렬 로직, 배치칸 효과 로직
캐릭터 배치를 마치고 난 후, 전투를 개시할 수 있다.(캐릭터 배치 중에는 시간 제한이 없음) 전투에는 제한시간이 주어지며, 제한 시간 내에 승리 조건을 충족해야지 스테이지를 클리어할 수 있다.
기본적으로 캐릭터들과 몬스터의 배치 영역이 한 맵의 좌 우 양쪽에 있으며, 전투가 개시하면 캐릭터와 몬스터가 중앙 위치까지 이동하며 조우한 상태로 전투가 진행되는 형태이다.(전투 진행 방식은 운빨돌격대와 유사한 방향)
전투에 있어서 수동 조작 로직이 있는지는 확인되지 않지만, 유저가 상호작용할 수 있는 요소로서 마법석이라는 개념이 존재하며, 이는 진행 중 이벤트를 통해서 획득이 가능하다. 필요한 상황에서 해당 마법석을 적절하게 사용하는 것으로 유저는 상호작용을 하며 게임의 승리까지 몰입을 유도한다.
-> 해야 할 업무 : 전투 시스템 및 규칙(자동/수동 조작 가능 여부, 제한 시간 조건, 플레이어 및 적 AI의 공격 우선순위 및 스킬 사용 조건/로직 등), 전투 종료 조건(승리, 패배 조건, 재도전 여부), 마법석의 사용 로직 등
뽑기에는 캐릭터 뽑기와 마법석 뽑기가 존재한다.(두 개가 한 랜덤박스에서 같이 등장하는지 각각 분리되어 있는지 확인 필요) 뽑기를 통해 신규 캐릭터 해금 및 신규 마법석 해금 등에 사용되며, 중복된 캐릭터 및 마법석을 뽑아 모은 조각 같은 개념으로 강화하는 식으로 보인다.
캐릭터 강화의 경우 매 강화마다 스탯은 필수적으로 상승하며, 특정 구간(10강/20강/30강 등)에서 추가로 패시브 스킬 혹은 액티브 스킬이 해금되도록 한다.
마법석의 경우, 동일한 마법석 내에서도 등급에 따라 효과의 비율이 달라지며, 마법석을 강화했을 때는 이 효과의 비율이 변하는 것이 아닌 높은 효과를 가진 마법석의 등장확률을 높여주는 방식으로 로직이 작동한다. 따라서 특정 마법석의 강화 정도에 따라 가중치를 부여한 확률 뽑기가 진행되어야 한다.
-> 해야 할 업무 : 캐릭터 강화 시 스탯 상승량 수치 적용 로직, 캐릭터 강화 구간별 스킬 해금 규칙, 마법석 강화시 등장확률 변동 수치 적용 로직, 마법석 확률 변동 시 반영 로직
결론은 할 일이 뒤지게 많다는 것이다
이것들 온전히 나 혼자 담당하게 될 업무가 되는 건 아닐 것이고, 다른 팀원의 작업이 일찍 끝나면 다 같이 이쪽 작업을 할 테지만 결과적으로 해야할 일을 정리하자면 다음과 같다.
시너지 시스템(직업 시너지/역할 시너지), 리더 시스템/시너지 및 판매 제한 조건, 코스트(충성도) 및 편성 제한 수(최대 5명)에 따른 편성 제한 규칙, 캐릭터 자동 편성 시스템(전투력순, 코스트 고려 필요), 파티 프리셋 저장/불러오기/삭제
배치 관련 내용 추가 확인 필요 - 캐릭터 배치 우선순위는 어떻게 할 건지?(성급순/그냥 가지고 있는 캐릭터 중 앞 순서대로만 배치/기타), 캐릭터 자동 배치 규칙, 시너지 자동 정렬 로직, 배치칸 효과 로직
전투 시스템 및 규칙(자동/수동 조작 가능 여부, 제한 시간 조건, 플레이어 및 적 AI의 공격 우선순위 및 스킬 사용 조건/로직 등), 전투 종료 조건(승리, 패배 조건, 재도전 여부), 마법석의 사용 로직 등
캐릭터 강화 시 스탯 상승량 수치 적용 로직, 캐릭터 강화 구간별 스킬 해금 규칙, 마법석 강화시 등장확률 변동 수치 적용 로직, 마법석 확률 변동 시 반영 로직
업무가 무지 많아 보이긴 하지만 일단 지금 딱 눈으로만 봤을 때 로직을 짜기 무진장 어렵다는 느낌은 아니다. 다만 어떤 변수가 발생할 지 모르기 때문에 버그 테스트를 위한 과정이 많이 필요해 보이고, 로직에서의 예외 변수가 발생할 지 모르기 때문에 버그 테스트를 위한 과정이 많이 필요해 보이고, 로직에서의 예외처리 및 견고함을 쌓는 것이 관건으로 보인다.
위와 같은 업무에 관해서 당장 생각나는 구현 방법에 대해 정리해보자면 다음과 같다.
시너지 시스템(직업 시너지/역할 시너지) - 캐릭터 담당자와 같이 작업해야 할 내용으로 보임. 시너지라는 것 자체의 정의를 Struct나 Enum 같은 걸로 한 뒤, 파티 내에 배치된 캐릭터의 시너지를 체크하여 수치에 대한 계산 방식 로직을 정하기?
리더 시스템/시너지 및 판매 제한 조건 - 어차피 캐릭터별로 리더 효과가 다르다고 한다면 캐릭터의 스테이터스에 리더 여부를 확인하는 bool 변수 체크를 하는 것? 해당 조건에 따라 리더 효과 활성화 및 판매 제한 조건 설정 등
코스트(충성도) 및 편성 제한 수(최대 5명)에 따른 편성 제한 규칙 - 캐릭터 별로 충성도 수치가 다 정리되어 있을 것이므로, 캐릭터 편성을 시도할 때마다 최대 편성 수치를 넘지 않는지 체크
우선순위에 관해서는 편성된 캐릭터 수를 먼저 체크하고 충성도 수치를 체크 후 모두 통과하면 배치, 아니면 배치불가
캐릭터 자동 편성 시스템 - 오직 전투력을 기준으로만 편성한다고 한다면 상대적으로 쉽다. 하지만 세밀하게까지 살핀다고 하면 이 부분은 고민이 좀 필요해 보인다.
ex) 그냥 전투력 높은 순서부터 먼저 배치하면서 코스트를 고려해 배치해 버리면 이와 같은 상황이 발생할 수도 있음 - 전투력 높은 순서부터 바로 넣어버리면서 1번과 4번을 넣어서 배치를 끝냈는데, 코스트를 충족하면서도 2, 3, 4번을 배치해서 넣은 게 최종적으로 전체 전투력이 높을 경우
파티 프리셋 저장 - Firebase에 저장할 필요성이 있는 데이터로 보인다.(일반적으로 게임 접속을 종료했다고 해도 파티 프리셋이 날아가지는 않으니까)
캐릭터 자동 배치 규칙 - 협의 필요
시너지 자동 정렬 로직 - 현재 편성된 캐릭터 기준으로 Dictionary를 이용하여 value가 가장 높은 순으로 정렬하는 방식?
배치칸 효과 로직 - 배열 등으로 캐릭터의 현재 위치 배열에 따라 효과를 부여하는 방식
전투 - 자동/수동 조작 가능 여부 - 협의 필요
전투 - 제한 시간 조건 - Time.DeltaTime
전투 - 플레이어 및 적 AI의 공격 우선순위 및 스킬 사용 조건/로직 등) - 협의 필요
전투 - 전투 종료 조건(승리, 패배 조건, 재도전 여부) - 제한시간 체크, 남은 적과 플레이어 수 판정, 재도전 시 재도전 가능 여부 체크 - 피로도 확인
전투 - 마법석의 사용 로직 - 즉발 효과? 효과 발동 위치 판정에 대한 로직(몬스터 탐지 등의 로직)
캐릭터 강화 시 스탯 상승량 수치 적용 로직 - 수치표 같은 걸 기획팀에게서 받아야 할 듯?
캐릭터 강화 구간별 스킬 해금 규칙 - 강화 수치 체크 후 스킬 반영
마법석 강화시 등장확률 변동 수치 적용 로직 - 수치표 같은 걸 기획팀에게서 받아야 할 듯?
마법석 확률 변동 시 반영 로직- 가중치 확률 시스템을 사용하면 되지만, 확률 Dictionary 초기화 후 다시 수치 반영하는 방식
기능이 워낙 많다 보니 프로토타입 구현 단계에서 저걸 전부 넣을 수는 없을 것이다. 그나마 게임이 한 사이클이라도 굴러가야 하니 제일 필요한 것 순으로 정리했다.
캐릭터 편성 규칙 - 우선은 수동으로라도 편성할 수 있는 조건을 만들어야 한다.
코스트(충성도) 및 편성 제한 수(최대 5명)에 따른 편성 제한 규칙, 리더 시스템은 리더 버프 내용은 넣지 말고 리더 판매 금지 내용 정도만 우선 반영
캐릭터 배치 규칙 - 우선은 수동으로라도 편성할 수 있는 조건을 만들어야 한다.
최대 인원(8명)에 대한 편성 제한 및 드래그 배치 적용에 대한 부분
캐릭터 생성 및 대기칸(?)에 들어가는 로직, 성급 합성 부분은 시간이 남으면 같이 작업