Skip to content

MinCOnMinCon/DDDD

Repository files navigation

🎮 DDDD : Dice Died During Dawn

목차

  1. 게임 실행
  2. 개요
  3. 게임 규칙
  4. 게임 화면
  5. 족보
  6. 코드 구조
  7. 느낀 점
  8. 리소스 및 라이센스

0. 게임 실행

  1. 이 레포지토리를 포크합니다.
  2. 폴더 중 "GameExecution" 을 찾습니다.
  3. 내부 파일 중 "DDDD.exe" 을 실행합니다.

1. 개요

주사위를 굴리고 나온 눈으로 족보를 활성화하여 적을 처치하는 덱빌딩 로그라이크 게임입니다! 스토리를 보고, 적과 싸워 이긴 후 족보를 얻어서 강해지세요!

2. 게임 규칙

2-0. 게임 내 수치 설명

플레이어

  1. 현재 체력 : 당신의 현재 체력입니다. 0이 되면 게임이 종료됩니다.
  2. 기본 주사위 수 : 기본적으로 제공되는 주사위 개수입니다.
  3. 임시 주사위(temp dice) 수 : 이번 턴에 늘어나거나 줄어든 주사위 수입니다. 턴이 지나면 초기화됩니다. 실제로 돌리는 주사위 수는 (기본 주사위 수 + 임시 주사위 수)입니다.
  4. 주사위 눈 : 주사위를 굴려 최종적으로 나온 주사위 눈의 결과입니다. 이 결과에 따라 공격 수치와 방어 수치, 패널티 주사위, 운명토큰을 얻고 몇몇 족보를 활성화할지 결정합니다.
  5. 공격 수치 : 당신이 이번턴에 적에게 가할 데미지입니다.
  6. 공격 횟수 : 당신이 이번턴에 적에게 공격할 횟수입니다. 기본적으로 1번 공격하나, 족보의 효과로 추가적인 공격 횟수를 얻을 수 있습니다.
  7. 방어 수치 : 적이 공격할 때 이 수치만큼의 데미지를 막습니다.
  8. 운명 토큰 수 : 당신이 가지고 있는 운명 토큰의 개수입니다. 전투가 끝나면 초기화됩니다.
    운명 토큰은 사용할 개수 만큼 주사위를 추가로 더 돌릴 수 있게 합니다. 턴 진행 중 사용할 운명 토큰의 개수를 정하면 그만큼의 주사위를 추가로 더 굴립니다. 사용하기 위해선 로그에서 운명 토큰을 사용하라고 할 때 운명 토큰 필드에 원하는 사용 개수를 적고 enter를 누릅니다. 운명 토큰을 사용하지 않는다면 아무것도 입력하지 않고 enter를 누릅니다.
  9. 패널티 주사위 수 : 당신이 가지고 있는 패널티 주사위 개수입니다. 전투가 끝나면 초기화되고 특정 족보의 효과로 줄일 수 있습니다.
    패널티 주사위는 굴려서 나온 눈을 나온 개수 만큼 비활성화시킵니다. 가령, 당신이 가진 패넡티 주사위를 3개 굴렸을 때, 1, 2, 3이 각각 1개씩 나왔다면 당신의 주사위 눈에서 1, 2, 3이 각각 1개씩 비활성화됩니다.
  10. 족보 : 주사위 굴리기가 끝나고 조건이 충족되면 발동해서 당신에게 효과를 주는 것입니다. 전투가 끝나면 무작위로 2개를 획득합니다.

  1. 현재 체력 : 적의 현재 체력입니다. 0이 되면 전투에서 승리하고 무작위 족보를 2개 얻습니다.
  2. 패턴 : 각 적마다 자신만의 패턴을 가지고 있습니다. 한 턴이 시작될 때 자신이 어떤 행동을 하는지 예고합니다.
  3. 공격 수치 : 적이 당신에게 가하는 데미지입니다.
  4. 방어 수치 : 적이 당신에게 공격을 받을 때 이 수치만큼의 데미지를 막습니다.
  5. 예언 수치 : 적이 당신이 가지는 족보의 효과로 받은 예언 수치입니다. 이 예언 수치가 일정 이상일 때, 효과가 발동되는 족보들이 있습니다.

