본문 바로가기
AI로 구현하기

처음 만든 마인크래프트 BE 도구 품질 시스템은 실제로 잘 작동했을까?

by 도안 2026. 9. 26.

 

앞선 글에서는 기획했던 마인크래프트 BE 도구 품질 시스템을 처음 실제 애드온으로 옮기면서 어디까지 구현할 수 있었는지를 정리했습니다.

 

아이템마다 품질을 부여하고, 대표 특징을 이름 앞의 수식어로 표시하며, 자세한 결과는 Lore에서 확인하는 기본 구조까지는 구현할 수 있었습니다. 반면 공격 사거리나 일부 능력치는 처음 생각했던 방식 그대로 적용하기 어려워 다른 방법으로 처리하거나 이후 작업으로 남겨두었습니다.

 

 

이번에는 그렇게 만들어진 첫 구현판을 실제 마인크래프트 BE 월드에 적용해 직접 테스트해봤습니다.

결과는 예상보다 명확했습니다.

품질이 생성되고 화면에 표시되는 부분은 생각보다 잘 작동했지만, 화면에 적힌 능력치가 실제 게임에서도 그대로 적용되는 것은 아니었습니다.

 

 

마인크래프트 BE 도구 품질 시스템은 처음에 어디까지 구현할 수 있었을까?

앞선 글에서는 마인크래프트 BE 도구 품질 시스템의 기획을 구현 담당 AI에게 넘기기 위해 인수인계 문서를 만들고, 실제 구현 전에 어떤 부분을 확인해야 하는지 정리했습니다. 마인크래프트 BE

buildtheidea.tistory.com

 

 

 

 

첫 구현판을 실제 월드에서 확인해봤다

 

먼저 여러 도구를 직접 얻고 제작하면서 품질 시스템이 제대로 적용되는지 확인했습니다.

이 부분은 생각보다 잘 작동했습니다.

 

검과 작업 도구에 품질이 붙었고, 품질에 따라 날카로운, 무딘 같은 특징이 아이템 이름 앞에 수식어로 표시됐습니다.

Lore에서도 품질과 특성을 확인할 수 있었습니다.

 

예를 들어 실제 테스트에서는

날카로운 나무 검

이라는 이름 아래에 품질: 견고가 표시되고, 특성으로 공격력 +2가 붙은 아이템을 확인할 수 있었습니다.

 

반대로

무딘 나무 검

에는 품질: 조잡, 공격력 -2가 표시됐습니다.

 

 

즉 처음 기획했던

품질 결정 → 특징 추첨 → 대표 특징을 이름에 표시 → 자세한 결과를 Lore에 표시

라는 기본적인 흐름 자체는 실제 게임 안에서도 확인할 수 있었습니다.

 

첫 구현 단계에서 가장 걱정했던 부분 중 하나가 같은 종류의 도구마다 서로 다른 결과가 제대로 표시되는지였는데, 적어도 이 부분은 의도한 형태에 가까웠습니다.

 

 

 

 

하지만 Lore에 적힌 공격력이 실제 피해에는 적용되지 않았다

문제는 실제 전투를 시작하면서 발견했습니다.

Lore에 공격력 +2라고 적힌 검을 사용하면 당연히 기본 검보다 피해량이 증가해야 합니다.

화면에 숫자가 표시되는 것만으로는 품질 시스템이 제대로 구현됐다고 볼 수 없기 때문입니다.

 

직접 몹을 공격하면서 체력 변화를 확인해보니 Lore에는 공격력이 증가했다고 표시되지만 실제 피해량에는 제대로 반영되지 않는 문제가 있었습니다.

 

이때부터 단순히 아이템이 정상적으로 보이는 것과 실제 기능이 정상적으로 작동하는 것은 전혀 다른 문제라는 것이 드러났습니다.

 

처음 구현 결과만 보면 이름도 바뀌고 Lore에도 수치가 표시되기 때문에 품질 시스템이 어느 정도 완성된 것처럼 보였습니다.

하지만 실제 공격을 해보지 않았다면 공격력 특성이 작동하지 않는다는 사실을 알아차리기 어려웠습니다.

 

 

 

 

공격력 감소는 피해를 줄이는 대신 체력을 다시 회복시키고 있었다

더 눈에 띄는 문제는 공격력 감소 쪽이었습니다.

 

첫 구현에서는 공격력을 직접 낮추는 대신, 우선 원래 공격 피해를 적용한 다음 감소해야 하는 수치만큼 대상의 체력을 다시 회복시키는 방식이 사용되고 있었습니다.

 

