취재

[NDC 16] 한 달에 하나씩 추가한 캐릭터! '최강의군단'이 밝힌 업데이트 비밀

한낮 (안정빈) | 2016-04-29 18:05:54

온라인게임에서 캐릭터를 한 달에 하나씩 업데이트 한다. 그것도 비슷하지도 않은 스킬 구조와 전투방식을 가진 캐릭터를. 가능할까? 일반적인 개발사라면 불가능하다는 결론을 내렸을 거다. 혹은 개발자들에게 지옥 같은 일정을 요구하거나.

 

<최강의 군단>은 좀 달랐다. 매달 한 명의 캐릭터 업데이트를 진행했고 성공했다. 에이스톰은 대형개발사가 아니었고, 프로그래머가 많은 회사도 아니었다. 그들이 가능했던 이유는 하나. 기획자 스스로가 게임 개발에 참가하도록 유도하는 ‘스킬 툴’이었다. /디스이즈게임 안정빈 기자


 

에이스톰의 백승민 개발실장

 

캐릭터의 스킬은 이제 점점 더 많은 장르의 게임에서 활용되고 있다. 그리고 유저가 바라는 스킬은 점점 복잡해지는데 한 캐릭터에 필요한 스킬은 점점 늘어나고 있다. 스킬 프로그래머의 과제다. 

 

스킬 기획의 다양성을 제한하지 않으며 빠르게 개발하려면 어떻게 해야 할까? 더 이상 지샐 밤도 없는데? 에이스톰의 백승민 개발실장은 고민을 다른 방향으로 풀었다. '기획자에게 직접 스킬을 만들게 하자'

 

백승민 실장은 일단 스킬 개발방식을 3가지 종류로 구분했다. 특정한 툴 없이 하나씩 스킬을 개발하는 하드코딩 방식과 <최강의 군단>에서 활용한 자체 스킬 툴 방식, 에이스톰의 신작인 <건파이트 맨션>에서 활용 중인 언리얼4의 블루프린트를 활용하는 방식이다.

 

그리고 같은 스킬을 각각의 방식을 활용했을 때 제작과정이 어떻게 달라지는 지를 통해 보다 자신의 팀에 맞는 효율적일 스킬 개발방식을 택하기는 권했다.

 


 


 

■ 예시스킬

 

예시가 되는 스킬은 액션게임에 흔한 반격기다. 스킬을 사용하면 방어모션을 취하고 1초가 지나면 스킬이 자동으로 종료된다. 방어모션 중 공격을 받으면 3m 내에 공격자가 있을 때 반격을 한다.

  

■ 1. 하드코딩

 

하드코딩은 기획자가 스킬 아이디어를 프로그래머에게 전달하면 프로그래머가 리소스를 받아서 이를 구현하는 전통적인 방식으로 진행된다. 

 

하드코딩 방식의 장점은 시스템과 툴을 구축하기 위한 비용이 저렴하다는 것이다. 그래서 기간이 짧은 프로젝트나 프로토타입을 만들 때 유리하다. 또 구현할 수 있는 기획의 제한이 거의 없는 만큼 오히려 복잡한 스킬이나 굉장히 다양한 스킬을 만들 수 있다는 장점도 있다.

 


 


 

대신 조금이라도 기능을 수정할 때마다 스킬의 코드를 수정해야 하고, 그만큼 코드 안정성도 떨어진다. 이때마다 컴파일을 해야 하는 만큼 시간 낭비도 크다. 콘텐츠를 업데이트를 할 때마다 코드가 늘어나니 유지 보수 비용도 커진다.

 

결정적으로 스킬을 상상한 기획자와 이를 만드는 프로그래머의 생각이 정확이 일치하기 어려운 만큼 거기서 오는 비효율이 문제가 생기기 쉽다.

 

참고로 많은 개발사들이 일단 하드코딩으로 무언가를 개발한 후에 시스템을 구축해서 툴로 만들겠다는 목표를 세우는데 백승민 개발실장은 이를 불가능한 일로 내다봤다. 일종의 하드코딩의 굴레다. 그러니까 만약 시스템을 구축할 거라면 반드시 초반에 구축해야 한다는 게 그의 이야기다.

  

