[종합] 초심자부터 숙련 아티스트와 머신 러닝까지, '유니티 마스터즈 데이'

게임뉴스 | 정재훈,김수진 기자 | 댓글: 1개 |



2019년 12월 3일, 서울 역삼동에 위치한 유니티 코리아 사옥에서 유니티 개발자들을 대상으로 개발 노하우를 공유하고 유용한 정보를 제공하는 '유니티 마스터즈 데이'가 진행되었다. 이번 행사는 총 세 개의 강연으로 구성되었으며, 강연 외에도 오피스 투어 및 질의응답 등의 행사가 함께 진행되었다.

강연은 각각 초급자, 아티스트, 그리고 AI 관련 개발자들을 대상으로 마련되었다. 강연은 이재현 개발자의 '초급자를 위한 네비게이션 심화'로 시작해, 박동민 개발자의 '아티스트를 위한 비주얼 이팩트 그래프', 민규식 개발자의 '유니티 머신러닝 에이전트'로 이어졌다.

본행사에 앞서 오지현 리드 에반젤리스트는 "이번 행사는 유니티 코리아의 공인 전문가 그룹인 유니티 마스터즈 그룹이 여러분과 소통하고자 만들어진 자리다. 유니티 마스터즈는 현재 4기가 활동 중이며, 보다 적극적인 소통을 위해 준비했으니 앞으로도 더 많은 좋은 자리를 만들 예정이니 잘 부탁드린다"라고 말하며, 앞으로 진행될 강연에 대해 간단히 소개했다.



▲ 오지현 리드 에반젤리스트


초급자를 위한 네비게이션 심화 - 이재현 개발자
의외로 많은 개발자들이 모르는 '확장 네비게이션'



▲ 이재현 개발자

'절대강좌 유니티' 시리즈를 집필한 1인 개발자인 이재현 개발자는 유니티 엔진 내에 마련된 네비게이션의 기본, 고급 및 확장 네비게이션 기능에 대해 설명했다. 네비게이션 기본 기능은 3D 지오메트리를 분석해 'NavMesh'를 생성, A* 알고리즘으로 최단 거리를 계산 후 이동과 움직임을 구현한다. 기본 기능에는 여러 동작들이 포함되어 있는데 장애물 회피 기능인 'Obstacle', 끊어진 메시를 연결하는 'Off Mesh Link' 등이 있다.

'Area Mask' 기능은 경로에 가중치를 더해, 캐릭터의 움직임을 조절할 수 있는 기능이다. 경로의 지면을 진흙, 마른 땅, 수풀 등으로 설정하고, 이에 가중치를 더해 캐릭터가 특정 경로로 이동할 때 속도가 빨라진다거나, AI에 따라 움직이는 캐릭터가 정해진 길로만 이동하도록 제한할 수 있다. Area Mask는 기본적으로 이동할 수 있는 영역을 지정하는 기능으로, 이를 잘 응용하면 다른 네비게이션 기능(Obstacle 컴포넌트의 카브 기능 등)에 비해 적은 부하로 캐릭터의 이동을 조절할 수 있다.

우선 순위(Priority) 기능도 유용한 고급 기능이다. 스테이지에 여러 에이전트가 있을 때, 서로 경합 상황이 발생할 경우 우선 순위를 설정하는 기능으로, 0~99의 숫자 중 작은 숫자일수록 높은 우선 순위를 보인다. 게임 내에서 캐릭터 밀집에 따른 병목 현상이 일어나는 경우, 이를 조절하는데 좋은 기능이다. 같은 목적지로 가는 두 에이전트가 같은 우선 순위를 가질 경우, 뒤늦게 온 에이전트가 앞선 에이전트를 밀어내는 경우가 생길 수 있다.

확장 네비게이션은 공식 명칭이 아니며 패키지 매니저에서 찾아볼 수도 없다. 링크를 직접 찾아서 들어가야 하는 기능인데, 유니티 깃허브에서 소스코드를 다운받아 사용할 수 있다. 확장 네비게이션은 '서피스', '링크', '모디파이어', '모디파이어 볼륨'으로 나뉘며, 기본 네비게이션 이상의 다양한 편의를 제공한다.


아티스트를 위한 비주얼 이팩트 그래프 - 박동민 개발자
아티스트들에겐 낯선 유니티 엔진, 아티스트의 언어로 이해하기



▲ 박동민 개발자

11년차 개발자이자, 6년차 테크니컬 아티스트로 활동하고 있는 박동민 개발자는 VFX 그래프에 대한 강연을 진행했다VFX 그래프는 컴퓨트 셰이더 기반의 GPU 파티클 도구로, GPU의 병렬 파워를 이용해 수백만 개의 파티클을 뿌릴 수 있다. 모바일에서도 사용할 수 있으며, 기존 방식에 계산을 도입해 더 많은 파티클을 사용할 수 있게 마련된 툴이다.

