Skip to content

Latest commit

 

History

History
520 lines (350 loc) · 13.9 KB

README.md

File metadata and controls

520 lines (350 loc) · 13.9 KB

2024.05.

결론적으로 해당 기획은 수비 덱의 불리함을 해결하지 못했고, 그리고 덱을 짜는 난이도 자체가 너무 높다는 문제점과 무엇보다 재미가 없어서 새로운 기획으로 변경합니다.

Summary

  • 전투 시뮬레이터는 게임 기획 내용을 최소한으로 검증할 수 있도록 하기 위해서 만들어졌습니다.
  • 수비/공격 세팅을 전부 다 입력해서 플레이 해볼 수 있는 방식입니다.
  • 다음과 같은 내용을 확인하고자 합니다.
    • 게임으로써 즐기며 플레이 가능한 지
    • 너무 어려운 플레이 방식이라 불가하진 않은 지
    • 너무 심각한 기획 오류가 있진 않은지
    • 기획 변경이 필요한 지

게임 설명

  • 전투는 5인으로 진행
    • 모든 캐릭터(슈퍼 푸드)는 슈퍼 푸드의 고유 스킬을 사용해서 전투를 진행함. (일반공격은 없음.)
    • 전방-중앙-후방 (각 줄에 슈퍼 푸드 최소 한명) 으로 배치 가능함.
    • 적팀의 모든 슈퍼 푸드를 죽이거나, 양쪽 팀이 모든 스킬을 다 소진했을때 슈퍼 푸드의 총 합 체력이 더 많다면 승리함. (각 슈퍼 푸드마다의 체력 시스템 존재)
    • 게임에 진입하기 전 유저는 각 캐릭터의 행동에 순서를 정할 수 있음.
      • 스킬
      • 가드 전환
    • 모든 캐릭터는 가드 상태를 게임에 진입하기 전에 지정해둘 수 있음.

데미지

  • 하단 가드를 하면 하단 공격에 데미지를 10%만 받고 중단 공격 데미지를 100% 받음.
  • 중간 가드를 하면 중단 공격에 데미지를 100%로 막고 하단 데미지를 100% 받음.

가드

  • 가드를 하고 있지 않으면 모든 공격에 대해 100% 데미지를 받음.
  • 공격하고 있을 때는 가드 불능 상태가 됨.

프레임

  • A1번 캐릭터의 행동에 10 프레임이 필요하고 B1번 캐릭터 행동에 12프레임이 필요하다면 A1캐릭터의 행동이 먼저 진행됨.
    • 만약 A1에 행동프레임이 5이고 A2에 행동 프레임이 3인데 B1캐릭터 행동에 12가 필요하다면 A1 → A2 → B1으로 진행됨.
    • 이때 B1의 캐릭터는 공격이 시작 됐으므로 가드 불능 상태임.
  • 일부 스킬에는 -프레임(=손해 프레임)을 상대방에게 만드는 기술이 있음.
    • 만약 이 스킬에 걸려 -4프레임이 된 상태라면 스킬을 사용할 때 4프레임이 더 필요하게 됨.
      • 14프레임의 기술을 사용하면 18프레임이 필요한 것.

공격 대상

  • 단일 대상 스킬의 경우 대상이 정해져 있음
    • 체력이 제일 적은 캐릭터 대상
    • 체력이 가장 많은 캐릭터 대상
    • 첫번째 열 대상 등등

상성

  • 짠맛 → 단맛 → 매운맛 → 신맛 → 쓴맛 -> 짠맛