화면 중앙에 있는 ROLL 버튼을 클릭 시 다음과 같은 순서로 진행됩니다.

  1. 적의 행동 예고
  2. 주사위 굴림 + 패널티 주사위 굴림
  3. 서브 족보 활성화
  4. 운명 토큰 사용 개수 결정
  5. 즉발 족보 활성화
  6. 수치비례 족보 활성화
  7. 수치조건 족보 활성화
  8. 당신의 공격
  9. 적의 공격

2-1. 적의 행동 예고

  • 적이 자신이 할 행동을 예고합니다. 적이 몇의 공격 수치와 방어수치를 얻는지와 적이 하는 특수 행동이 예고됩니다.

2-2. 주사위 굴리기

  • 가진 모든 주사위를 굴려 결과를 얻습니다. 각 결과에 대한 보상은 다음과 같습니다.
  • 이와 동시에 패널티 주사위를 굴려 나온 각 눈의 개수만큼 비활성화시킵니다.
주사위 눈 1 주사위 눈 2 주사위 눈 3
패널티 주사위 1개 추가, 공격수치 + 2, 방어수치 + 2 방어 수치 + 2 방어 수치 + 3
주사위 눈 4 주사위 눈 5 주사위 눈 6
공격수치 + 4 공격 수치 + 5 운명 토큰 1개 추가
  • 주사위 눈 1로 얻은 패널티 주사위는 다음 턴부터 굴립니다.
  • 각 눈을 얻은 만큼 그 효과를 받습니다. 가령, 주사위 눈이 3개가 나오면 얻는 방어 수치는 총 3*3 = 9 입니다.

2-3. 족보 적용

  • 주사위를 굴리고 난 다음, 족보의 조건을 확인하고 그 효과를 적용합니다.
  • 족보의 종류는 다음과 같습니다.
    서브, 즉발, 수치비례, 수치조건
  • 서브 : 운명 토큰 사용 전에 활성화되는 족보입니다.
    특정 주사위 눈의 개수가 일정 이상일 때 주사위 눈의 개수를 추가하는 족보입니다.
    추가로 얻은 주사위 눈으로 보상을 받고 다른 족보의 조건을 충족하는데 도움을 줍니다.
  • 즉발 : 서브와 비슷하게 주사위 눈의 개수가 일정 이상일 때 발동하는 족보입니다.
    즉시 특정 수치를 얻거나 부여하는 효과입니다. 공격 수치를 더 얻거나, 적에게 예언수치를 부여하는 등의 효과가 있습니다.
  • 수치비례 : 주사위 눈이 아닌 공격 횟수, 공격 수치 등 특정 수치에 비례한 효과를 주는 족보입니다.
  • 수치조건 : 공격 횟수, 공격 수치등 특정 수치가 일정 이상일 활성화되는 족보입니다.

2-4. 공격과 방어

  • 여태까지 모은 공격 수치와 방어 수치로 적과 공방을 진행합니다.
  • 당신의 공격이 먼저 실행되고 그 다음의 적의 공격이 실행됩니다.
  • 받는 데미지는 상대의 공격 수치 - 자신의 방어 수치입니다.

3. 게임 화면

title
게임 시작화면
: start를 누르면 시작합니다.
title
스토리 : Next를 눌러 다음 텍스트를 읽습니다.
title
title
게임 화면

  • 주사위 버튼 : 주사위를 굴려서 주사위 눈의 결과를 얻습니다.
  • 주사위 결과UI : 지금 가지고 있는 주사위 눈의 개수를 1, 2, 3, 4, 5, 6마다 각각 표시해줍니다.
  • 운명 토큰 필드 : 몇개의 운명토큰을 사용할지 입력하는 필드입니다. 사용하지 않는다면 필드를 클릭하고 enter를 누릅니다.
  • 족보 UI : 현재 자신이 가지고 있는 족보를 나타냅니다. 활성화 된 족보는 노란색으로 하이라이트 됩니다.
  • 적 : 당신이 처치해야 할 적입니다. 적은 각각의 공격 패턴이 있습니다. 로그 UI에서 적의 행동을 확인할 수 있습니다.
  • 운명토큰,패널티 주사위 UI : 현재 가지고 있는 패널티 주사위 수와 운명토큰의 수를 나타냅니다.
  • 공격 수치, 방어수치 UI : 당신의 현재 공격 수치와 방어 수치를 나타냅니다. 공격 수치 게이지는 (당신의 공격 수치 / 적 현재 체력)으로 나타납니다. 방어 수치 게이지는 (당신의 방어 수치 / 당신의 현재 체력)으로 나타납니다.
  • 플레이어 체력 : 당신의 현재 체력을 나타냅니다.
  • 기본 주사위 수, 임시 주사위(temp dice) 수 : 당신이 가지고 있는 기본 주사위 수와 이번 턴에 늘어나거나 줄어든 주사위 수입니다.
  • 로그 UI : 당신의 행동, 적의 행동, 받은 피해, 적의 체력, 보상 등 현재 흘러가는 상황에 대해 서술합니다.
  • 툴팁 UI : 족보에 마우스를 올리면 족보에 대한 정보가 나타납니다. 조건과 효과에 대해 적혀 있습니다.