기존 파티클 시스템인 '슈리켄'과 비교하면 다소 무거운 계산도 빠르게 처리가 되며, 슈리켄에서 무거웠던 모듈도 빠르게 사용할 수 있다. 또한, 수학 공식을 도입해 동적인 움직임을 구현하거나, 다양한 속성값을 이용해 계산을 수행할 수 있다. 벡터 필드 및 포인트 캐시 기능을 이용할 수 있으며, 여러 변수에 대한 제어도 더욱 용이하다.

파티클은 '이미터'에서 생성되는데, 이미터에는 다양한 정보가 필요하다. 얼마 동안, 몇 번, 얼마나 자주, 최대 몇 개까지 파티클을 만들어낼 것인지 설정되어야 하며, 파티클을 어디서 어떤 방향으로 얼마나 되는 힘으로 보낼지 등의 정보도 필요하다. 컬러, 크기 등도 이런 정보에 해당한다. 또한, 파티클들도 어떤 힘에 의해 어떤 방향으로 어떤 렌더링을 거쳐 움직여야할지에 대한 정보가 필요하다.

슈리켄과 VFX 그래프는 모두 이런 이미터와 파티클의 정보를 다루고, 이를 구현하는 도구다. VFX 그래프는 네 개의 블록으로 시작하게 되는데, 파티클을 생성하는 '스폰' 블록을 비롯해 여러 속성과 파티클에 부여될 정보를 조정하는 '이니셜라이즈' 블록이 존재하며 '속성'에는 프레임의 위치와 힘, 방출 방향, 회전각과 수명 등 파티클에 도입될 정보들이 속해 있다. '업데이트' 블록은 함수에 따라 여러 변형을 가할 수 있는 블록으로, 파티클의 위치에 따라 색상을 바꾼다거나 하는 조작을 할 수 있다. 마지막 블록인 '아웃풋' 블록은 마지막으로 지정할 변수들을 결정하는 블록이다.


유니티 머신러닝 에이전트 - 민규식 개발자
AI 프로그램, 앱, 게임까지 개발 가능한 SDK에 대해



▲ 민규식 개발자

민규식 개발자는 한양대 미래자동차공학과에서 석박사 통합 과정 중에 있는 개발자로, AI의 범주 안에 존재하는 '머신 러닝'에 대한 강연을 진행했다. 머신 러닝은 인공지능(AI)의 하위 분류로, 인간의 '학습' 기능을 기계가 학습해내는 기술이다. 보다 심화된 머신 러닝은 현재 '딥 러닝'이라는 이름으로 존재하며, 현재 IT 산업에서 가장 뜨거운 이슈이기도 하다. 대중적으로 가장 유명한 딥 러닝 프로그램은 '알파고'가 있다.

유니티 또한 'ML-agents'를 비롯해 다양한 AI 관련 개발 SDK를 지원하고 있다. 이 툴은 '강화 학습(Reinforcement Learning)'을 위해 개발된 툴로, 보상에 따른 학습을 수행한다. 프로그램은 여러 시햄 착오를 겪으며 보상을 최대화하는 방향으로 학습해나가며, 현재 이 강화 학습은 게임, 에너지, 로봇과 금융 등 다양한 분야에서 연구가 진행되고 있다. 가령 '슈퍼마리오' 게임으로 강화 학습을 시작하면, 프로그램은 적과 부딪혀 명을 깎이거나, 코인을 획득해 점수를 얻는 등의 경험을 하며 결국 모든 적을 피하고 모든 동전을 획득하는 움직임까지 나아간다.

강화학습을 연구하는 이들은 강화학습을 연구할 '환경'을 만들고자 하는 고민을 할 수밖에 없다. 'ML-agent'를 연구하는 이들 또한 마찬가지. 이전의 문제는 대부분의 딥러닝 에이전트가 파이선으로 코딩되어있지만, 유니티로 만드는 환경은 꼭 그렇지 않다는 점이었다. 'ML-agent'는 이를 해결하기 위해 만들어진 SDK로, 여러 에이전트가 한 번에 학습을 하거나, 사람의 움직임을 모방하는 학습도 가능하다.

유니티의 또다른 AI 개발 툴은 '유니티 시뮬레이션'이 있다. 유니티 시뮬레이션은 보다 현실적인 영역에 걸친 SDK로, 지난 '유나이트 코펜하겐'에서 처음 발표되었다. 구동에 매우 좋은 하드웨어와 빅데이터가 필요하지만, 구글 클라우드를 통해 구동할 수 있으며, 이를 통해 더욱 많은 데이터와 학습 효과를 볼 수 있다.



댓글

새로고침
새로고침

기사 목록

1 2 3 4 5