게임 내에서 사용할 수 있는 슈퍼 푸드

  • 앞의 영어 이름은 슈퍼 푸드의 type 입니다.

  • JJAJANG 짜장면 (짠맛)

    스킬 1 (발동 7, 4턴 지속)

    • 본인의 방어력을 20 증가시킵니다.

    스킬 2 (발동 10, 6턴 지속)

    • 단일 공격에 대한 공격을 모두 대신 맞아줍니다 (수호)

    스탯

    체력: 100

    방어력: 50

    저항력: 10

    회피력: 0

    치명타 확률: 0

  • JJAMBBONG 삼선짬뽕 (매운맛)

    스킬 1 (발동 10)

    • 1열에 있는 음식 1개에게 데미지 30을 주고 손해프레임 3을 줍니다.

    스킬 2 (발동 15, 2턴 지속)

    • 모든 상대에게 5데미지를 주고 방어력을 10 깍습니다.

    스탯

    체력: 225

    방어력: 30

    저항력: 40

    회피력: 0

    치명타 확률: 0

  • CAKE 초코케이크 (단맛)

    스킬 1 (발동 13)

    • 체력이 가장 낮은 상대에게 데미지 35를 줍니다.

    스킬 2 (발동 18)

    • 1열에 있는 음식들에게 데미지 15를 줍니다.

    스탯

    체력: 180

    방어력: 40

    저항력: 0

    회피력: 0

    치명타 확률: 20

  • MALA_XIANG_GUO 마라샹궈 (짠맛)

    스킬 1 (발동 10, 3턴 지속)

    • 체력이 가장 낮은 음식 하나에게 데미지 10과 방어력 감소 10을 부여합니다.

    스킬 2 (발동 18, 중단)

    • 체력이 가장 낮은 음식 하나에게 데미지 50 줍니다.

    스탯

    체력: 80

    방어력: 10

    저항력: 40

    회피력: 30

    치명타 확률: 40

  • MILK_SHAKE 밀크쉐이크 (단맛)

    스킬 1 (발동 5)

    • 다음 시전되는 스킬 2의 공격력을 10 증가시킵니다.

    스킬 2 (발동 25, 중단)

    • 모든 상대에게 데미지 30을 줍니다.

    스탯

    체력: 100

    방어력: 10

    저항력: 0

    회피력: 0

    치명타 확률: 0

  • MALA_TANG 마라탕 (매운맛)

    스킬 1 (발동 14)

    • 1열에 있는 음식들에게 데미지 5와 기절 상태이상을 부여합니다.

    스킬 2 (발동 20, 중단)

    • 1열에 있는 음식들에게 데미지 60을 줍니다.

    스탯

    체력: 130

    방어력: 20

    저항력: 0

    회피력: 0

    치명타 확률: 0

  • KUNG_PAO_CHICKEN 꿔바로우 (신맛)

    스킬 1 (발동 15)

    • 모든 상대에게 데미지 20을 줍니다.

    스킬 2 (발동 15, 중단)

    • 모든 상대에게 데미지 10을 줍니다.

    스탯

    체력: 80

    방어력: 30

    저항력: 20

    회피력: 0

    치명타 확률: 20

  • STIR_FRIED_FISH_CAKE 양파 어묵 볶음 (짠맛)

    스킬 1 (발동 10)

    • 체력이 가장 낮은 음식 체력을 30 회복시킵니다.

    스킬 2 (발동 15)

    • 모든 아군 음식의 체력을 10 회복시킵니다.

    스탯

    체력: 150

    방어력: 0

    저항력: 20

    회피력: 0

    치명타 확률: 0

  • SEASONED_BELLFLOWER_ROOT 두릅무침 (쓴맛)

    스킬 1 (발동 20, )

    • 상대 2열과 3열에 있는 음식들에게 기절 상태이상을 부여합니다.

    스킬 2 (발동 12)

    • 상대 1열에 있는 음식들에게 기절 상태이상을 부여합니다.

    스탯

    체력: 80

    방어력: 0

    저항력: 0

    회피력: 0

    치명타 확률: 0

  • RED_GINSENG_JUICE 홍삼즙 (쓴맛)

    스킬 1 (발동 12, 6턴 지속)

    본인의 회피력을 30 증가시킵니다.

    스킬 2 (발동 10, 4턴 지속)

    단일 공격에 대한 공격을 모두 대신 맞아줍니다 (수호)

    스탯

    체력: 50

    방어력: 0

    저항력: 0

    회피력: 50

    치명타 확률: 0


게임 플레이 시 확인할 체크리스트

  • 수비덱을 충분히 공략할 수 있는지 확인
  • 너무 변수가 많아서 힘들진 않은지 확인
  • 스펙 차이가 어느정도(20%?) 나면 수비덱을 이길 수 없도록 설정이 가능한지 확인
  • 전투 한번 한번의 스트레스가 많진 않은지 확인
  • 자동기보? 전투가 가능한지(pve 대비) 확인

추천하는 플레이 방식

  • 공격 팀이라고 가정하고, 수비 팀의 데이터를 보수적으로 미리 입력해둡니다.
    • 이 데이터를 서로 주고받아보면 좋을 것 같습니다.
  • 이제부터 플레이를 진행해보며 수비 팀을 파훼할 수 있는 커맨드를 분석해 승리합니다.

게임 구성

  • 화면은 총 두가지로 구성되어 있습니다.

설정 화면

image

  • 가장 먼저 게임을 실행하면 나오는 화면입니다.
  • 기본적으로 디폴트 데이터가 설정되어 있어서 그대로 플레이 해도 상관 없습니다.
  • 해당 화면에서는 아래 설정을 진행할 수 있습니다.
    • 수비 캐릭터 배치, 공격 캐릭터 배치
    • 수비 기보, 공격 기보
  • 기본적으로 입력 포맷은 json이나,
    • 입력 창은 별다른 포맷 프리티파이가 없는 plain text의 형태라서
    • 알아서 프리티파이 홈페이지 등에서 정렬해서 오면 됩니다.

게임 화면

image

  • 설정한 데이터를 토대로 게임이 실행되는 화면입니다.
    • 캐릭터 위의 인포는 순서대로 다음과 같습니다.
      • [속성][아이디] 캐릭터 타입
  • 게임의 결과도 해당 화면 안에서 나오게 됩니다. (어떤 팀이 이겼는 지)
  • 아래 커맨드 확인 플로팅 화면을 통해 현재 커맨드(스킬, 가드 등) 진행 상황을 알 수 있습니다.