title
전투 종료 : 전투가 끝나고 무작위로 두 개의 족보를 보상으로 받습니다. 6초 후에 자동으로 다음 스토리로 넘어갑니다.
title
title
게임 종료 : 당신이 죽거나, 모든 적을 처치하면 게임 종료 화면으로 넘어갑니다. 게임 종료시 Replay를 눌러 처음부터 다시 진행할 수 있습니다.

4. 족보

  • 서브
번호 보조 족보 이름 발동 조건 효과
1 최선의 방어는.. 눈 2 ≥ 2 or 눈 3 ≥ 2 눈 2 조건 충족 -> 눈 4 +1, 눈 3 조건 충족 -> 눈 5 +1
2 공격적 방어 눈 4 ≥ 2 or 눈 5 ≥ 2 눈 4 조건 충족 -> 눈 2 +1, 눈 5 조건 충족-> 눈 3 +1
3 파멸적 운명 눈 1 ≥ 3 눈 6 +1, 운명 토큰 +1
4 끝없는 파멸 눈 1 ≥ 2 패널티 주사위 +1
5 요새 눈 2 ≥ 2 or 눈 3 ≥ 2 눈 2 조건 충족 -> 눈 2 +1, 눈 3 조건 충족 -> 눈 3 +1
6 앙 가르드 눈 4 ≥ 2 or 눈 5 ≥ 2 눈 4 조건 충족 -> 눈 4 +1, 눈 5 조건 충족 -> 눈 5 +1
  • 즉발
번호 족보 이름 발동 조건 효과 시너지 유형
7 예언의 서막 눈 2 ≥ 2 적 예언 +2, 방어 +2 자원/유틸리티, 방어
8 운명의 스트레이트 눈 1 ≥ 1 and 눈 2 ≥ 1 and 눈 3 ≥ 1 and 눈 4 ≥ 1 and 눈 5 ≥ 1 운명 토큰 +3 자원/유틸리티
9 패널티 소멸 패널티 주사위 ≥ 2 패널티 주사위 2개 삭제, 체력 +5 패널티 조작, 회복
10 도박사의 보상 눈 2 ≥ 1 and 눈 4 ≥ 1 and 눈 6 ≥ 1 주사위 +1, 공격 +5, 방어 +5 자원/공격/방어
11 순환하는 운명 눈 6 ≥ 2 운명 토큰 +1 자원/유틸리티
12 운명의 제어 운명 토큰 ≥ 3 운명 토큰 1개 소모 → 공격 +7, 방어 +7 자원 + 공격/방어
13 전광석화 눈 4 + 눈 5 ≥ 3 공격 횟수 +1 공격/공격 횟수
14 무력 증강 눈 5 ≥ 3 공격 + (눈 5 × 5) 공격
15 광전사 눈 5 ≥ 1 and 눈 1 ≥ 2 공격 횟수 +2, 패널티 주사위 +2 공격 + 패널티
17 연격 눈 4 + 눈 5 ≥ 4 공격 횟수 + ( (눈 4 + 눈 5) ÷ 3 ) 공격/공격 횟수
18 둠해머 패널티 주사위 ≥ 3 공격 횟수 +2, 패널티 주사위 -2 공격 + 패널티
19 파멸 패널티 주사위 ≥ 6 공격 +70, 패널티 주사위 -5 공격 + 패널티
20 현실 왜곡 눈 2 + 눈 3 ≥ 4 적 예언 +5, 이번 턴 주사위 +1 자원/유틸리티
36 행운의 가속 눈 6 ≥ 4 주사위 +2 자원
37 다이스의 연금술 눈 2 ≥ 1 and 눈 3 ≥ 1 and 눈 4 ≥ 1 and 눈 5 ≥ 1 공격 +9, 방어 +9 공격/방어
  • 수치 비례
