모험
플레이어는 자신의 아바타를 성장시키는 첫 단계로 모험 컨텐츠를 이용할 수 있습니다. 모험 컨텐츠에 대한 자세한 설명은 공식 문서를 참고하세요.
월드
나인 크로니클의 모험은 이그드라실에서 시작되고, 그 이후로 알프헤임, 스바르트알프헤임, 아스가르드 등의 순서로 새로운 월드들이 준비되어 있습니다. 이 데이터는 WorldSheet
에서 가져옵니다.
9c-board 서비스[1]를 이용해서 WorldSheet
를 확인해볼 수 있습니다.
- https://9c-board.nine-chronicles.dev/odin/tablesheet/WorldSheet
- https://9c-board.nine-chronicles.dev/heimdall/tablesheet/WorldSheet
모험을 시작하는 이그드라실은 아바타를 생성함과 동시에 열려 있는데요. 이후의 월드들은 특정 조건을 충족하면 잠금 해제됩니다. 자세한 정보는 WorldUnlockSheet
에서 확인할 수 있습니다.
WorldSheet
와 마찬가지로 9c-board에서 확인해볼 수 있습니다.
- https://9c-board.nine-chronicles.dev/odin/tablesheet/WorldUnlockSheet
- https://9c-board.nine-chronicles.dev/heimdall/tablesheet/WorldUnlockSheet
스테이지 도전과 보상
각 월드는 여러 스테이지를 포함하고 있으며, 각 스테이지를 클리어하면 다양한 보상을 받을 수 있습니다. 스테이지 정보는 StageSheet
에서 확인할 수 있습니다.
- Nekoyume.TableData.StageSheet
- https://9c-board.nine-chronicles.dev/odin/tablesheet/StageSheet
- https://9c-board.nine-chronicles.dev/heimdall/tablesheet/StageSheet
스테이지 도전 비용
StageSheet
를 보면 CostAP
라는 필드가 있습니다. 이 필드는 스테이지를 진행하는 데 필요한 액션 포인트를 나타냅니다. 플레이어는 아바타의 액션 포인트를 사용해서 모험을 진행할 수 있습니다.
스테이지 웨이브
스테이지는 여러 웨이브로 구성되어 있으며, 각 웨이브를 클리어해야 다음 웨이브로 넘어갈 수 있습니다. 웨이브 정보는 StageWaveSheet
에서 확인할 수 있습니다.
- Nekoyume.TableData.StageWaveSheet
- https://9c-board.nine-chronicles.dev/odin/tablesheet/StageWaveSheet
- https://9c-board.nine-chronicles.dev/heimdall/tablesheet/StageWaveSheet
나인 크로니클은 현재 모든 스테이지의 웨이브를 3개로 설정해두고 있는데요. 아바타가 몇 개의 웨이브를 클리어했느냐가 스테이지에서 달성한 별의 수를 결정하게 됩니다. 또한 별의 수는 아래와 같이 보상의 내용을 결정합니다.
- 별 1개: 경험치
- 별 2개: 경험치, 아이템
- 별 3개: 경험치, 아이템, 다음 스테이지 해금
스테이지 버프
스테이지 버프는 플레이어가 특정 스테이지를 진행할 때 받을 수 있는 버프를 의미합니다. 이러한 버프는 CrystalRandomBuffSheet
와 CrystalStageBuffGachaSheet
에서 확인할 수 있습니다.
- Nekoyume.TableData.Crystal.CrystalRandomBuffSheet
- Nekoyume.TableData.Crystal.CrystalStageBuffGachaSheet
아이템 슬롯
모험을 진행할 때 사용할 수 있는 아이템 슬롯이 있습니다. 이 슬롯에는 다양한 아이템을 장착하여 전투를 유리하게 이끌 수 있습니다.
모험에서 사용할 수 있는 아이템은 장비나 코스튬 그리고 음식이 있습니다.
룬 슬롯
모험을 진행할 때 룬을 장착하여 다양한 효과를 얻을 수 있습니다.
반복 전투
모험은 반복적으로 진행할 수 있으며, 이를 위해 AP 포션을 사용할 수 있습니다.
전투(StageSimulator)
전투는 턴제 방식으로 진행되며, 플레이어는 자신의 아바타와 함께 다양한 아이템을 사용하여 적을 물리칠 수 있습니다. 모험에서는 StageSimulator 클래스를 활용해서 전투를 진행합니다. 이 클래스는 전투의 흐름을 관리하고, 각 턴마다 발생하는 이벤트를 처리합니다.
전투가 시작되면 플레이어 아바타를 생성합니다.
웨이브
전투가 시작되면 첫 번째 웨이브가 시작됩니다. 웨이브를 클리어하지 못하면 전투가 종료되고, 클리어하면 다음 웨이브로 넘어갑니다. 그리고 마지막 웨이브를 클리어하면 전투가 종료됩니다.
턴
웨이브가 시작되면 정해진 공식에 따라서 가장 우선순위가 높은 캐릭터에게 턴을 부여하는데요. 이 우선순위는 캐릭터의 SPD(속도) 스탯에 따라 결정됩니다.
- 웨이브 시작.
- 플레이어 아바타는 100[2] / 아바타의 SPD 스탯의 우선순위를 갖습니다.
- 웨이브의 모든 적은 100 / 적의 SPD 스탯의 우선순위를 갖습니다.
- 우선순위가 가장 높은 즉, 100 / SPD 스탯이 가장 작은 캐릭터에게 턴을 부여합니다.
- (4)에서 턴을 부여 받은 캐릭터는 턴을 진행합니다.
- (4)에서 턴을 부여 받지 못한 캐릭터들의 우선순위를 높입니다.
- 캐릭터가 플레이어이고 이전 턴에서 기본 공격이 아닌 스킬을 사용했다면
0.9
를 곱합니다. - 이외의 경우에는
0.6
을 곱합니다.
- 캐릭터가 플레이어이고 이전 턴에서 기본 공격이 아닌 스킬을 사용했다면
- (4)에서 턴을 부여 받은 캐릭터는 다시 100 / 캐릭터 SPD 스탯의 우선순위를 갖습니다.
- 플레이어 아바타가 죽거나 웨이브를 클리어할 때까지 (2)부터 (7)까지의 과정을 반복합니다.
- 웨이브 종료. 다음 웨이브가 존재하면 (1)부터 반복합니다.
스킬 발동
아바타나 적을 포함한 모든 캐릭터는 스킬을 발동할 수 있습니다. 스킬에는 기본 공격을 포함해서 다양한 공격 스킬과 버프 스킬들이 있는데요. 어떤 스킬이 발동되는지는 각 스킬이 갖고 있는 발동 확률에 따라 결정됩니다.
스킬 발동 플로우차트
스킬 종류
- Nekoyume.Model.BattleStatus.NormalAttack: 기본 공격입니다.
- Nekoyume.Model.BattleStatus.BlowAttack
- Nekoyume.Model.BattleStatus.DoubleAttack
- Nekoyume.Model.BattleStatus.DoubleAttackWithCombo
- Nekoyume.Model.BattleStatus.AreaAttack
- Nekoyume.Model.BattleStatus.BuffSkill
- Nekoyume.Model.BattleStatus.HealSkill
- Nekoyume.Model.BattleStatus.BuffRemovalAttack
- …
기본 공격의 명중
나인 크로니클에서는 기본 공격 또한 스킬로 다루고 있습니다. 그리고 기본 공격의 명중 여부는 대체로 공격자와 방어자의 레벨과 명중(HIT) 스탯에 의해서 결정되고, 일부 다른 공식을 따르기도 합니다.
- Nekoyume.Model.Skill.AttackSkill.ProcessDamage 메서드에서 기본 공격의 명중 여부를 얻습니다:
target.IsHit(caster)
- 위의
IsHit
메서드는 Nekoyume.Model.CharacterBase.IsHit(CharacterBase)를 가리키고, 이 메서드는 플레이어 캐릭터(Nekoyume.Model.Player) 등에서 override 합니다. - 모험에서의 명중 로직을 간단하게 살펴 본다면:
- 방어자가 플레이어 캐릭터일 때에는 공격자의 공격을 피할 수 없습니다.
- 공격자가 집중 버프(Nekoyume.Model.Buff.Focus)의 효과를 얻고 있다면 100% 명중합니다.
- 그렇지 않다면 Nekoyume.Battle.HitHelper.IsHit 메서드의 결과에 따라 명중을 처리합니다.
공격 스킬 데미지
작성중입니다.
Nekoyume.Battle.HitHelper.IsHit
(공격자의 레벨 - 방어자의 레벨)
로-5 ~ 50
사이의 값A
를 얻습니다.(공격자의 HIT 스탯 * 10000 - 방어자의 HIT 스탯 * 10000 / 3) / 방어자의 HIT 스탯 / 100
로0 ~ 50
사이의 값B
를 얻습니다.- 이때 공격자와 방어자의 HIT 스탯이 0 이하라면 1로 보정해서 계산합니다.
A + B
로10 ~ 90
사이의 값C
를 얻습니다.0 ~ 99
사이의 무작위 숫자D
를 구합니다.- 마지막으로
C
가D
이상이면 명중으로 처리합니다.
콤보
아바타의 공격은 콤보 효과를 얻을 수 있습니다.
- 최대 콤보는 아바타의 레벨에 따라 달라집니다. 예를 들어, 레벨 1에서는 최대 2콤보, 레벨 250에서는 최대 5콤보를 얻을 수 있습니다.
- 최대 콤보를 얻은 후에 콤보 증가 조건을 달성하면 1콤보부터 시작한다.
콤보 증가
- 기본 공격을 성공한다.
SkillSheet.Combo
필드가true
인 스킬을 성공시킨다.
콤보 초기화
- 기본 공격을 실패한다.
콤보 효과
- 기본 공격이나
SkillSheet.Combo
필드가true
인 스킬의 데미지를 증가시킨다. - 조건에 따라 추가 치명타 확률을 얻는다.
관련 액션
모험 컨텐츠와 관련한 액션 목록:
- DailyReward: 액션을 실행하기 위해서 필요한 액션 포인트를 얻을 수 있습니다.
- HackAndSlash: 기본 모험 액션입니다.
- HackAndSlashSweep: 별을 3개 달성한 스테이지를 소탕하는 액션입니다.
9c-board는 나인 크로니클의 다양한 데이터를 시각화해주는 서비스입니다. ↩︎
시뮬레이터에서 턴 우선순위를 결정하는 공식에 사용되는 값으로 Nekoyume.Battle.Simulator.TurnPriority에서 확인할 수 있습니다. ↩︎