[GDC24] AI의 시대, 유니티와 간단한 문장으로 게임을 만들기까지

게임뉴스 | 윤서호 기자 |


▲ 유니티 트레버 산타라 선임 리서치 엔지니어(좌), 피에르-아르쥰 달라야 선임 소프트웨어 엔지니어(우)

유니티는 최근 '유니티 뮤즈', '유니티 센티스' 등 AI를 활용해 게임 개발 전반의 효율을 높이는 방안을 발표해왔다. 작년 AI 솔루션을 첫 공개한 이후, 이번 GDC에서도 해당 솔루션과 관련된 강연들을 배정하면서 그 발전사와 앞으로의 방향성에 대해 언급했다.

이러한 기능들은 그냥 말만 하면 원하는 그림이나 애셋을 뚝딱 만들어주는 도깨비방망이처럼 여겨질지 모른다. 그러나 실제로 생성형 AI로 처음 그림을 그리거나 할 때 원하는 결과물이 바로 나오는 일은 드물다. AI가 인간에게 바둑을 이기고 사람이 상상도 하지 못하는 속도로 작업을 하지만, 그것이 속내까지 다 파악한다거나 현재 기계에 적용되고 있는 로직을 100% 뛰어넘는다는 것은 아니기 때문이다.

그렇다면 게임 개발에서 AI를 활용할 때 원하는 결과물을 얻으려면 어떻게 접근해야 할까, 유니티의 트레버 산타라 선임 리서치 엔지니어와 피에르-아르쥰 달라야 선임 소프트웨어 엔지니어는 유니티의 기능 이전에 현재 개발에 사용되고 있는 AI들의 기초, 이를 활용한 창작법에 대해서 언급했다.




통상 애셋을 바로 생성해주는 '생성형 AI'가 일반인들에게 가장 눈에 띄지만, 사람의 자연어를 기계에 맞춰서 코딩으로 변환해주는 언어 모델이나 그 모델을 기반으로 알맞는 행동과 조건을 지시하는 비헤이비어 트리까지 그 폭은 넓다. 심지어 개발자들 사이에서는 아직 AI의 가능성을 빙산의 일각만 사용하고 있으며, 기술이 더 발전하면 그 폭이 무궁무진할 것이라는 이야기도 있다고 덧붙였다.

그러나 이는 어디까지나 '미래'의 일이고, 현 단계에서는 그 빙산이 다 드러나기는 이른 상황이라고 강조했다. 결국 현재 AI를 잘 활용하기 위해서는 그 AI가 지시하는 '기계'가 이해할 수 있는 방향으로 접근해야 하며, 그 방식에 대해 시연을 통해 설명했다.

시연에서 두 엔지니어는 원숭이가 발판 위에 있는 바나나를 스스로 찾아서 먹고, 발판에서 떨어지지 않게 이동해서 맵 내에 있는 모든 바나나를 먹는 게임을 예고했다. 그리고 이 동작이 이루어지기 위해서 어떤 것을 지시해주고 지정해줘야 할지 되묻는 한편, 그 말을 '누구'에게 전달하면 그 행동을 '누가'하는 것인지 생각해보라고 설명했다.



▲ 발판 위에 떠있는 원숭이에게 '바나나를 먹어'라고만 말하면 원하는 움직임이 나오지 않는다






▲ 더 세부적으로 기계가 이해할 수 있는 논리를 자연어로 풀어줘야 반응하고



▲ 이러한 기능 구현에는 LLM의 공이 크다

여기에서 게임 개발의 오랜 격언, '기계는 주어진 명령을 그대로만 따른다'가 소개됐다. 무언가 빠진 것들을 LLM 등으로 문맥을 찾아서 공백이나 어긋난 것을 보완하지만, 즉 최종적으로 그 행동을 플레이하는 엔진에 자신이 원하는 그 안이 세세하게 전달되지 않으면 원하는 대로 움직일 수 없게 된다.