번호 족보 이름 발동 조건 효과 유형
16 철갑무사 눈 4 ≥ 2 and 눈 3 ≥ 1 (공격 횟수 × 4)만큼 방어 수치 획득 방어
24 피의 연회 패널티 주사위 ≥ 3 and (눈 2 ≥ 1 or 눈 3 ≥ 1) 공격의 20% 체력 회복 회복/패널티
25 파상 공세 4 ≥3 (공격 ÷ 8) 만큼 공격 횟수 증가 공격/횟수
26 흡수 타격 눈 3 ≥ 1 and 눈 4 ≥ 1 (공격 횟수 ×4 )만큼 체력 회복 회복
27 고통의 예언 눈 4 ≥ 1 and 눈 5 ≥ 1 공격 수치 * 1/10 만큼 적에게 예언 부여 자원/공격
28 신속의 예언 눈 3 ≥ 1 and 눈 4 ≥ 1 and 눈 5 ≥ 1 공격 횟수 ×2만큼 적에게 예언 부여 자원/공격
21 자기 실현적 예언 6 ≥ 3 and 패널티 주사위 ≥2 가진 모든 운명 토큰을 패널티 주사위로 변환, (변환한 수 * 3)만큼 공격 수치 증가 패널티/공격
22 속죄의 폭풍 패널티 ≥ 3 and (눈 4 ≥ 1 or 눈 5 ≥ 1) 패널티 × 5만큼 공격 수치 증가 , 패널티 주사위 -1 공격/패널티
  • 수치 조건
번호 족보 이름 발동 조건 효과 유형
29 운명 조작 예언 ≥ 6 and 눈 6 ≥1 운명 토큰 +1, 방어 +5 자원/방어
30 치유의 징조 예언 ≥ 9 and 눈 2 ≥1 체력 +7, 방어 +6 자원/방어
31 예지된 방어 예언 ≥ 10 and 눈 3 ≥1 방어 +15 방어
32 예언 폭발 예언 ≥11 and 눈 1 ≥1 예언 * 2만큼 공격 수치 획득 자원/유틸리티
33 예언 : 죽음 예언 ≥15 and 눈 4 또는 5 ≥2 적 예언 초기화, 공격+40 공격/유틸리티
34 속전속결 공격 횟수 ≥ 4 공격 +10 공격/횟수
  • 서브 족보들을 제외한 나머지 족보들을 테마를 가지고 있습니다.
  • 패널티 주사위 테마(주사위 눈 1)
    : 패널티 주사위를 소모해 많은 공격 수치를 얻는 등의 공격에 치중된 테마입니다.
    패널티 주사위가 많을 수록 더 강력한 공격을 할 수 있지만 방어에는 약합니다.
  • 예언 테마(주사위 눈 2,3)
    : 고유 수치인 예언을 이용해 족보를 발동시킵니다.
    특정 족보로 적에게 예언 수치를 쌓고 일정 수치 이상이면 강력한 효과를 발동시킬 수 있습니다.
    그러나, 예언 수치가 쌓이지 않으면 무력합니다.
  • 연공 테마(주사위 눈 4,5)
    : 공격 횟수를 늘리고 늘어난 공격 횟수에 따라 여러 이득을 얻을 수 있습니다.
    그냥 공격 횟수를 늘리는 족보도 있지만, 자신의 공격 수치에 비례해 공격 횟수를 늘릴 수 있습니다.
  • 운명 테마(주사위 눈 6)
    : 운명 토큰을 이용해 다양한 주사위 눈을 얻고 이를 조건으로 강력한 효과를 발동시키는 족보입니다.
    운명 토큰을 획득하거나 주사위를 추가하는 효과가 있어 보조로 활용하기 좋습니다.

5. 코드 구조

