SMAIVNN
article thumbnail

캐릭터를 육성하는 프로젝트를 하나 진행하고 있다. 

퀘스트와 같은 행위를 완료할 경우 경험치가 증가하는 알고리즘을 작성해야하는데, 이를 위해 고려할 것이 조금 있다.

 

요구사항

  1. 특정 행동을 완료 했을 때 해당 행동의 카테고리에 속한 능력치의 경험치가 상승한다. 예를 들어 팔굽혀펴기를 하면 근력 경험치가 상승한다.
  2. 레벨이 상승할수록 행동에 대해 요구하는 역치가 증가한다. 예를 들어, 근력 레벨 1이 팔굽혀펴기 10개를 하면 힘들어 하지만, 레벨 3이 팔굽혀펴기 10개를 하면 쉬워한다.

 

이러한 것을 기반으로, 내가 구현할 것에는 다음과 같은 고민이 필요했다.

  • 유저 행동은 정말 다양한데, 어떻게 카테고리화 시킬 것인가?
  • 마찬가지로, 사람의 행동은 정말 다양한데 이것에 대한 경험치는 어떻게 정의할 것인가?
  • 레벨 상승에 대한 역치는 어떻게 증가시킬 것인가?

이러한 문제점을 껴안고 우선 다양한 게임에서 어떻게 레벨과 관련한 문제를 진행하는지 찾아보았다.

 

다양한 방법

레벨별 필요 경험치 증가

말 그대로 레벨마다 경험치 획득향을 증가시킨다.

예를 들어, 각 레벨에서 얻는 경험치의 양을 조절하여 낮은 레벨에서는 빠르게 상승하고, 높은 레벨에서 느리게 상승하도록 하는 것이다.

다양한  RPG게임에서 다음과 같은 방식을 사용하고 있다. 메이플스토리를 예로 들면 레벨이 오를수록 요구되는 경험치의 양은 많아진다. 

 

행위 강도에 따른 경험치 증가

특정 행위의 강도에 따라 경험치 증가율을 높인다. 행위의 난이도가 높을수록 제공하는 경험치가 높아진다. 

메이플스토리의 예시를 든다면, 주황버섯과 크림슨발록이 제공하는 경험치가 다른 것과 같다. 이를 현실 행위에 적용한다면 팔굽혀펴기 10개는 10의 경험치, 100개는 1000의 경험치를 제공한다.

 

기간 유지에 따른 보너스

특정 행위를 반복하도록 일정 기간 동안 연속적으로 행위를 수행하는 것에 따른 경험치를 부여하여 지속적인 활동을 장려한다. 이는 다양한 운동 어플리케이션에서 확인하였다. 운동을 매일 나가고 지속할수록 제공되는 경험치에 추가 점수를 부여한다. 게임으로 비유하자면 출석 이벤트와 같다.

 

문제 해결

우선, 나는 위에 설명한 다양한 방법 모두를 적용하기로 하였다. 하지만 이 방법을 모두 활용하기 전 앞서 설명한 문제점을 어떻게 해결할 것인가?라는 의문이 먼저 생긴다. 구현은 그 다음이다.

 

AI를 공부해서 학습을 시킨 후 사람에 맞는 강도를 설정한다면 매우 편하겠지만 배보다 배꼽이 더 큰 상황이 나올것 같아서 다른 방법을 생각해본 결과 몇가지 후보가 추려졌다.

 

chatgpt AI 활용

첫번째 방법이다.

게임에서 주로 캐릭터를 수치화할 때 사용하는 스텟은 "체력", "힘", "민첩", "지능"이 있다. 이 외에 "매력", "운" 과 같은 추가적인 요소가 들어간다.

 

유저의 행동에 대해서 이를 위 나열한 스텟들 중 N개로 카테고리화 하는 첫번째 방법은 AI api를 활용하는 것이다. 유저의 행동이 어떤 범주로 나누어 지는지 판단을 맡기고, 이를 활용한다면 적절히 분류할 수 있을 것이다.

 

또한, 운동 어플리케이션에서 사용하는 것 처럼, 나의 스텟 정보, 나의 신체 정보를 같이 활용할 경우, 특정 행동이 나에게 얼마나 적합하고, 어느 정도의 경험치가 적당한지 적정량을 근사치에 맞게 알 수 있을것이다.

 

내가 할 것은 레벨별로 레벨업에 필요한 경험치를 정해놓고 AI를 활용한 알고리즘을 구현하는 것이다.

 

자체적인 구현

외부 api에 의존하는 것은 썩 좋은 방법은 아니다. 해당 api가 기능하지 않을 경우를 대비하여야 한다.

이 때, 자체적인 카테고리화와 행위 판단이 적용되어야 한다.

 

이것은 유저의 판단을 활용하는 것이 적절하다고 생각했다. 예를 들어, 오늘의 행위가 어떤 범주의 행동이였고, 어려웠는지, 평이 했는지, 쉬웠는지와 같이 유저가 직접 설정하는 것이다. 즉, 유저가 직정 양심껏 조정하게 되는것이다.

이는 todolist라는 어플의 특성과 유저가 직접 이용하고 설정하는 것을 바탕으로 진행되기에 가능하다고 판단하였다.

 

예외 판단

유저가 todo를 선정할 때 의미 없는 행위를 적을 때를 판단해야한다.

이것도 마찬가지로 AI를 활용한 후, 자체적으로 필터링을 한번 더 적용하는 방식을 진행하는 것으로 구현하는 것으로 설정하였다. 경험치와 관련 된 것이므로 소위 말하는 "경작"을 최대한 방지하여야 한다.

 

 

 

이후 게시물은 API 정의와 구현으로 진행됩니다.

profile

SMAIVNN

@SMAIVNN

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!