만약 그래도 하드코딩을 택했다면 스킬 간의 중복되는 코드를 최대한 줄여야 한다. 몇 개의 스킬마다 공통으로 쓰이는 코드가 있다면 이를 저장해두고 불러와서 쓰는 방식으로 최대한 코드를 줄이는 식이다. 언제나 그렇듯 서비스를 시작하고 나면 이런 리팩토링에 들일 수 있는 시간이 줄어드는 만큼 개발단계에서 최대한 줄여놔야 한다는 게 그의 이야기다.

 




 

 

■ 2. 자체스킬 툴

 

그럼 자체스킬 툴을 이용한 <최강의 군단>에서는 스킬을 어떻게 만들었을까? 참고로 <최강의 군단>에서는 2014년 11월부터 2015년 8월까지 7명의 신규 캐릭터를 추가했고, 8명의 캐릭터를 전면 개편했으며, 32종의 사이드킥 캐릭터를 추가했다. 사이드킥은 캐릭터당 3개의 스킬을 가진 보조캐릭터다.

 

<최강의 군단>에서 캐릭터 하나가 가진 스킬은 많게는 100여개. 반면 캐릭터에 투입된 인력은 프로그래머 1명과 기획자 7명이 전부였다. 일반적인 하드코딩 방식이었다면 프로그래머인 백승민 실장의 이름은 과로사로 9시 뉴스에 나오고 남았을 상황이다.

 

그래서 <최강의 군단>이 택했던 게 프로그래머는 '개발툴'만 지원하고, 기획자가 이를 이용해 직접 상상한대로 스킬을 만드는 방식이다. 만약 개발툴에 부족한 부분이 있으면 프로그래머가 부족한 부분을 보완하면 된다.

 




 

<최강의 군단>의 스킬 툴 기본은 언리얼3의 에디터에 자체 제작한 내부시스템을 얹은 방식이다. 크게 4종류로 나뉜 노드에는 각각의 속성이 담겨있는데, 이를 순서대로 연결하고 시차를 주면 스킬이 완성된다.

 

노드는 어떤 행동을 맡는 '액션', 액션에서 액션으로 넘어가는 분기 역할을 하는 '스위치', 스위치에서 값을 비교하는 역할을 해주는 '변수', 특정한 기능을 추가하는 '이벤트'로 나뉜다.

 

앞서 예시로 든 반격스킬을 만든다면 '방어 액션 노드'를 넣고, 반격 여부를 확인하기 위해 값을 비교할 수 있는 '스위치 노드'를 넣고, 여기에 공격자까지 거리를 재는 '변수 노드'를 덧붙인다. 그리고 변수가 맞을 경우 '공격 액션 노드'로 이어지면 스킬이 종료되는 식이다.

 

다만 이렇게 되면 반격 방향이 공격자에게 향하지 않으므로 '공격자로 방향을 돌리는 이벤트 노드'를 마지막 '공격 액션 노드'에 덧붙여준다. 아래는 스킬 제작과정을 찍은 영상이다. 

 

  

■ 2-2. 스킬 툴 도입결과

 

이렇게 스킬 툴을 도입한 결과 프로그래머는 야근이 대폭 줄었다. 그리고 업데이트마다 오는 밤샘에서 많이 자유로워졌다. 기계적 코딩에서 벗어나서 생각하는 코딩으로 넘어가기도 했다. 대신 기획자가 밤을 새는 일이 더 늘었다.

 

기획자는 커뮤니케이션 문제없이 자유로운 스킬 구현이 가능해졌다. 프로그래머에게 전달하기 어려운 미세한 감각까지도 구현이 가능해졌고, 직접 구현한다는 부담은 있지만 스킬을 자유롭게 만들 수 있어서 좋았다는 의견이 많았다. 스킬을 구현하고 직접 볼 수 있으니 피드백을 빠르게 받고, 빠르게 수정할 수 있어서 좋았다는 의견도 많았다.

 