title
( 대략적인 코드 구조 입니다. 얇은 화살표는 상속관계를, 두꺼운 화살표는 화살표를 받는 쪽이 주는 쪽을 자신의 변수로 가지고 있는 걸 나타냅니다.)

  • Creature : Player와 Monster가 상속하는 부모 클래스 입니다. 둘의 공통되는 함수나 변수는 여기에 포함시켰습니다.
  • Player : 플레이어는 전체적으로 하는 일이 좀 많습니다. UI 업데이트 함수 호출, 적과의 전투 진행 함수 등 플레이어와 연관없는 함수가 많습니다.
    게다가 다른 오브젝트의 스크립트도 많이 요구해서 그런 스크립트를 연결하는 게 매우 복잡했습니다.
    이후 Player가 요구하는 스크립트들을 분리하는 식의 리팩토링을 진행할 계획입니다.
  • Monster : 지금은 실제 적들을 이 Monster 클래스를 상속해서 구현했지만 (적의 수가 적어서 문제는 없었습니다.), 나중에 확장성을 고려해서 Monster를 스크립터블 오브젝트로 만들어 적의 수가 늘어나면 관리하기 편하게 만들 생각입니다.
  • HandManager : 족보를 추가, 삭제, 관리하는 클래스입니다. 그나마 이 클래스는 Player한테 분리해서 좀 나았습니다.
  • Hands : 가장 문제가 있던 클래스였습니다. 각 족보를 나타내야 하는 클래슨데 이전에는 이걸 족보 하나당 클래스 하나씩 만들어서 대략 37개쯤의 스크립트가 있었습니다. 이건 수정 사항이 생기면 다 수정해야되서 스크립터블 오브젝트로 리팩토링해 지금은 다행히 하나의 스크립트로 구현했습니다.
  • UIManager : 개발 시간의 단축을 위해 씬을 만들지 않고 스토리 UI, 전투 UI, 게임오버 UI, 시작 UI로 나눠서 특정 상황일 때, 그에 맞는 UI를 띄우는 식으로 구현했습니다. 이 일을 하는 게 바로 이 클래스 입니다.
    그러나, 상황이 바뀔 때, Player나 Monster의 값을 변경하거나 함수를 호출하는 경우가 생겨 그 일까지 하게 되버렸습니다. 이것도 UI를 변경해주는 클래스랑 상황 변화에 맞게 값이나 함수 업데이트를 하는 클래스로 나눌 생각입니다.
  • MonsterManager, PlayerManager : UIManager가 몬스터나 플레이어 클래스의 변수를 조정하거나 함수를 호출하기 위해 만들어 놓은 중간 클래스 입니다.

