게임 프로그래밍
Received: Jul. 30. 2018 Revised: Aug. 13. 2018 Accepted: Aug. 20. 2018
Corresponding Author: Dae-Woong Rhee(Sangmyung University) E-mail: [email protected]
ISSN: 1598-4540 / eISSN: 2287-8211
Ⓒ The Korea Game Society. All rights reserved. This is an open-access article distributed under the terms of the Creative Commons Attribution Non-Commercial License (http://creativecommons.otg/licenses/by-nc/3.0), which permits unrestricted non-commercial use, distribution, and reproduction in any medium, provided the original work is properly cited.
유전 알고리즘을 활용한 게임 캐릭터 능력치 생성 방식※
노해선*, 이대웅**
상명대학교 대학원 게임학과*, 상명대학교 ICT 융합대학 게임학과**
[email protected], [email protected]
A Game Character’s Ability Value Generation Method using Genetic Algorithm
Hae-Sun No*, Dae-Woong Rhee**
Dept. of Game Studies, Graduate School, Sangmyung University*
Dept. of Game Design and Development, College of ICT Convergence, Sangmyung University**
요 약
게임 캐릭터의 성장은 능력 수치의 가감으로 표현되는데, 이때 능력 요소는 게임에 따라 다 양하게 정의되고, 사용된다. 본 논문에서는 캐릭터의 능력 요소가 어떻게 정의되고 사용되는 지 알아보고, 캐릭터의 생성할 때, 능력 수치를 부여하는 방식에 대해 제안하고자 한다. 본 방 식은 캐릭터의 성장을 시간이라는 요소와 연결하여 시간의 변화에 맞추어 캐릭터가 적합한 능력 수치를 가지고 생성되도록 유전 알고리즘을 활용하여 디자인한다. 시간의 변화에 맞춘 실험을 통해 제안한 방식의 유효성을 검증한다.
ABSTRACT
The growth of a game character is represented by the addition and subtraction of the status value. The status factors are variously defined and used depending on the kind of games. In this paper, we propose how character 's status elements are defined and used.
We also propose a method for assigning a status value when generating a character considering growth. This method is designed using genetic algorithms to link the growth of a character with an element of time and to generate a character with the appropriate status value according to the change of time. The proposed method is verified through experiments based on time variation.
Keywords : 캐릭터 생성(character generation), 캐릭터 능력치(character ability value), 유전 알고리즘(genetic algorithm), 게임(game)
1. 서 론
RPG와 시뮬레이션으로 대표되는 캐릭터를 중심 으로 성장과 변화가 존재하는 게임은 하드웨어의 구분 없이 다양한 계층에 관심이 높은 장르이다.
게임 속 캐릭터는 ‘유저의 분신’으로 불리며 사용자 의 관심과 흥미를 이끄는 주된 역할을 담당하고 있고, 더불어 게임 캐릭터의 성장과 변화는 사용자 의 지속적인 관심과 흥미를 요구한다. 이런 요소들 은 온라인화 된 환경과도 적합해 시장 층이 점차 넓어지고 있다[1].
게임 캐릭터의 성장과 변화는 곧 능력이라고 불 리는 요소의 수치 가감을 통해 표현한다[2]. 많은 게임에서는 성장과 변화 요소를 가진 캐릭터의 능 력 수치 디자인을 위해 다양한 방법을 사용하고 있다. 하지만 온라인화 된 게임들의 비중이 높아지 면서 지속적인 게임의 업데이트나 개발진 변화 등 의 요소로 인해 현재의 캐릭터 능력 수치 디자인 방식을 포함한 다양한 문제점이 발생하고 있다.
문제점 해결을 위해 학계와 업계 모두 인공지능 기법과 학습 기법들을 사용한 연구들을 많이 진행 하고 있다[3]. 주된 연구 분야로는 기존에 많이 연 구된 NPC 행동 제어, 길찾기 알고리즘 뿐만 아니 라 캐릭터의 외형 디자인을 진화시키거나 캐릭터의 성능을 지속적으로 향상시키려는 연구가 점차 늘어 나고 있다[4][5]. 또한 플레이어의 플레이 패턴 등 을 분석하여 대응하는 설계 방식에 대한 연구도 점차 늘어나고 있다[6,7]. 하지만 캐릭터의 역할과 임무, 특징을 나타내는 기본적인 요소인 캐릭터 능 력치에 관련된 연구는 아직 많이 미흡한 상태이다.
본 연구에서는 게임 캐릭터의 성장에 따라 능력 치의 변화가 생기고, 이런 변화가 캐릭터의 수치적 인 특징을 표현하는 점을 기반으로 게임이 가진 캐릭터 데이터베이스를 이용해 유전 알고리즘을 활 용한 게임 캐릭터의 능력치 생성 방식을 제안하고 자 한다.
2장에서는 게임 캐릭터의 능력이 어떻게 정의되 고 표현되는지에 대해 알아보고, 3장에서는 게임
캐릭터의 성장을 고려한 능력치 생성 방식에 대해 알아본다. 4장에서는 제안한 방식에 대한 실험 및 결과에 대해 알아본다. 5장에서는 제안한 게임 캐 릭터의 능력치 생성 방식에 대해 정리해보고, 추후 연구과제에 대해 알아본다.
2. 관 련 연 구
게임의 캐릭터 능력치는 캐릭터 자체 혹은 역할 의 특징을 수치적으로 표현하며, 여러 게임들에서 다양한 형태로 각자만의 방식을 사용하여 이런 특 징을 표현하고 있다. 게임 캐릭터의 능력 요소를 수치적으로 계산하고, 표현하는 방식은 게임마다 다르지만 크게 캐릭터의 능력을 단순한 수치로 제 공하느냐, 아니면 능력의 조합, 규칙, 연산 등을 통 해 계산된 수치를 제공하느냐에 따라 구분할 수 있다[2].
2.1 게임 캐릭터의 능력치
게임 캐릭터의 상태나 능력을 표현하기 위해 게 임은 숫자를 사용한다. 이것을 능력치라고 하는데, 용어의 차이는 있지만 결국 게임의 캐릭터는 숫자 를 통해 자신의 강함과 약함을 표현하게 된다. 게 임에 따라 사용하는 능력치의 명칭과 표현 방식은 각기 다르지만 그 역할과 정의를 살펴보면 대부분 비슷한 형태를 취하고 있다는 것을 알 수 있다.
기존의 게임에서 캐릭터의 능력치는 어트리뷰트 (Attribute), 어빌리티(Ability), 스테이터스(Status) 등의 용어로 표현하였다[8]. 하지만 이런 캐릭터의 능력치 표현은 능력치를 계산하고, 표현하는 방식 의 차이가 있음에도 불구하고, 지금까지 구분하지 않고, 혼용하여 사용했으므로 방식의 차이에 따라 명확하게 구분이 필요하다.
본 논문에서는 게임 캐릭터의 능력치를 표현하 는 방식을 크게 Basic Ability와 Derived Ability, Overall Ability로 나누어 새롭게 정의해본다.
Basic Ability는 능력의 특별한 조합이나 연산 없이 순수하게 숫자로 부여된 능력치를 말한다. 주
로 절대적인 값으로 표현해야 하는 능력에서 많이 사용하는데 스포츠 게임이나 시뮬레이션 게임에서 많이 사용한다. Basic Ability의 수치는 다른 대상 과의 비교를 통한 상대적인 강함이나 약함이 아닌 본인이 가지고 있는 능력의 고유한 강함 정도를 나타내는 경우가 많다. 예를 들어 축구 시뮬레이션 게임에서 사용되는 주력(Pace), 천재성(Flair) 등의 능력이 여기에 해당된다. 언급한 능력들은 모두 다 른 대상과 비교하지 않아도 절대적인 수치로 표현 할 수 있는 능력들이다.
Derived Ability는 Basic Ability나 Derived Ability의 특정 조합이나 연산, 다른 캐릭터와의 능력 비교 등의 방식을 통해 계산된 수치를 표현 하는 방식이다. 다른 대상과의 상대적인 강함이나 약함을 수치로 표현할 때 많이 사용하고, 주로 RPG나 액션, 전략 시뮬레이션같이 전투나 결투 등 요소가 두드러진 게임 장르에서 사용한다. 예를 들 어 RPG나 전략 시뮬레이션 게임 속 캐릭터의 공 격력(Attack), 방어력(Defence), 피해량(Damage) 등의 능력치들은 다른 능력 수치들의 계산된 수치 로 표현된다. Derived Ability의 수치는 계산 방식 의 변화나 캐릭터의 Basic Ability 수치가 변화가 생기면 반드시 수치에 변화가 생기게 된다. 즉, 특 정한 다른 수치들에 연계되어 영향을 받도록 설계 된다.
게임에서 캐릭터의 능력은 적게는 몇 종류에서 많게는 수십 종류의 형태로 사용자에게 제공이 된 다. 따라서 사용자에게 제공되는 캐릭터 능력의 종 류가 많을수록 내 캐릭터가 얼마나 강한지 직·간접 적으로 알기 어렵다. 이런 이유로 특정 장르의 게 임에서는 Basic Ability나 Derived Ability의 종합 적인 값을 표현하는 Overall Ability를 제공하기도 한다.
[Fig.1] NBA2k17 Player’s Overall Ability
[Fig.1]은 NBA2k17에서 선수들의 Overall Ability를 표현한 그림으로 선수의 Overall Ability 수치를 100점 만점을 기준으로 얼마나 강한지 표 현한 수치이다. 즉, Overall Ability는 캐릭터의 포 괄적인 의미로 얼마나 강한지를 나타내는 능력이 다. 다양한 역할을 소화하는 캐릭터의 경우, 역할 에 따라 Overall Ability의 수치가 달라지기도 한 다. 주로 Overall Ability는 Basic Ability나 Derived Ability의 특정한 조합이나 연산을 거쳐 계산된 수치로 표현한다. Overall Ability는 역할에 따라 필요한 능력이 달라지는 스포츠 게임이나 시 뮬레이션 장르에서 많이 사용된다.
2.2 게임의 캐릭터 능력 표현
게임에서 캐릭터 능력을 표현하는 방식은 아래 와 같다.
1) Basic Ability만 사용
2) Basic Ability와 Derived Ability 사용 3) Basic Ability와 Overall Ability 사용 4) Basic Ability와 Derived Ability와 Overall Ability 모두 사용
우선 Basic Ability만 사용하여 캐릭터의 능력 을 표현하는 방식은 주로 시뮬레이션 장르의 게임
에서 많이 사용한다. 대표적인 게임으로는 육성 시 뮬레이션 장르 게임인 ‘프린세스 메이커’ 시리즈가 있다.
[Fig.2(a)] Princess Maker2’s Attributes
[Fig.2(b)] Princess Maker2’s Attributes
[Fig.2(a)]는 ‘프린세스 메이커2’의 게임화면이고, [Fig.2(b)]는 캐릭터의 Basic Ability를 좀 더 잘 알아볼 수 있도록 확대·편집한 그림이다. ‘프린세스 메이커’ 시리즈는 [Fig.2]에서 볼 수 있듯이 다양 한 Basic Ability를 게임 내에서 제공하고, Basic Ability 수치와 해당 수치들의 변화를 통해 형성된 캐릭터의 특징을 그래픽적으로 표현한다. 그리고 게임 내 시간이 흘러 캐릭터의 나이가 18세가 되 면 다양한 엔딩의 기준 능력치 조건들과 캐릭터의 최종 능력치들을 비교하여 엔딩이 결정되는 시스템 을 사용한다.
다음으로 Basic Ability와 Derived Ability의 조 합으로 게임 캐릭터의 능력치를 표현하는 방식이
있는데 주로 RPG 장르의 게임에서 많이 사용한다.
[Fig.3(a)] Diablo3 Character’s Basic Abilities &
Derived Abilities
[Fig.3(b)] Diablo3 Character’s Basic Abilities &
Derived Abilities
[Fig.3(a)]는 디아블로3의 게임 캐릭터 능력 화 면이고, [Fig.3(b)]는 능력치를 좀 더 잘 알아볼 수 있도록 일부 확대·편집한 그림이다. 디아블로3의 게임 캐릭터는 힘, 민첩, 지능, 활력과 같은 Basic Ability와 공격력, 방어도와 같이 Basic Ability의 조합으로 만들어진 Derived Ability로 구성된다.
디아블로3의 공식홈페이지에서는 공격력은 착용한 장비와 주요 능력치, 공격 속도, 극대화 확률에 의 해 수치가 결정된다고 설명하고 있다[9].
다음으로는 Basic Ability와 Overall Ability의 조합 으로 게임 캐릭터의 능력치를 표현하는 방식이다. 이 방 식은 스포츠 장르의 게임에서 주로 사용하는 방식이다.
[Fig.4(a)] FIFA Online3 Player’s Basic Abilities &
Overall Ability
[Fig.4(b)] FIFA Online3 Player’s Basic Abilities &
Overall Ability
[Fig.4(a)]는 피파온라인3의 선수 능력치를 표현 한 그림이고, [Fig.4(b)]는 능력치를 좀 더 잘 알아 볼 수 있도록 한 선수의 능력치를 확대·편집한 그 림이다. 공식 홈페이지에서 제공하는 선수 능력 데 이터베이스의 일부를 캡쳐하여 편집한 것으로 포지 션별 능력치에는 각 포지션별 Overall Ability이 표현되어 있고, 그 오른쪽으로는 각 Basic Ability 별 수치가 표현되어 있다.
마지막으로 Basic Ability와 Derived Ability, Overall Ability을 모두 조합하여 게임 캐릭터의 능력치를 표현하는 방식이다.
[Fig.5(a)] NHL 18 Character’s Basic Abilities, Derived Abilities & Overall Ability
[Fig.5(b)] NHL 18 Character’s Basic Abilities, Derived Abilities expression
[Fig.5(a)]는 NHL 18의 게임 캐릭터 능력 화면 으로 게임의 캐릭터 능력치는 Basic Ability와 Derived Ability, Overall Ability가 모두 사용된 대표적인 예이고, [Fig.5(b)]는 이 중 일부 능력치 를 확대한 그림이다. NHL 18은 Basic Ability와 Overall Ability는 숫자로 능력치를 표현하고 있고, Derived Ability는 ★(별/star)의 개수로 능력치를 표현하고 있다. Derived Ability는 Basic Abilities 의 연산을 통해 5★ 만점을 기준으로 0.5★ 단위로 표현하였다. 이런 능력치 표현 방식은 여러 종류의 능력치를 제공하고, 캐릭터끼리의 능력치를 자주 비교하는 스포츠 및 스포츠 시뮬레이션 장르에서 주로 사용한다.
3. 캐릭터 능력치 생성 방식의 제안
본 연구에서는 캐릭터 데이터베이스 기반으로 유전 알고리즘을 활용하여 캐릭터의 능력치를 생성 하는 C.A.G(Character Ability Generation) 방식 을 제안한다.
기존 연구에서 사용된 유전 알고리즘이 적합성 이 높은 부모를 찾아 교배를 통해 좋은 자식을 생 성한다는 점과 반드시 최적의 해를 구해야 하는 경우가 아닐 때 유용하다는 점에서 연구의 목적성 을 만족시키는 방법임을 알 수 있다. 하지만 다양 한 장르에서 사용되기엔 기존 연구가 가진 한계점 이 있다는 점에서 개선이 필요하다[10].
C.A.G 방식은 기존 연구로부터의 개선점에 맞
춰 몇 가지 사항을 적용하여 새롭게 디자인한다.
우선 게임 캐릭터의 능력 수치를 표현하는 방식을 Basic Ability, Derived Ability, Overall Ability으 로 세분화하여 재구성한다. 그리고 베이스 설정 단 계를 추가하고 게임 캐릭터 능력치 생성 단계를 보다 세밀하게 구성한다. 또한 설계 방식 변화에 맞추어 적합도 연산을 개선하고, 역할에 따른 가중 치 연산, VCO(Value-Calibration Operation)라고 정의한 보정 연산이 추가하여 기존 게임 캐릭터의 능력치를 보다 정교하게 부여하도록 설계한다.
3.1 C.A.G 방식의 캐릭터 능력치 표현
C.A.G 방식에서 사용하는 캐릭터 능력치 표현 은 Basic Ability와 Derived Ability, Overall Ability을 모두 조합하여 표현하는 방식으로 아래 [Fig.6]와 같다.
[Fig.6] The Relation of Basic Ability, Derived Ability & Overall Ability in C.A.G
[Fig.6]에서 Derived Ability는 Basic Ability의 집합에 대한 특정 연산을 통해 계산된 수치를 가 지게 되고, Overall Ability는 Derived Ability 집 합의 합 연산 혹은 평균 연산 수치를 가지게 된다.
이는 게임의 장르나 표현 방식에 따라 Overall Ability를 합 연산 수치로 사용할 수도 있고, 평균 연산 수치로 사용할 수도 있기 때문이다.
본 논문에서는 Overall Ability 수치를 합 연산 방식을 사용하여 표현한다. C.A.G 방식을 통해 생 성된 캐릭터의 Derived Ability 집합의 합 연산 수 치가 Overall Ability의 수치와 다를 경우, VCO를 통해 조정한다.
3.2 C.A.G 방식의 캐릭터 능력치 생성
본 연구에서 제안하는 C.A.G 방식의 게임 캐릭 터 능력치 생성 진행 단계는 아래와 같다.
[Fig.7] 3 Steps of Character Ability Generation [Fig.7]처럼 C.A.G 방식의 게임 캐릭터 능력치 생성은 크게 3단계로 나누어 볼 수 있는데 생성할
캐릭터의 기본적인 설정을 결정하는 ‘캐릭터 베이 스 설정 단계’와 부모집단을 선정하고, 교차할 대 상을 선정하는 ‘부모 선정 단계’, 그리고 교차 및 보정연산을 거쳐 캐릭터 능력 수치를 최종 부여하 는 ‘캐릭터 능력치 생성 단계’로 구성된다.
3.2.1 캐릭터 베이스 설정 단계(Character Base Set-up)
캐릭터 베이스 설정 단계에서는 ‘Roles’,
‘BelongTo’, ‘Times’, ‘Physical Condition’의 총 4 가지 설정이 이루어진다.
주된 임무를 수행하는 위치나 역할에 대한 설정 을 ‘Roles’이라는 용어로 정의한다. ‘Roles’ 설정에 서는 캐릭터의 역할과 역할에 따른 Basic Ability 들의 가중치 연산식 종류가 정해진다.
다음으로 ‘BelongTo’로 정의된 설정에서는 캐릭 터가 어떤 집단에 속해 있는지에 대한 결정을 한 다. 대개 길드나 국가와 같은 게임 캐릭터의 소속 집단이나 인간, 드워프 등의 종족에 대한 설정이 이루어지고, 스포츠 게임의 경우, 국적이나 소속팀 에 대해 설정한다.
다음으로 ‘Times’ 으로 정의된 설정은 게임 안 에서 캐릭터의 시간이 얼마나 흘렀는지의 정도를 나타낸다. Level이나 숙련도 등으로 표현되는 능력 에 대한 설정이다. 이 설정은 Overall Ability 수치 설정에 영향을 주는데 시간의 흐름이 적을수록 상 대적으로 적은 Overall Ability 수치를 가지고, 시 간의 흐름이 많을수록 높은 Overall Ability 수치 를 가지게 된다.
마지막으로 ‘Physical Condition’으로 정의된 설 정을 한다. 이는 신장, 몸무게 등의 신체적인 조건 에 대한 설정을 말하는데 이를 통해 특정 Basic Ability의 최대치 설정을 상대적으로 제한하는 것 이 가능하다. 예를 들어 키가 190cm이고, 몸무게 가 90kg인 축구 선수 A가 있다고 가정한다. 가정 한 게임에서 주력(Pace) Basic Ability의 최대 수 치는 20인데 선수 A는 ‘Physical Condition’ 설정
에 따라 주력 수치의 최대값이 20이 아닌 18로 설 정하는 것을 말한다. 즉, Basic Ability의 상대적 최대치를 설정하는 것이다. 이 설정은 Basic Ability의 최대 수치값에 영향을 주기 때문에
‘Roles’에 따라 결정되는 가중치 연산식에도 영향 을 미칠 수 있다.
이 단계에서는 4가지 베이스 설정을 모두 사용 할 수도 있고, 일부만 사용할 수도 있다. 하지만
‘Roles’와 ‘Time’ 설정은 반드시 포함되어야 한다.
이 두 설정을 통해 가중치 연산식과 Overall Ability 수치가 결정되기 때문이다.
캐릭터 베이스 설정 단계에서 작성된 결과들은 다음 단계에서 부모집단의 설정의 조건으로 사용된 다. 그리고 Overall Ability 수치는 마지막 ‘캐릭터 생성 단계’에서도 사용되는 중요 수치이다.
3.2.2 부모 선정 단계(Parent Selection)
부모 선정 단계에서는 ‘캐릭터 베이스 설정 단 계’에서 만들어진 조건들을 기반으로 유전 알고리 즘을 활용하여 기존의 캐릭터 데이터베이스에서 후 보 집단을 선정하고, 선정된 후보 집단의 적합도 연산과 선택 연산을 통해 교차 대상이 될 부모를 선정한다.
후보 집단의 선정은 ‘캐릭터 베이스 설정 단계’
의 결과를 기반으로 기존 캐릭터 데이터베이스에서 추출한다. 예를 들어 축구 시뮬레이션 게임에서의 캐릭터 능력치를 생성한다고 가정한다면 ‘Roles’를 공격수로, ‘Times’을 23세로 ‘캐릭터 베이스 설정 단계’에서 설정하고, 기존 게임의 캐릭터 데이터베 이스에서 ‘Roles’은 공격수이면서 ‘Times’이 23세 인 캐릭터들만 선택하여 후보 집단을 선정한다는 의미이다.
선정된 후보 집단에 대해 적합도 연산을 진행한 다. 적합도 연산이란, 후보 집단의 캐릭터 능력치 가 부모로써 얼마나 적합한 조건을 갖추었는지 판 단하기 위한 연산이다.
≦ ≦ ≦ exp
for
for
for
for
for
(expression1)은 적합도 연산에 대한 수식으로
‘Roles’에 대한 일치도(Matching Figure)와 친숙도 (Familiarity)의 두 종류 수치를 기반으로 계산된 다. 또한, 복합적인 역할을 가지는 게임 캐릭터들 이 존재하기 때문에 적어도 두 가지 역할에 대해 적합도 연산을 진행하도록 구성하였다. 일치도와 친숙도는 모두 0~20의 수치를 가지는데 0은 해당 역할에 전혀 일치하지 않거나 친숙하지 않음을 의 미하고, 20은 해당 역할에 완전하게 일치하거나 친 숙하다는 것을 의미한다. 게임 캐릭터는 적어도 하 나의 역할을 부여받기 때문에 ‘Main Role’은 일치 도와 친숙도 모두 0이란 수치를 가질 수 없다. 캐 릭터의 주된 역할과 보조적인 역할을 구분하여 적 합도를 계산하기 위해 계산식 수치를 다르게 구성 한다.
이 과정을 통해 후보 집단의 캐릭터들은 적합도 수치를 가지게 되고, 이 수치는 선택 연산에서 사 용된다. 선택 연산은 새로운 캐릭터를 생성하기 위 해 사용될 교차 대상인 부모를 선택하는 연산이다.
유전 알고리즘에서 사용되는 선택 연산은 ‘품질 비 례 룰렛휠 선택 연산’, ‘토너먼트 선택 연산’, ‘순위 기반 선택 연산’ 등이 있는데 본 연구에서는 ‘품질 비례 룰렛휠 선택 연산’을 사용한다. 이 연산은 적 합도 연산에서 높은 수치를 기록한 후보가 교차 대상인 부모로 선택될 확률이 높도록 설계된 연산 방식이다[6].
3.2.3 캐릭터 능력치 생성 단계(C.A.G)
캐릭터 생성 단계에서는 교차 대상으로 선택된 부모를 ‘교차 연산’을 진행하여 새로운 자식 캐릭터
를 생성하고, 생성된 자식 캐릭터의 능력 수치를 가중치 연산식을 통해 계산한다. 계산된 수치는 미 리 자식 캐릭터에게 부여된 Overall Ability 수치 와 비교한다. 만약 두 수치가 다를 경우, VCO를 통해 능력 수치를 보정하고, 보정이 완료되면 최종 적으로 자식 캐릭터 능력 수치 생성이 완료된다.
유전 알고리즘의 교차 연산은 ‘일점 교차 연산’,
‘다점 교차 연산’, ‘균등 교차 연산’, ‘싸이클 교차 연산’, ‘순서 교차 연산’, ‘PMX(Partially Matched Crossover) 연산’, ‘산술적 교차 연산’, ‘휴리스틱 교차 연산’, ‘블록 균등 교차 연산’ 등이 있는데 본 연구에서는 ‘균등 교차 연산’을 사용한다. 균등 교 차 연산은 이론적으로 모든 재조합 가능성을 열어 놓는다는 특징이 있어 가장 다양한 조합을 만들어 낼 수 있다[11]. 이런 특징으로 통해 다양한 캐릭 터의 수치적 특징을 갖도록 할 수 있기 때문이다.
균등 교차 연산을 통해 부여된 캐릭터 능력 수치 는 반드시 가중치 연산을 통해 Overall Ability 수 치와 같은지 반드시 확인하는 절차가 필요하다. 균 등 교차 연산은 가중치 연산 전에 진행되기 때문에 Overall Ability 수치와 같은지 확인할 수 없기 때 문이다. 가중치 연산을 통해 계산된 수치가 Overall Ability 수치와 같다면 그대로 캐릭터 생성이 완료 되고, 같지 않다면 VCO 연산 단계로 넘어간다.
[Fig.8] Pseudo-Code about VCO
[Fig.8]처럼 VCO는 생성된 캐릭터의 능력인 Basic Ability 수치의 합계가 Overall Ability 수 치와 같은지 비교하고, 보정하는 연산이다. Basic Ability 중 랜덤하게 하나를 선정하고 Basic Ability의 합계가 Overall Ability 수치보다 클 경 우에는 -1을, 작을 경우에는 +1을 한다. 그리고 다 시 Basic Ability의 합계와 Overall Ability 수치 가 같은지 확인한다. 이런 과정을 반복하면서 두 합이 같도록 한다.
마지막 보정 작업인 VCO까지 거치면 캐릭터의 능력 수치 생성이 완료된다. 이렇게 완성된 캐릭터 능력은 기존 캐릭터를 기반으로 하여 밸런스 유지 에 용이하면서도 각 캐릭터마다 능력 수치의 차이 점을 통한 고유의 특징을 갖도록 한다. 또한 유전 알고리즘을 통해 캐릭터 능력 수치가 부여되었기 때문에 유저가 직접 조작을 하는 주인공 캐릭터뿐 만 아니라 NPC나 몬스터와 같은 다량의 자동 생 성이 필요한 대상의 절차적 콘텐츠 생성에 도움을 줄 수 있다. 유전 알고리즘의 경우, 일반적인 해를 찾기 힘든 문제들에서 뛰어난 성능을 발휘하는 알 고리즘으로 반드시 최적의 해를 구해야 하는 경우 가 아닐 때, 매우 유용한 방법 중 하나이며, 시간 이 흐를수록 문제에 대한 최적해를 찾아가는 특징 도 가지고 있기 때문에 시간의 변화에 따른 몬스 터의 자동 생성 시 난이도 조절 효과까지 기대할 수 있다[12].
4. 실험 및 평가
본 연구에서는 제안 방식인 C.A.G 방식과 한 축구 시뮬레이션 게임의 캐릭터 데이터베이스를 활 용하여 실험을 진행하였다.
본 실험에는 시간에 따른 변화에도 상황에 맞게 캐릭터의 수치가 부여되어 생성됨을 증명하기 위해 다음과 같은 실험조건을 설정하였다. ‘Roles’ 요소 중 ‘Main Role’은 공격수, ‘Second Role’은 없음으 로 구성하고, 축구 시뮬레이션 게임에서 ‘Age’로 표현되는 ‘Times’ 요소는 22세, 28세, 34세로 제한
한다. 이번 실험에서는 ‘BelongTo’와 ‘Physical Condition’ 요소는 제외한다. 두 요소는 캐릭터를 생성할 때 반드시 필요한 Overall Ability과 가중 치 연산에 영향을 주는 요소가 아니기 때문이다.
캐릭터 데이터베이스로 활용한 축구 시뮬레이션 게임에서 제공하는 약 40여개의 Basic Ability 집 합 중 ‘Roles’ 요소와 Derived Ability에 직접적인 영향을 주는 요소를 고려하여 [Fig.9]처럼 30개의 Basic Ability로 구성하였다.
[Fig.9] 3 Types of Derived Abilities for Basic Abilities
캐릭터의 Basic Ability 집합은 능력의 성격에 따라 기술적 Derived Ability, 정신적 Derived Ability, 육체적 Derived Ability로 구분하여 분류 하였다. 주발(Preferred Foot)의 경우, 별도의 Basic Ability로 정의되어 있기 때문에 Overall Ability을 연산하는 가중치 연산에는 사용하였으나 실험결과를 표현하는 그래프와 표에서는 제외한다.
이를 기반으로 자식 캐릭터의 ‘Main Role’은 후 보 집단에 맞춰 공격수만 생성하도록 가정하고, 적 합도 연산의 기준이 되는 일치도와 친숙도는
“Main Role”이 공격수이며, 18이상의 친숙도를 가 진 캐릭터를 기준으로 후보 집단의 선정을 완료한 다.
다음으로 ‘품질비례 룰렛휠 선택 연산’을 통해 교차 대상인 부모를 선택하고, ‘균등 교차 연산’을 통해 자식 캐릭터에게 능력 수치를 생성한다. 자식 캐릭터의 능력 수치는 가중치 연산을 통해 Overall
Ability 수치와 일치 여부를 확인하고, 불일치할 경우, 보정 연산인 VCO를 진행한다. 이 과정을 통 해 최종적으로 자식 캐릭터의 모든 능력 수치가 생성·완료된다.
본 실험은 캐릭터 베이스 설정 단계의 “Times”
요소에 해당하는 “Age”를 기준으로 22세, 28세, 34세의 3종류 캐릭터 생성을 목표로 진행된다.
“Age”는 시간의 흐름을 나타내는 ‘Times’를 본 실 험 환경에 맞도록 재정의한 것으로 시간의 흐름에 맞춰 생성된 자식 캐릭터들이 얼마나 후보 집단 및 부모 캐릭터와 능력적으로 유사성을 가지고 있 는지 비교하기 위한 요소이다. 이를 기반으로 C.A.G 방식을 구현한 프로그램을 통해 각각 100명 의 자식 캐릭터를 생성하도록 실행한다.
본 실험은 기존의 축구 시뮬레이션 게임의 캐릭 터 데이터베이스로부터 실험 조건에 맞게 추출된 후보 집단 캐릭터들 중 임의로 10명을 추출하고 (A), C.A.G 방식을 통해 생성된 자식 캐릭터들 중 10명을 임의로 추출하여(B) 아래와 같이 실험결과 를 정리하였다. 이를 통해 후보 집단 캐릭터들과 C.A.G 방식을 통해 생성된 자식 캐릭터들의 Basic Ability 수치와 Overall Ability 수치를 비교해 캐 릭터들의 능력 수치 간의 유사성과 차이점을 통한 캐릭터의 수치적 특징 형성에 대해 알아본다.
[Fig.10] The Character’s Basic Abilities’ Value and The Min, Max and Avg of Character’s Overall
Ability Value(22 years old)
[Fig.10]은 ‘Age’ 요소를 22세로 설정하여 임의 로 추출된 10명의 후보 집단 캐릭터들의 능력치 분포도와 C.A.G 방식을 통해 생성된 자식 캐릭터 들 중 임의로 선정한 10명의 능력치 분포도를 그 래프로 표현한 것이다. 더불어 선정된 캐릭터들의 Basic Ability를 가중치 연산을 통해 계산한 Overall Ability의 최소값과 최대값, 평균값을 함께 표현하였다.
두 가지 형태로 만들어진 22세 집단은 캐릭터의
능력치 분포나 Overall Ability를 비교했을 때, 유 의미한 유사성을 가지고 있음을 알 수 있다.
[Fig.11] The Character’s Basic Abilities’ Value and The Min, Max and Avg of Character’s Overall
Ability Value(28 years old)
[Fig.11]은 ‘Age’ 요소만 28세로 설정하여 [Fig.10]와 같은 방식으로 진행한 실험의 결과값을 그래프로 표현한 것이다. 28세 집단 역시 캐릭터의 능력치 분포나 Overall Ability를 비교했을 때, 유 의미한 유사성을 가지고 있음을 알 수 있다.
[Fig.12] The Character’s Basic Abilities’ Value and The Min, Max and Avg of Character’s Overall
Ability Value(34 years old)
마지막으로 [Fig.12]은 ‘Age’ 요소만 34세로 설 정하여 같은 방식으로 진행한 실험의 결과값을 그 래프로 표현한 것이다. 앞선 [Fig.10], [Fig.11]의 결과와 마찬가지로 34세 집단 역시 캐릭터의 능력 치 분포나 Overall Ability를 비교했을 때, 유의미 한 유사성을 가지고 있음을 알 수 있다.
22세와 34세의 경우, 28세 집단에 비해 Overall Ability가 적은 것을 알 수 있는데 이는 캐릭터에 게 축구 시뮬레이션 게임이 가지고 있는 특징이
반영되어있기 때문이다. 일반적으로 축구 선수의 경우, 20대 중후반의 나이를 전성기라고 부르고 가 장 능력적으로 출중한 시기라고 말한다. 그리고 30 세가 넘어가면 신체적인 능력을 포함한 전체적인 능력이 떨어지게 된다. 이런 특징이 게임에도 반영 되어 유망주라고 불리는 20대 초반인 22세보다 전 성기 나이인 28세가 Overall Ability가 더 높으며, 전성기가 지나 전반적인 능력이 떨어지는 시기인 34세의 경우, 28세보단 Overall Ability가 떨어지 게 된다.
[Table 1] Derived Ability’s Values through 3 Different Times and 2 Ways
[Table 1]는 앞선 실험 결과를 Derived Ability 별로 정리하여 표로 표현한 것이다. 본 실험에서는 각 Derived Ability별 수치를 해당 Basic Ability 수치들의 합계로 표현한다. 그렇기 때문에 가중치 연산을 통해 만들어진 Overall Ability와 다른 값 을 갖는다. [Table 1]에서 보면 축구 선수의 최고 전성기 나이대로 볼 수 있는 28세일 때, 모든 부분 에서 22세와 34세에 비해 상대적으로 높은 능력치 를 가진다. 반면 22세의 경우, 모든 면에서 아직 성장이 가능한 시기이기 때문에 전체적으로 28세 에 비해 상대적으로 낮은 능력치를 가진다. 34세의 경우, 축구 선수의 신체적 능력이 많이 떨어지는 시기이므로 22세나 28세에 비해 ‘Physical Derived Ability’ 수치가 적은 것을 볼 수 있다. 반면 22세 에 비해 ‘Mental Derived Ability’ 수치는 조금 더 높음을 볼 수 있다. 이는 축구 선수가 나이를 먹어 가면서 정신적으로 강해짐을 의미하는 ‘노련해진다’
혹은 ‘성숙해진다’는 표현을 수치화했다고 볼 수 있 다. 이처럼 시간의 흐름에 따라 능력이 높아졌다가 떨어지는 현상이 발생하는 것이 축구 시뮬레이션
게임이 가지고 있는 캐릭터 능력치의 특징이다.
반면 RPG의 경우에는 시간의 흐름에 따라 캐릭 터의 능력 수치는 올라가기만 하는 것이 대부분이 다. RPG의 시간의 흐름은 ‘Level’이라는 요소로 표현할 수 있는 ‘Level’은 시간의 흐름 외에도 캐 릭터의 강함 정도까지 포함된 개념이기 때문에 점 차 강해지도록 디자인되어있다. 이런 게임의 특징 적인 부분을 감안하더라도 제안한 방식은 캐릭터를 생성할 때 각 시간의 흐름에 맞도록 능력 수치를 부여하기 때문에 다양한 장르의 게임에 적용가능한 방식이다. RPG의 경우, 어느 시점에 캐릭터를 생 성하더라도 생성 시점에 존재하는 기존 캐릭터 능 력치에 맞춰 생성된 캐릭터의 능력치가 부여되기 때문이다.
이는 두 방식의 캐릭터 능력 요소별 AVG(평균 값)과 STDEV(표준편차)를 통해서도 알 수 있다.
[Table 2] AVG and STDEV through 3 Different Times and 2 Ways
[Table 2]는 두 방식의 캐릭터 능력치의 AVG 와 STDEV의 값을 3가지(22세, 28세, 34세) 시간 대로 표현한 표이다.
[Fig.13] AVG and STDEV through 2 Ways in 22 years old
[Fig.14] AVG and STDEV through 2 Ways in 28 years old
[Fig.15] AVG and STDEV through 2 Ways in 34 years old
[Fig.13], [Fig.14], [Fig.15]는 [Table 2]의 결과 수치를 시간대(나이)별로 구분하여 그래프화한 것 이다. 이를 통해 제안한 방식으로 생성된 캐릭터의 능력치가 시간의 설정이 달라지더라도 같은 시간의 기존 캐릭터의 능력치와 비슷한 능력치를 부여받아 생성됨을 보여주며, 캐릭터의 능력치 밸런스가 잘 유지되고 있음을 나타낸다.
이는 제안한 C.A.G 방식이 가진 목적인 주인공 캐릭터뿐만 아니라 다수를 설계해야 하고 시간의 설정이 다양해야 하는 NPC나 몬스터 캐릭터의 능 력치를 부여하여 생성하는데 도움이 될 수 있음을 보여준다.
이런 캐릭터의 능력치 디자인은 추후 다른 스포 츠 시뮬레이션 게임에도 적용할 수 있을 뿐만 아 니라 RPG와 시뮬레이션 같이 캐릭터의 능력치 변 화, 성장 요소를 고려하고, 다수의 캐릭터를 다양 한 시간 설정으로 생성해야 하는 장르의 게임에도 도움이 되는 방식이라고 볼 수 있다.
5. 결 론
본 논문에서는 게임이 가진 캐릭터 데이터베이
스를 이용해 유전 알고리즘을 활용한 게임 캐릭터 의 능력치 생성 방식인 C.A.G 방식을 제안하였다.
C.A.G 방식은 기존 연구에 캐릭터의 능력을 정리 하고 수치를 표현하는 방식을 세분화하여 재구성하 고, 생성 단계를 세분화 및 체계화하였다. Basic Ability, Derived Ability, Overall Ability와 가중 치 연산, VCO라는 요소를 통해 게임 캐릭터의 능 력치 부여를 기획자의 의도와 절차적 콘텐츠 생성 에 적합하도록 세밀하게 개선하였다. 이를 통해 다 양한 형태의 캐릭터를 생성할 수 있어 주인공 캐 릭터뿐만 아니라 다양한 상황과 조건에 맞춰 다량 의 생성이 필요한 NPC나 몬스터와 같은 게임 캐 릭터의 능력치 생성에 도움이 될 것으로 판단된다.
하지만 본 연구에서 참고한 게임의 코드를 직접 적으로 사용할 수 없어 별도의 데이터베이스를 만 들어 구현했다는 점과 C.A.G 방식을 실제 게임에 직접적으로 사용하지 못하고 실험을 진행하였기 때 문에 시간의 흐름을 실험에 적용하는 부분에 있어 제약이 많았다는 점에서 한계점을 가진다.
향후 연구를 통해 게임 플레이가 지속됨에 따라 단순히 캐릭터의 능력치를 부여하고 생성하는 것이 아니라 사용자의 캐릭터 선호 성향이나 패턴, 컴퓨 터의 AI 패턴을 분석하여 각 상황에 맞추어 캐릭 터의 능력치를 부여하고 생성할 수 있도록 개선·발 전시킬 필요가 있다. 이를 통해 본 제안 방식인 C.A.G 방식이 다양한 장르의 게임에서 다양한 형 태의 캐릭터 능력치를 생성하는 방식으로 보완될 것이라 기대한다.
ACKNOWLEDGMENTS
This study was supported by the study fund of Sangmyung University in 2018.
REFERENCES
[1] Morton D. Davis, “Game Theory: A Nontechnical Introduction”, Dover Publications, July, 1997
[2] Rollings, A. & Adams, E. “Game Design.
Indianapolis: New Rider”, NRG, 2003
[3] Yong-Woo Shin, “Control of Intelligent Characters using Reinforcement Learning”, Journal of Korean Society for Internet Information, Vol 8, No. 5, pp.91-97, 2007 [4] D. Fu, Y. Houlette, S. Henke, “Putting AI in
Entertainment: An AI Authoring Tool for Simulation and Games”, IEEE Intelligent and Systems, Vol 17, No. 4, pp.81-84, 2002 [5] Myun-Sub Lee, “Performance Evaluation of
Intelligent Characters for Fighting Action Games Using Genetic Algorithms”, Journal of the Institute of Electronics Engineers of Korea, Vol 41, No. 4, pp.119-128, 2004.
[6] Sinku Lee, Minsu Kang, Sangjin Lee, “Game Character Growing System using Player Type Analysis based on Petri-net”, Journal of Korea Game Society, Vol 15, No. 6, pp.131-140, 2015
[7] Jun He, Jae-Woong Kim, “A Design Method of Game Monster Battle using AI for Genetics”, Journal of Korea Knowledge Information Technology Society, Vol 7, No. 2, pp.85-91, 2012 [8] 손형률, “게임 밸런스 이야기”, Hanbit Media, 2014 [9] Diablo3, https://kr.diablo3.com/ko/game/guide/
gameplay/fundamentals#core-controls
[10] Hae-Sun No, Dae-Woong Rhee, “A Study on The Game Character Creation Using Genetic Algorithm in Football Simulation Game”, Journal of Korea Game Society, Vol 17, No.
6, pp.129-138, 2017
[11] Byun-Ro Moon, “Easy Learning Algorithm:
An Evolutionary Approach”, HanbitMedia, 2008.
[12] Thang Nguyen Bui and Byung Ro Moon,
“On multi-dimensional encoding/crossover”, International Conference on Genetic Algorithms, pp.49-56, 1995.
노 해 선 (No, Hae-Sun)
약 력 : 2012년 2월 상명대학교 대학원 게임학과 박사수료 2014년 2월∼현재 ㈜로직이엔씨 개발총괄 2014년 9월∼현재 배화여자대학교 스마트IT과 겸임교수 관심분야 : 게임 기획, 게임 프로그래밍, 알고리즘
이 대 웅 (Rhee, Dae-Woong)
약 력 : 1996년 8월 서울대학교 대학원 계산통계학과 이학박사 1990년 4월∼현재 상명대학교 게임학과 정교수 관심분야 : 게임 기획, 게임 프로그래밍