SYDESYDE
SYDESYDE
  • 피드
  • 쇼케이스
  • 블로그
  • 모임
SYDESYDE© 2026 SYDE. All rights reserved.
SYDE 소개문의하기
Kakao
SYDE 오픈채팅
Instagram
Instagram
Threads
Threads
커뮤니티 가이드라인협업문의이용약관개인정보처리방침
커뮤니티 가이드라인협업문의이용약관개인정보처리방침

© 2026 SYDE. All rights reserved.

AI에게 스킬을 만들게 하려다 게임의 언어부터 만들었다 — UNSPECIFIED #3

AI에게 스킬을 만들게 하려다 게임의 언어부터 만들었다 — UNSPECIFIED #3

mmustardoo· 1일 전· 기술
목차
  • 처음에는 패턴 하나에 스킬 하나를 만들었다
  • AI 게임을 만들고 있는데, 내가 모든 답을 만들고 있었다
  • 스킬 대신 ‘스킬을 만드는 문법’을 만든다
  • 그렇다고 AI에게 모든 걸 자유롭게 만들게 할 수는 없었다
  • 조합할 수 있다는 것과, 실행할 수 있다는 것은 달랐다
  • 결국 사람이 만드는 것과 AI가 고르는 것을 나누게 됐다
  • 이제야 Local LLM을 시험할 준비가 됐다

목차

  • 처음에는 패턴 하나에 스킬 하나를 만들었다
  • AI 게임을 만들고 있는데, 내가 모든 답을 만들고 있었다
  • 스킬 대신 ‘스킬을 만드는 문법’을 만든다
  • 그렇다고 AI에게 모든 걸 자유롭게 만들게 할 수는 없었다
  • 조합할 수 있다는 것과, 실행할 수 있다는 것은 달랐다
  • 결국 사람이 만드는 것과 AI가 고르는 것을 나누게 됐다
  • 이제야 Local LLM을 시험할 준비가 됐다

지난 글에서는 플레이어가 무엇을 반복해서 하는지 알아보기 위해 행동의 횟수보다 행동 사이의 관계를 기록하기 시작했다는 이야기를 했다.

공격한 뒤 물체를 던지는지.

던진 뒤 다른 물체를 집는지.

대시한 뒤 다시 공격을 이어가는지.

이런 반복되는 관계를 어느 정도 구분할 수 있게 되면서 다음 문제가 생겼다.

그럼 이 습관을 실제 게임의 능력으로 어떻게 바꿀까?

분석 결과를 보여주는 것만으로는 게임이 달라지지 않는다.

플레이어가 계속 비슷한 방식으로 싸우고 있다면, 그 행동 자체가 새로운 전투 규칙으로 돌아오게 만들고 싶었다.

처음에는 이 부분도 생각보다 단순하게 해결할 수 있을 것 같았다.


처음에는 패턴 하나에 스킬 하나를 만들었다

예를 들어 이런 플레이어가 있다고 해보자.

물체를 던진다
    ↓
다른 물체를 집는다
    ↓
다시 근접 공격한다

이 행동을 반복한다면 그 흐름을 그대로 이용하는 능력을 만들 수 있다.

실제로 처음 만든 능력도 비슷했다.

물체를 던져 적에게 충격을 준 뒤 잠시 그 충격을 기억한다.

그다음 새로운 물체를 집거나 받아내면 기억해둔 충격을 그 물체에 연결한다.

그리고 그 물체로 다음 근접 공격을 성공시키면 이전 투척의 힘 일부가 같이 전달된다.

투척 적중
   ↓
충격을 기억
   ↓
새로운 물체 획득
   ↓
다음 근접 공격 강화

처음 이게 실제로 동작했을 때는 꽤 만족스러웠다.

단순히

투척을 많이 했다 → 투척 공격력 +20%

가 아니라,

플레이어가 원래 하던 행동은 그대로 남아 있으면서 그 행동 사이에 새로운 연결 하나가 생겼기 때문이다.

다른 방식도 만들어봤다.

한 적을 때린 뒤 별개의 공격으로 다른 적을 때리면, 두 적의 위치 관계를 기억해서 둘 사이에 새로운 효과가 생기게 했다.

적 A 공격
   ↓
적 B 공격
   ↓
두 위치 사이에 효과 발생

여기까지는 꽤 괜찮았다.

그런데 세 번째, 네 번째 패턴을 생각하기 시작하면서 이상한 점이 보였다.