예를 들어 원래 4의 피해를 주는 검에 공격력 -2가 붙었다고 가정하면 의도한 결과는 단순합니다.

최종적으로 2의 피해만 입어야 합니다.

 

하지만 당시 구현 방식은

 

먼저 4의 피해를 입힘 →  이후 체력 2를 다시 회복시킴

 

이라는 순서였습니다.

 

 

 

체력이 충분히 남아 있는 대상에게는 결과만 보면 비슷하게 보일 수도 있습니다.

하지만 대상의 남은 체력이 4라면 문제가 생깁니다.

 

원래 의도대로라면 공격력 -2가 적용되어 2의 피해만 받고 살아 있어야 합니다.

그런데 기존 방식에서는 우선 4의 피해가 먼저 들어가기 때문에 대상이 그 순간 죽어버립니다.

 

이미 죽은 뒤에는 체력 2를 다시 회복시키는 보정이 의미가 없습니다.

즉 화면상으로는 공격력이 감소한 것처럼 만들 수 있어도 전투 판정 순서 자체가 올바른 공격력 감소와는 달랐던 것입니다.

 

 

 

 

 

결과가 비슷해 보여도 계산 방식이 다르면 문제가 생겼다

이 테스트에서 중요한 건 단순히 공격력 감소 기능에서 버그 하나를 발견했다는 점만은 아니었습니다.

처음에는 원래 피해를 준 뒤 감소량만큼 체력을 돌려주면 결국 같은 결과가 아닌가라고 생각할 수도 있습니다.

 

 

 

하지만 실제 게임에서는 피해가 적용되는 순간 사망 판정 같은 다른 처리도 함께 일어납니다.

그래서 최종 체력 숫자만 비슷하게 만드는 것과 처음부터 올바른 피해량을 계산해서 적용하는 것은 다른 결과를 만들 수 있었습니다.

 

품질 시스템처럼 실제 전투 능력치를 바꾸는 기능에서는 이런 처리 순서도 구현 조건에 포함해야 했습니다.

 

기획 단계에서는 단순히

 

공격력 -2

 

라고 정의하면 충분했지만,

 

구현 단계에서는 기존 공격이 발생하기 전에 계산해야 하는가, 이후에 보정해야 하는가

같은 문제까지 고려해야 했습니다.

 

 

 

 

공격력 비율도 계산 과정에서 사라지는 문제가 있었다

공격력에는 고정 수치뿐 아니라 비율로 증가하는 특성도 있었습니다.

예를 들어 기본 피해가 4인 나무 검에 공격력 +12%가 붙었다면 계산 결과는

4 × 1.12 = 4.48

이 되어야 합니다.

 

그런데 테스트 결과와 구현 코드를 구체화 담당에 다시 넘겨 분석하면서, 계산 과정에 반올림이 들어가 있다는 문제가 확인됐습니다.

기본 피해 4에서 목표 피해 4.48까지 추가해야 하는 값은 0.48입니다.

 

하지만 이 차이값을 정수로 반올림하면

 

0.48  →  0 이 되어버립니다.

 

 

결국 Lore에는 공격력 +12%가 존재하지만 실제 추가 피해는 0이 되는 것입니다.

이 문제는 API가 기능을 지원하지 않아서 생긴 것이 아니라 계산 로직을 구현하는 과정에서 소수값이 사라진 문제였습니다.

이런 부분 역시 실제 전투에서 직접 피해량을 비교해보지 않았다면 발견하기 어려웠습니다.

 

 

 

 

기본 Tooltip 정보도 처음에는 조금 헷갈렸다

테스트하면서 UI 쪽에서도 하나 확인할 부분이 있었습니다.

나무 검 Tooltip에는 품질 시스템이 추가한 Lore보다 위쪽에 +4 공격 피해라는 정보가 표시되고 있었습니다.

 

처음에는 이 숫자가 우리가 만든 품질 시스템의 공격력 표시와 어떤 관계인지 확인할 필요가 있었습니다.

분석해보니 위쪽의 +4 공격 피해는 품질 시스템이 추가한 Lore가 아니라 마인크래프트가 나무 검 자체의 기본 공격 피해를 표시하는 정보였습니다.

 

그 아래에 있는

품질: 견고

특성
공격력 +2

 

같은 부분이 품질 시스템에서 추가한 정보였습니다.

 

 