6. 느낀 점

  • 처음으로 이렇게 커다란 프로젝트를 만들다 보니 문제점이 많았습니다.

    • 작은 프로젝트를 할 때는 얼추 전체 구조가 보이고 함수나 변수가 다 기억이 났었는데,
      규모가 하도 크다 보니깐 전체 구조도 이상해지고 간혹 만든 함수나 변수를 잊어버리는 경우가 있었습니다...

    • 가장 크게 느낀 구조 문제는 클래스의 독립성이였습니다.
      예전에는 규모가 작으니 클래스가 다른 클래스와 크게 묶여있어도 문제가 없었습니다.
      여기서는 묶여있는 몇몇 클래스 중에 하나의 클래스를 고치니 다른 클래스에 버그가 생기는 경우가 매우 많았습니다.
      그걸 보면서 왜 클래스의 단일 책임이 중요해지는지 깨닫게 되는 순간이었습니다.

    • 또한, 다른 클래스 간에 연결을 할 때는 중간 클래스가 있다는 게 중요하다는 걸 알았습니다.
      위에서도 언급했듯이, 클래스끼리 과하게 연결되어있으면 하나를 바꾸면 다른 하나에서 문제가 일어나는 상황이 많았습니다. 그러나 중간에 중개하는 클래스가 있는 다른 클래스들은 확실히 한 클래스에 추가해도 중간에서 완화가 되니 다른 클래스에 영향이 훨씬 덜 해 시간을 아낄 수 있었습니다.

    • 독립성과 중간 클래스의 필요성을 크게 느낀 부분이 Player와 Monster였습니다.
      Player와 Monster는 중간에 클래스 없이 서로가 바로 연결되어 있어, 한 오브젝트가 생성이 되었는데 다른 오브젝트가 생성이 되지 않아서 함수에 에러가 났었습니다.
      이게 가장 심했던 함수가 Player와 Monster 스크립트에 있는 FindEnemy 함수였습니다. 이 함수가 씬에서 적을 찾아 적의 Player, Monster 스크립트를 리턴하는 함수였습니다.
      근데 Player나 Monster 둘 다 Awake()때 이 함수를 호출하니, 먼저 생긴 쪽에서 아직 안 생긴 쪽을 찾으려 하니 null reference 에러가 났습니다.
      그래서 서로의 생성 순서를 계속 고려했어야 했습니다. 만약, Player와 Monster 사이에 중간 다리 역할을 하는 클래스가 있었다면 이러한 에러를 더욱 편히 해결할 수 있었으리라 생각합니다.

  • 유니티 기능에 대해서도 배운 게 많았습니다.

    • 이번에 턴제를 만들면서 UI를 정말 많이 쓰게 되었는데, 덕분에 UI 크기나 무슨 UI가 있는지 알게 되는 경험이었습니다.
      특히, UI의 배치를 조정하는 vertical layout controller나 horizontal layout controller와 content size filter를 많이 사용해보고 알게 되었습니다.

    • 족보를 만들면서 스크립터블 오브젝트의 소중함을 깊게 깨닫게 되었습니다.
      원래는 족보를 그냥 스크립트로 37개를 만들었습니다. 그러다가 족보에 새로운 변수를 추가하려면 모든 스크립트를 일일이 바꿔야 한다는 걸 깨닫고 스크립터블 오브젝트로 다시 만들었습니다.
      이제는 예전과 달리 스크립터블 오브젝트인 Hands에서 변수를 하나 추가하고 각 스크립터블 오브젝트에 값을 추가하는 식으로 바꿔 좀 더 편해졌습니다.

    • 턴제로 만들다 보니 이외에도 싱글톤 형식이나, 이벤트-리스너 구조에 대해 배울 수 있었습니다.
      싱글톤 구조는 코딩할 때, 정말 편리했습니다. 로그UI는 특성상 게임 내 여러 스크립트에서 발생하는 이벤트를 받아야 했고,
      LogManager에 있는 LogEvent 클래스를 이벤트 발생하는 모든 스크립트에서 가져야 이벤트를 호출할 수 있었습니다.
      만약 이게 싱글톤 구조가 아니였다면, 모든 스크립트에서 LogEvent를 일일이 연결하고 때에 맞게 끊어야 했을 겁니다.
      하지만, 싱글톤 구조 덕에 LogEvent를 필요할 때마다 바로 가져와서 쓸 수 있어 매우 편리했습니다.
      심지어 로그가 필요한 스크립트도 매우 다양하게 분포하여 없었으면 제가 많이 힘들었을 것 같습니다.

6++. 기존 기획 및 바뀐 점들

지금까지 README를 읽고 게임을 플레이 해보셨다면, 뭔가 게임이 부족하다는 생각이 드실 겁니다.
실제로 기존 기획과는 시간적 문제로 많은 요소가 빠졌습니다.
여기서는 원래는 무엇을 계획했으나, 어떻게 바뀌거나 사라졌는지 보여주는 부분입니다.

가장 크게 바뀐 거라고 하면 적에 대한 부분입니다.
만약 Creature 스크립트를 읽어보신다면 주사위와 패널티 주사위 관련 변수나 함수가 있을 겁니다.
Player와 Monster(적의 로직이 담겨있습니다.) 스크립트 둘 다 이 Creature를 상속하고요.
근데 Monster는 주사위도 굴리지 않는데 왜 이 코드가 있는걸까요?
사실 Monster도 Player처럼 주사위를 굴려서 공격과 수비를 하고 특성에 맞게 적도 족보를 가지고 있을 예정이었습니다.
하지만 UI에 많은 시간을 투자해버린 나머지, 시간 부족으로 인해 적이 턴마다 패턴을 돌아가면서 쓰는 식으로 구현을 하게 되었습니다.

혹시 게임을 하셨다면, 일부 족보는 조건 맞추기가 매우 까다롭다고 느끼셨을 것 같습니다.
원래는 기본 주사위의 개수를 늘리거나 특정 주사위 눈이 나올 비율을 바꾸는 이벤트를 넣을 예정이었습니다.
내가 원하는 족보 테마를 생각하고, 이에 맞게 원하는 족보를 선택하고 그 족보가 주로 필요로 하는 주사위 눈이 잘 나오도록 비율을 조정하는게 원래 계획이었습니다.
그래서 README에 있는 족보 테마 설명을 보시면 그 테마가 주로 요구하는 주사위 눈이 적혀있습니다.
그러나 족보도 무작위로 주고, 주사위 개수 추가나 주사위 눈 비율 조정이 다 사라지면서 기존의 덱빌딩 요소가 사라져서 많이 아쉬웠습니다.