AI 게임을 만들고 있는데, 내가 모든 답을 만들고 있었다

플레이어가 공격 후 투척을 자주 한다면 그에 맞는 스킬을 만든다.

대시 후 공격을 자주 한다면 또 다른 스킬을 만든다.

여러 적 사이를 오가며 싸운다면 또 하나를 만든다.

몇 개 정도는 충분히 할 수 있다.

문제는 계속 늘어날 때다.

행동이 늘고,

물체가 늘고,

대상이 늘고,

시간 조건이 늘고,

공간 관계까지 들어오기 시작하면 가능한 조합도 빠르게 많아진다.

그리고 그때마다 내가

“이 패턴에는 이 스킬.”

이라고 완성된 답을 하나씩 추가하고 있었다.

생각해보니 조금 이상했다.

AI가 플레이어를 읽고 새로운 능력을 만들어주는 게임을 만들겠다고 시작했는데,
정작 가능한 플레이 스타일과 그 결과는 내가 전부 미리 만들고 있었다.

이 구조라면 나중에 AI가 들어오더라도 결국 내가 만들어둔 답안 중 하나를 고르는 역할밖에 하지 못한다.

그래서 완성된 스킬을 계속 추가하는 대신,

스킬 자체를 표현할 수 있는 작은 언어를 만들어보기로 했다.


스킬 대신 ‘스킬을 만드는 문법’을 만든다

하나의 능력을 잘게 나눠보면 생각보다 몇 가지 질문으로 정리할 수 있었다.

무슨 행동에서 시작되는가?
        ↓
무엇을 기억하는가?
        ↓
무엇과 연결하는가?
        ↓
어디에 적용하는가?
        ↓
어떤 효과가 생기는가?

예를 들어,

“물체를 던져 맞힌 충격을 기억했다가 다음에 집은 물체의 공격으로 전달한다”

라는 능력도 이렇게 쪼개볼 수 있다.

투척 적중
   ↓
이전 충격 기억
   ↓
다음 물체와 연결
   ↓
다음 성공 공격까지 유지
   ↓
기억한 힘을 전달

다른 능력은 같은 재료를 전혀 다르게 사용할 수 있다.

대시
   ↓
대시 시작 위치 기억
   ↓
다음 근접 공격 위치와 연결
   ↓
두 위치 사이
   ↓
새로운 효과 발생

또는

적 A 공격
   ↓
적 B 공격
   ↓
다시 적 A 공격
   ↓
기억한 적 B의 위치
   ↓
효과 발생

각각만 보면 전혀 다른 스킬처럼 보인다.

하지만 내부적으로는

행동을 감지하고, 무언가를 기억하고, 다른 대상이나 위치와 연결하고, 그 결과를 새로운 효과로 바꾼다

는 비슷한 언어로 표현할 수 있다.

내가 원했던 건 바로 이쪽이었다.

완성된 스킬을 계속 만드는 대신, 여러 스킬을 표현할 수 있는 언어를 만드는 것.

그리고 언젠가 AI가 스킬을 만든다면,

아무것도 없는 곳에서 게임 규칙을 마음대로 발명하는 게 아니라 이 언어 안에서 의미 있는 조합을 찾게 하고 싶었다.


그렇다고 AI에게 모든 걸 자유롭게 만들게 할 수는 없었다

처음부터 LLM에게 이렇게 요청할 수도 있다.

“이 플레이어에게 어울리는 재미있는 스킬 하나 만들어줘.”

아마 그럴듯한 아이디어는 꽤 잘 나올 것이다.

하지만 아이디어와 실제 게임 규칙은 다르다.

모델이 존재하지 않는 기능을 사용할 수도 있다.

앞에서 기억하지 않은 대상을 뒤에서 참조할 수도 있다.

서로 연결할 수 없는 두 효과를 붙일 수도 있다.

A가 B를 부르고, B가 다시 A를 불러서 효과가 끝없이 반복될 수도 있다.

무언가를 기억하게 해놓고 언제 그 기억을 지워야 하는지 정의하지 않을 수도 있다.

게임에서는 이런 문제가 단순한 문장 오류로 끝나지 않는다.

잘못하면 실제 전투 상태가 망가지거나, 한 번의 행동에서 끝없이 효과가 발생할 수도 있다.

그래서 한 가지 경계를 만들었다.

AI가 무언가를 제안할 수는 있지만, 그 제안이 곧 게임의 규칙이 되지는 않는다.