앞의 바나나 게임의 사례에서는 통상의 개발 과정에서는 바나나가 있는 방향에 대한 정보, 바나나와 물리적 충돌을 했을 때 어떤 반응이 있으며, 그 다음에 다른 바나나를 찾으라는 지시 등등 세부 사항을 코드나 노드, 비헤이비어 트리로 일일이 구현해야 했다. 자연히 벡터3, 디스턴스, 오브젝트 등 기본 개념을 이해하고 활용할 수 있어야 하지만, 그 부분 역시도 LLM 그리고 강화 학습으로 현재 보완이 되고 있다. 다만 '쿼터만큼 돌아라'라는 모호한 표현은 일반적으로는 여러 차례 이터레이션을 반복해야 원하는 결과를 얻거나, 혹은 모델에 따라서는 만족스러운 결과물을 끝내 못 얻을 여지가 있다.

이 문장을 활용해 구현한 비헤이비어 트리를 구동하기에 앞서, 객석에서는 이 단계조차 완벽하지 않다는 말이 곳곳에서 나왔다. 실제로 이 단계에서는 '점프할 때는 어느 정도의 속도로', '바나나를 먹은 뒤 어느 정도의 텀을 두고 다음 행동을 할지' 등이 빠져있다. 이 부분까지 LLM으로 처리하는 방법도 있겠지만, 현재로서는 그 모든 상황을 상정해서 AI 모델을 구축하는 것은 어렵고 굉장히 비효율적이다.

그래서 유니티에서는 프롬프트로 작성한 결과물에 변수를 입력하거나 대상을 지정하는 블랙보드를 지원하며, 여기에 LLM로 문장의 각 구성 요소를 파악, 각각 어떤 의미로 사용됐나 분석하거나 모호한 부분은 유저가 직접 지시할 수 있게끔 했다.



▲ 이걸 일일이 코드식으로 다 지정해서 쓰려면 문장으로 푸는 것도 쉽진 않다



▲ 그래서 변수는 생성 이후 블랙보드에 지정하고 기입할 수 있게 하고



▲ 문장의 각 구성 요소 단위로 디테일하게 짚고 나가는 언어모델을 적용하면 실수 확률은 줄어든다

그렇다 해도 석연치 않은 부분들이 아직 남아있다. 예를 들어서 '적이 대상을 향해 걷는다'와 '적이 대상을 향해 이동한다' 두 문장은 분명 늬앙스 차이가 있지만, 문장 및 전후좌우 맥락까지 정교하게 파악하는 AI 모델이 아니면 이 차이를 기계가 받아들이지는 못한다. 어떤 기준으로 '이동'과 '걷기'를 구분해야 사전에 미리 정의된 것이 필요하기 때문이다.

이 한계를 극복하기 위해서 강화학습 등으로 조금 더 발전된 AI 모델이나, 인공신경망으로 다른 AI 모델과 연결하는 등 다양한 방안이 언급되고 있다. 그러나 맨땅에서 처음부터 개발하는 입장이거나 혹은 엔진 및 프로그래밍과 관련 없는 분야에 있었다면 발전된 AI 모델이 무엇이고 인공신경망이나 강화학습 같은 개념까지 확인하기가 쉽지만은 않다. 앞으로는 의사 결정 트리나 로직 프로그래밍 등 더 다양한 가능성을 보여주겠지만, 그 전까지 AI를 활용하는 과정에서 기초적인 문법과 구조를 익히면 더 쉽게 원하는 결과물을 얻을 것이라고 조언했다.



▲ '걷는다'와 '이동한다'의 사전 정의가 명확히 입력되어 있지 않다면 기계는 어떻게 반응할까?



▲ AI의 과제는 결국 '기계는 주어진 명령을 그대로만 따른다'는 한계를 점차 극복하는 것이기도 하다

댓글

새로고침
새로고침

기사 목록

1 2 3 4 5