플레이 방법

1. 게임을 실행합니다

image

2. 수비/공격 캐릭터의 배치를 입력합니다.

  • 총 세 줄로 배치를 진행할 수 있습니다. (전방, 중앙, 후방)
    • 총 캐릭터는 5개를 입력하면 되지만, 최소/최대 캐릭터 수에 대한 제한은 없습니다.

입력 포맷

  • 입력 포맷은 다음과 같습니다.
[
	[
	  // 캐릭터 하나의 배치
    {
      "id": String
      "type": Number
    } 
	], // 전방 캐릭터 리스트
	[], // 중앙 캐릭터 리스트 
	[] // 후방 캐릭터 리스트
]
  • 이차원 배열 형태로 데이터를 받습니다.
    • 순서대로 전방, 중앙, 후방 입니다.
    • 필수적으로 세 개의 리스트를 포함해 보내주어야 합니다.
  • type
    • type은 어떤 슈퍼 푸드 타입을 사용할 건지에 대한 내용입니다.
  • id
    • 특정한 슈퍼 푸드를 식별하기 위해 플레이어가 임의로 지정할 수 있는 number 형식 아이디 입니다.
    • 같은 팀 뿐만 아니라, 수비/공격 전체 겹치지 않는 숫자 아이디이면 됩니다.

입력 예시

  • 입력 예시는 다음과 같습니다.
[
  [
    {
      "id": 1,
      "type": "JJAJANG"
    }
  ] // 전방 리스트,
  [
    {
      "id": 2,
      "type": "JJAMBBONG"
    },
    {
      "id": 3,
      "type": "JJAMBBONG"
    }
  ] // 중앙 리스트,
  [
    {
      "id": 4,
      "type": "CAKE"
    },
    {
      "id": 5,
      "type": "JJAMBBONG"
    }
  ] // 후방 리스트
]

3. 수비/공격 캐릭터의 기보를 입력합니다.

  • 기보에서는 스킬(1,2번 스킬)과 가드 전환을 진행할 수 있습니다.

입력 포맷

  • 입력 포맷은 다음과 같습니다.
[
  {
		"id": Number, // 슈퍼푸드 유니크 아이디
		"skill_id": Number, // 스킬 아이디
		"meta": Number, // (Optional) 가드 전환을 위한 속성 값
  }
]
  • id
    • 캐릭터 배치를 입력할 때 각 슈퍼 푸드에 지정해줬던 유니크 아이디입니다.
    • 스킬 혹은 가드 변경을 시도하려는 슈퍼 푸드의 id를 입력합니다.
  • skill_id
    • 사용하려는 행동에 대한 id 입니다.
    • 입력할 수 있는 값은 다음과 같습니다.
      • 0
        • 가드 전환을 의미합니다.
        • 해당 값을 0으로 보낼 때에는, meta 항목을 항상 함께 보내야 합니다.
          • 어떤 방향으로 가드를 전환할 지에 대한 값이 필요합니다.
      • 1
        • 해당 슈퍼 푸드의 스킬 1번을 사용한다는 것을 의미합니다.
      • 2
        • 해당 슈퍼 푸드의 스킬 2번을 사용한다는 것을 의미합니다.
  • meta (Optional)
    • 가드 전환 시, 어떤 방향으로 가드를 전환할 지를 의미합니다.
    • 그래서 skill_id 값이 0일 경우에만 해당 meta값을 보내면 됩니다.
    • 입력할 수 있는 값은 다음과 같습니다.
      • 0
        • 가드 하단으로 전환
      • 1
        • 가드 중단으로 전환

입력 예시

[
	{
		"id": 1,
		"skill_id": 1
	},
	{
		"id": 1,
		"skill_id": 2
	},
	{
		"id": 1,
		"skill_id": 0,
		"meta": 1,
	},
	{
		"id": 2,
		"skill_id": 1
	},
	{
		"id": 2,
		"skill_id": 2
	},
	{
		"id": 1,
		"skill_id": 0,
		"meta": 0,
	},
	{
		"id": 3,
		"skill_id": 1
	},
	{
		"id": 3,
		"skill_id": 2
	},
	{
		"id": 1,
		"skill_id": 0,
		"meta": 1,
	},
	{
		"id": 4,
		"skill_id": 1
	},
	{
		"id": 4,
		"skill_id": 2
	},
	{
		"id": 5,
		"skill_id": 1
	},
	{
		"id": 5,
		"skill_id": 2
	}
]

4. 우측 상단 게임 실행 버튼을 클릭합니다.

image

5. 게임의 진행을 확인하고, 결과를 확인합니다.

image image

  • 결과에 따라 부족한 부분을 파악하여 커맨드를 수정해나갑니다.

참고

해당 문서는 내부 노션 문서를 그대로 Readme로 옮겼습니다.

사용한 asset은 다음과 같습니다.

https://github.com/Jordyfel/duelyst-animated-sprites-godot