이렇게 실제 화면에서 확인해보니 기본 게임 정보와 새로 추가한 정보가 함께 표시될 때 플레이어에게 어떻게 보일지도 고려할 필요가 있었습니다.

단순히 Lore에 정보를 추가하는 것뿐 아니라 기존 마인크래프트가 이미 보여주는 정보와 겹치지 않는지도 확인해야 했습니다.

 

 

 

 

문제를 바로 수정하기보다 다시 구체화 담당에게 넘겼다

첫 테스트에서 문제가 발견됐다고 해서 구현 담당에게 바로

“공격력 안 되니까 고쳐줘”

라고만 전달하지는 않았습니다.

 

당시에 사용하던 작업 방식은 조금 달랐습니다.

 

구현 담당이 만든 결과물을 직접 테스트하고 문제가 발견되면, 그 구현 내용과 실제 테스트 결과를

다시 구체화 담당에게 전달해 분석하도록 했습니다.

 

구체화 담당에서는

 

어떤 부분은 정상인지,
어떤 부분에서 문제가 발생했는지,
기존 구조를 유지해야 하는 부분은 무엇인지

 

구현 담당이 정확히 어느 부분을 다시 수정해야 하는지를 정리했습니다.

그렇게 만든 수정사항을 다시 구현 담당에게 전달해 다음 버전을 만드는 방식이었습니다.

 

즉 작업 흐름이

 

 

구현 담당 제작


→  실제 마인크래프트에서 테스트
→  문제 발견
→  구체화 담당이 원인과 수정사항 정리
→  구현 담당에게 다시 전달

 

 

 

 

형태로 이어졌습니다.

 

 

처음 기획할 때 생각했던 기획 → 구체화 → 구현이 한 번으로 끝나는 것이 아니라, 실제 결과를 보면서 다시 구체화 단계로 돌아가는 구조가 된 것입니다.

 

 

 

첫 테스트에서 전부 실패한 것은 아니었다

첫 구현판에 문제가 있었다고 해서 품질 시스템 전체가 작동하지 않은 것은 아니었습니다.

오히려 이번 테스트에서는 잘 된 부분과 안 된 부분을 확실하게 나눌 수 있었습니다.

품질 생성,
아이템 이름의 수식어,
품질과 특성 Lore

 

 

서로 다른 도구에 개별 결과가 붙는 기본 구조는 실제 게임에서 확인할 수 있었습니다.

문제는 그다음 단계였습니다.

 

Lore에 표시한 공격력 수치를 실제 전투 결과와 연결하는 과정에서 계산 방식과 처리 순서가 제대로 맞지 않았습니다.

이 차이가 중요했습니다.

아이템에 공격력 +2라고 표시되는 것과 실제 공격력이 2 증가하는 것은 서로 다른 구현 단계였습니다.

 

 

첫 구현만 보고 화면이 정상적으로 나온다는 이유로 완성됐다고 판단했다면 이 문제를 그대로 지나칠 수도 있었습니다.

 

 

 

실제 테스트를 해보니 다음 수정 방향이 보였다

첫 테스트를 통해 품질 시스템의 기본 구조 자체를 다시 만들 필요는 없다는 것도 확인했습니다.

품질을 뽑고, 특징을 결정하고, 이름과 Lore에 결과를 표시하는 부분은 유지할 수 있었습니다.

대신 실제 전투에 연결되는 공격력 계산 방식을 다시 손볼 필요가 있었습니다

 

 

특히

  • 공격력 증가가 실제 피해에 반영되는지
  • 공격력 감소 방식에 발생할 수 있는 예외 상황을 어떻게 처리할지 
  • 퍼센트 공격력에서 소수값이 사라지지 않는지

 

같은 부분을 따로 검증해야 했습니다.

그리고 이 수정 작업은 단순히 코드를 오류 없이 실행시키는 것이 아니라, 실제로 몹을 공격했을 때 체력이 예상한 만큼 줄어드는지까지 확인해야 했습니다.

 

이번 첫 테스트에서 가장 크게 느낀 점도 이것이었습니다.

코드가 실행되는 것과 내가 기획한 기능이 실제 게임에서 올바르게 작동하는 것은 같은 의미가 아니었습니다.

 

다음 단계에서는 이번 테스트 결과를 바탕으로 구체화 담당이 정리한 수정사항을 다시 구현 담당에게 전달하고, 공격력 계산 방식이 실제 전투에서도 제대로 바뀌는지 다시 확인하게 됩니다.