조합할 수 있다는 것과, 실행할 수 있다는 것은 달랐다

그래서 스킬 문법 뒤에 Compiler를 두었다.

스킬 조합이 들어오면 바로 실행하지 않고 먼저 검사한다.

실제로 존재하는 기능들로 이루어져 있는지.

앞 단계에서 나온 결과를 다음 단계가 받을 수 있는지.

기억해야 하는 상태가 있다면 언제 생성되고 언제 사라지는지.

효과가 자기 자신을 다시 부르는 구조는 없는지.

한 번의 행동에서 너무 많은 효과를 만들어내지는 않는지.

그리고 마지막으로,

실제로 플레이어에게 설명할 수 있는 능력인지까지 확인한다.

개념적으로는 이런 흐름에 가깝다.

Skill 조합
    ↓
게임 규칙과 맞는가?
    ↓
상태와 연결이 유효한가?
    ↓
끝없이 반복되지 않는가?
    ↓
실제로 실행 가능한가?
    ↓
플레이어에게 설명 가능한가?
    ↓
게임에 적용

이 과정을 만들면서 생각보다 중요했던 게 하나 더 있었다.

게임에서 실제로 일어나는 것과 플레이어가 읽는 설명이 서로 달라지면 안 된다는 점이다.

예를 들어 실제 효과는 3초 동안 유지되는데 스킬 설명에는 4초라고 적혀 있다면, Adaptive System을 플레이어가 믿기 어렵다.

그래서 지금은 실제 능력과 UI 설명이 따로 존재하지 않는다.

같은 검증된 결과에서 실제 효과도 만들고, 플레이어가 읽는 설명도 만든다.

스킬 이름이나 설명 역시 LLM이 즉석에서 자유롭게 작성하도록 하지 않았다.

게임의 문체와 실제 동작을 사람이 통제할 수 있도록 미리 만들어둔 표현을 사용한다.


결국 사람이 만드는 것과 AI가 고르는 것을 나누게 됐다

여기까지 만들고 나니 AI에게 어디까지 맡기고 싶은지도 조금 명확해졌다.

사람이 해야 하는 일은 게임에서 가능한 것의 경계를 만드는 것이다.

어떤 행동이 존재하는지.

무엇을 기억할 수 있는지.

어떤 관계가 가능한지.

어떤 효과를 실제 게임에서 지원하는지.

그리고 그 조합이 안전한지.

반대로 AI에게 기대했던 건,

그 가능한 조합들 중 지금 이 플레이어의 행동과 의미 있게 연결되는 것을 찾는 일

이었다.

즉 내가 만들고 싶었던 건 AI가 게임의 법칙을 마음대로 쓰는 구조가 아니었다.

사람이 게임의 언어를 만들고,
AI는 그 언어 안에서 플레이어에게 맞는 문장을 찾는다.

이쪽에 더 가까웠다.


이제야 Local LLM을 시험할 준비가 됐다

여기까지 오고 나서야 처음 생각했던 실험을 제대로 해볼 수 있게 됐다.

플레이어가 무엇을 반복하고 있는지는 게임이 계산한다.

그 행동을 능력으로 표현할 수 있는 문법도 있다.

잘못된 조합을 막을 수 있는 Compiler도 있다.

실제 효과와 UI 설명도 같은 결과에서 나온다.

즉 모델이 실수하더라도 게임 자체가 무너지지 않도록 필요한 경계는 어느 정도 만들어졌다.

그리고 이제 남은 질문은 하나였다.

이 조합 문제를 정말 Local LLM이 규칙 기반 방식보다 더 잘 풀 수 있을까?

다음 글에서는 실제 Local LLM을 게임에 넣고,

처음에는 완성된 능력 중 하나를 고르게 해보고,

그다음에는 능력 자체를 조합하게 해보고,

마지막에는 내부적인 복잡함까지 최대한 걷어낸 뒤 다시 시험해본 이야기를 적어보려고 한다.

결과는 처음 기대했던 방향과는 꽤 달랐다.

  • #게임개발
  • #ai
  • #llm
9
m
mustardoo

mustardoo님의 다른 글

  • AI 게임을 만들겠다고 시작했는데, 여기서 멈추기로 했다 — UNSPECIFIED #완15시간 전
  • Local LLM을 게임에 실제로 넣어봤더니 — UNSPECIFIED #415시간 전
  • Dash를 30번 했다고 ‘Dash형 플레이어’일까? — UNSPECIFIED #21일 전

댓글 0

My avatar