단점도 있다. 일단 기획자는 만들고 싶은 스킬이 툴에 기능이 없어서 제약되는 일이 있었다. 그리고 툴을 쓰기 위한 기획자의 숙련도도 요구됐다. 머리 속에 있는 걸 숙련도 때문에 다 꺼낼 수 없다거나 다른 기획자의 결과를 분석해야 하는 경우도 필요했다.

 


 


 

결국 스킬 툴을 원활하게 도입하려면 개발자가 직접 사용해보는 단계가 필요하다는 게 백승민 실장의 이야기다. 기획자에게 먼저 줘도 기획자들은 답답함을 느낄 테니 '이런 걸 더해달라'는 요청이 올 수밖에 없다. 그러기 전에 직접 사용해보며 기능을 보강하는 편이 가장 빠르다.

 

그리고 고품질 디버깅 툴도 필수다. 개발 툴을 쓰다 보면 기획자 뜻대로 동작하지 않는 경우가 반드시 나오는데 이때 디버깅이 잘 나오지 않으면 기획자가 오랜 시간을 날린다. 기획자는 프로그래머와 달리 개발 툴을 직접 고치기 어렵다.

 

툴 매뉴얼을 잘 제공하는 것도 중요하다. 그래서 <최강의 군단>에서는 기획자들이 에디터에서 궁금한 점이 있으면 위키를 열어서 해당 노드에 대한 설명을 볼 수 있도록 만들었다. 노드를 직접 채워야 한다는 수고가 있었지만 그만큼 기획자 모두의 시간을 아낄 수 있었다. 일일이 설명을 하는 시간도 줄었다.

 

기획자가 알기 어려운 실수도 시스템이 발견해야 한다. 예를 들어 무한 루프 같은 것들이다. 그리고 기능 자동화로 미연에 실수를 방지할 필요도 있다. <최강의 군단>은 애니메이션 이름을 입력하는 대신 사용한 애니메이션을 클릭하면 자동으로 이름이 입력되는 방식으로 애니메이션 이름에 오타가 나는 걸 막았다.

 


 


 

 

■ 3. <건파이트 맨션>의 스킬개발 툴

 

그럼 <최강의 군단>에서 습득한 지식을 다른 게임에서는 어떻게 활용할 수 있을까? 백승민 실장은 현재 에이스톰의 차기작인 <건파이트 맨션>의 개발에 참가했다. <건파이트 맨션>은 모바일 신규 프로젝트로 언리얼엔진4를 사용한다.

 

에이스톰은 개발 툴의 강력함을 알고 있는 만큼 이를 그대로 사용하고 싶었지만 언리얼엔진4에서 이전엔진의 스킬 툴을 그대로 사용하기에는 무리가 있었다. 그렇다고 새롭게 시스템구축에 시간을 쓰기도 어려운 상황. 그래서 대신 언리얼엔진4의 새로운 기능인 '블루프린트'를 사용해보기로 했다.

 




 

블루프린트는 일종의 코딩툴로 전체구조는 하드코딩과 비슷하다. 컴파일 시간 없이 스킬 로직 테스트를 할 수 있고, 코드 안정성도 높다. 시스템 구축비용도 블루프린트가 압도적으로 저렴하다. 그리고 확장성도 좋다.

 

다만 구조도가 한 눈에 들어오지 않고, 블루프린트 자체가 코딩기반인 만큼 변수선언, 함수선언, 캐스팅, 상속 등등의 개념들을 모르면 사용하기가 어렵다. 기획자들이 과연 블루프린트를 <최강의 군단>의 개발 툴만큼 쉽게 사용할 수 있을 지는 앞으로도 검증해봐야만 알 일이다.

 

백승민 개발실장은 "장기적으로 보면 간단한 코딩은 타이핑 없이 할 수 없는 시대가 열렸다"며 "기획자도 프로그래밍을 배워두면 경쟁력이 될 수 있는 시대가 됐다. 프로그래머는 개발 툴에 대한 고민을 할 수 있겠지만 기획자는 그만큼 개발에 대해 이해할 수록 할 수 있는 영역이 늘어나는 때가 올 것이다"며 강연을 마쳤다.

 









 

 

전체 목록