현재 로그 UI가 있는 자리인 왼쪽 아래에는 실제로 주사위를 굴려 주사위와 패널티 주사위가 돌아가는 걸 애니메이션으로 보여줄 생각이었습니다.
그렇게 하면 지금과 달리 좀 더 주사위 결과를 직관적으로 보여줘 플레이어가 결과를 쉽게 인식하게 하려고 했습니다. 하지만 시간이 없어 로그 UI로 주사위 결과가 대체되었습니다.
개인적으로 안타까웠던 건건 이런 애니메이션이 있었다면 주사위의 결과가 더 직관적으로 보여줄 수 있었으리라 생각합니다.

코드 구조나 기획이나 여러모로 아쉬운 점이 참 많았습니다.
너무 크게 기획을 잡았던 게 가장 큰 문제였던 것 같지만, 지금도 처음 기획처럼 만들 수 있다면 그래도 재미있게 할 수 있는 사람들이 있지 않을까 생각합니다.
그래서 겨울 방학에 코드 구조 리팩토링부터 스토리 및 적, 족보, UI를 추가해 기존 기획했던 크기 만큼은 만들어 볼 생각입니다.

여담으로 바쁘게 프로젝트를 완성하느랴 많이 포기한 부분도 있었지만, 오히려 바빠서 배웠던 것도 많았던 것 같습니다.
내 실력 수준을 생각하지 않고 기획을 크게 하면 크게 데인다는 것과 시간 제약을 맞추려면 어떻게 바꾸고 무엇을 버릴지까지 깨달은 것도 많았습니다.
아무튼 참으로 배울 게 많았던 프로젝트였습니다. :feelsgood:

7. 리소스 및 라이센스

  • 글씨체 : 갈무리체 https://quiple.dev/galmuri
    라이선스 © 2019–2025 Lee Minseo (quiple@quiple.dev)
    Galmuri는 SIL 오픈 폰트 라이선스 1.1에 따라 사용할 수 있으며, 폰트가 자체적으로 판매되지 않는 한 자유롭게 사용·연구·수정·재배포할 수 있습니다.
    OFL 1.1을 한국어로 번역한 내용은 이곳에서 확인할 수 있으며, 라이선스 원문은 이곳에서 확인할 수 있습니다.
  • 적 이미지 : PixVerse를 통한 이미지 생성
    생성 이미지 사용에 관련된 이용 약관
    https://docs.pixverse.ai/Terms-of-Service-5a019460172240b09bc101b7a12fafea
일부 발췌 You can download information presented on this website with regard to our products and services, provided that: - aid information is can be used for both personal and commercial purposes. - No alterations of any kind are made to said information. - No further statements and warranties shall be made with regard to said information or documents containing said information. - No statements and/or notifications indicating our ownership of and other legal rights and interests with regard to said information shall be removed, in part or in full.
일부 발췌 귀하의 콘텐츠. 귀하는 본 서비스에 인풋(“인풋”)을 제공할 수 있고 이를 바탕으로 본 서비스로부터 아웃풋(“아웃풋”)을 수령할 수 있습니다. 인풋과 아웃풋을 총칭하여 “콘텐츠”라고 합니다. 귀하의 콘텐츠가 관련 법률 또는 본 약관을 위반하지 않게 하는 등 콘텐츠에 대한 책임은 귀하에게 있습니다. 귀하는 본 서비스에 인풋을 제공하는데 필요한 모든 권리, 면허 및 허가를 보유하고 있음을 진술 보장합니다.

콘텐츠 소유권. 관련 법률상 허용되는 한도 내에서, 귀하와 OpenAI 중 귀하가 (a) 인풋에 대한 귀하의 소유권을 유지하고 (b) 아웃풋을 소유합니다. 당사는 아웃풋에 대한 당사의 권리, 소유권 및 이권이 있다면 그 모두 이로써 귀하에게 양도합니다.

  • 사용 라이선스 : MIT License

About

Dice Died During Dawn

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published