(주)에버스톤 · 부산 해운대 BCC 613호

AI로 유니티 시스템을 짤 때 — 코드보다 설계 합의가 먼저다

AI 코딩 도구로 유니티 시나리오 재생 시스템을 만든 대화 기록을 분석했습니다. 제약 조건 명시, 설계 문서 우선, 검토 요청, 모듈 단위 지시라는 네 가지 요청 방식과 엑셀 데이터 파이프라인, 3단 렌더링 레이어, 메모리 점진 해제 구조를 정리했습니다.

에버스톤12분 분량AI · 개발게임 개발 · 퍼블리싱
AI로 유니티 시스템을 짤 때 — 코드보다 설계 합의가 먼저다 대표 이미지

AI에게 유니티 시스템을 맡길 때 결과를 가르는 것은 코드 생성 능력보다 코드를 짜기 전에 무엇을 합의했는가입니다. 이 자료는 AI 코딩 도구로 시나리오 재생 시스템을 만든 실제 대화 기록을 분석해, 어떤 요청 방식이 좋은 구조로 이어졌는지를 정리합니다.

이 문서는 NotebookLM(노트북 LM)으로 자료를 조사해 만든 문서입니다.

  • 상용 에셋 대신 경량 자체 모듈과 엑셀 데이터 파이프라인을 택했습니다. 기존 시스템과의 충돌을 피하기 위해서입니다
  • 기획자는 엑셀만 다루고, 런타임은 엑셀을 모르는 분리 구조가 핵심입니다
  • AI에게는 만들 것보다 만들지 않을 것을 먼저 알려 주는 편이 설계가 정확해집니다
  • 바로 코드를 요구하지 말고 마크다운 설계 문서를 먼저 합의합니다
  • 정답을 지시하기보다 검토를 요청하고, 구현은 모듈 단위로 나눠 맡깁니다

요구사항과 구조 결정

프로젝트 개요 시나리오 시스템 슬라이드. 핵심 요구사항은 UGUI 기반 + Spine2D 캐릭터 애니메이션 제어, 기존 프로젝트 시스템(SoundMgr, Addressables)과 100% 통합, 기획자 친화적인 엑셀(xlsx) 기반 시나리오 작성 환경, 세이브/로드 불필요와 경량화된 런타임 재생. AI의 기술 스택 진단 및 제안으로 상용 에셋(Utage 등)은 자체 시스템 강제로 인해 기존 프로젝트와의 충돌(기술 부채) 발생 위험이 있어, 결론은 경량 자체 모듈 + 스프레드시트 데이터 파이프라인 구축. 오른쪽은 기존 시스템 통합·엑셀 파이프라인·경량화(No Save) 세 축으로 직접 개발, Utage, Naninovel을 비교한 프레임워크 적합도 레이더 차트로 직접 개발이 세 축 모두 가장 넓다

Zero-Overhead 데이터 파이프라인 도식. 기획자(Excel)의 작성 → 커스텀 메뉴 → Editor Importer의 변환 → ScriptableObject & Addressables 에셋 → 런타임 플레이어의 재생으로 이어지며, 런타임 단계에는 엑셀이 들어가지 않는다는 X 표시. 작성(Excel)은 명령어·슬롯·대사·분기를 직관적인 시트 하나로 관리, 변환(Importer)은 에디터 툴을 통해 런타임용 SO로 즉시 변환 및 검증(빌드 미포함), 로딩(Addressables)은 무거운 엑셀 파싱 없이 SO 에셋만 가볍게 로드. 인사이트는 기획자는 코드 없이 엑셀만 다루고 런타임은 엑셀을 모르는 분리 구조

독립적인 3-Tier 렌더링 레이어 도식. 겹쳐진 세 장의 판으로 Fade Layer(최상단)는 UI를 포함한 화면 전체의 씬 전환(블랙아웃) 페이드 처리, UI Layer(고정)는 텍스트 타이핑과 선택지로 물리 연출에 영향을 받지 않아 가독성 100% 보장, Stage Layer(연출)는 Spine 캐릭터 및 배경으로 시나리오 명령에 따라 물리적 연출 적용. 인사이트는 레이어를 물리적으로 분리하여 텍스트 가독성 훼손 없이 과감한 화면 연출을 지원한다는 것

메모리 최적화 점진 해제(Incremental Release) 슬라이드. 왼쪽 그래프는 시나리오 진행 시간에 따른 메모리 점유율로, 일반적인 방식은 끝까지 높게 유지되다 한 번에 떨어지고 AI 제안 방식은 lastUseIndex 도달 시 즉시 Release 되어 계단식으로 내려간다. 문제는 긴 시나리오 재생 시 모바일 기기의 메모리 피크 발생 위험, AI의 역제안은 리소스의 총 사용 횟수가 아닌 마지막 사용 인덱스(lastUseIndex) 기반 해제 도입. 작동 방식은 임포터가 파일 변환 시 마지막 사용 시점을 계산해 SO에 저장하고 런타임 진행 중 해당 지점 도달 시 Addressable 즉시 해제. 인사이트는 재로딩(Thrashing) 버그를 막으면서 피크 메모리를 크게 낮춘 로직

상용 비주얼 노벨 에셋은 기능이 많지만 사운드·저장·리소스 관리를 자기 방식으로 가져옵니다. 이미 사운드 매니저와 Addressables가 돌아가는 프로젝트라면 그 자체가 기술 부채가 됩니다. 엑셀은 에디터에서만 읽고 런타임에는 변환된 에셋만 싣는 구조는 유니티 프로젝트에서 데이터 테이블을 다룰 때도 그대로 쓸 수 있는 방식입니다.

마지막 사용 시점을 임포트 단계에서 미리 계산해 두는 해제 방식도 눈여겨볼 만합니다. 런타임에서 참조 횟수를 세는 대신 변환 시점에 필요한 정보를 만들어 두면 실행 중 판단이 단순해집니다.

사람과 AI의 역할 나누기

인간과 AI의 이상적인 페어 프로그래밍 순환 도식. 사용자의 채팅 로그에서 발견된 AI 시스템 개발 프로세스로, 명확한 제약 조건 전달(Human) → 아키텍처 합의 및 Plan.md 작성(AI) → 로직 역제안 및 검증(Human + AI) → 모듈 단위 청크 코딩(AI) → 통합 테스트 및 피드백(Human) → 다시 처음으로 돌아가는 루프. 아래 세 원칙은 Clear Boundaries(엔진과 기존 시스템의 규칙을 100% 동기화), Doc-Driven(즉시 코딩을 금지하고 아키텍처 청사진을 문서로 먼저 합의), Iterative Execution(전체가 아닌 작은 단원 10.1, 10.3 단위로 코딩 지시)

네 가지 요청 방식 비교

비교 1 한계와 환경을 명확히 설정하라 슬라이드. 비효율적인 요청은 "유니티로 비주얼 노벨 대화창 시스템 만들어줘"이고 결과는 AI가 독자적인 사운드/세이브 시스템을 과잉 개발하여 기존 프로젝트 아키텍처와 심각하게 충돌. 효율적인 요청은 "UGUI 사용, Spine2d 활용, 배경음은 기존 SoundMgr 호출, 세이브/로드 미사용"이고 결과는 기존 시스템을 재사용하는 초경량 맞춤형 아키텍처 제안 도출. 아래 막대그래프는 AI의 초기 설계 정확도로 일반적인 방식 30%, 베스트 프랙티스 95%. 인사이트는 AI에게 프로젝트 컨텍스트를 주입할 때는 무엇을 안 만들지(No Save/Load)를 명시하는 것이 가장 강력한 제약이 된다는 것

비교 2 코드보다 마크다운(설계도)을 먼저 요구하라 슬라이드. 비효율적인 요청은 "위 조건대로 바로 스크립트 작성해줘", 효율적인 요청은 "상세 요구사항을 바탕으로 폴더 구조, 클래스 네이밍, 데이터 파이프라인 계획 문서를 마크다운으로 작성해줘". 그래프는 프로젝트 진행 시간에 따른 기술 부채 누적량(디버깅 지옥)으로 Code-First는 가파르게 늘고 Plan-First는 낮게 유지된다. Code-First 결과는 긴 대화 속에서 AI가 이전 맥락을 잊어버려 변수명과 구조가 꼬이는 스파게티 코드 발생, Plan-First 결과는 계획 문서 파일이 워크스페이스에 고정되어 모든 후속 코딩의 기준점이 됨. 인사이트는 긴 컨텍스트를 유지하려면 프로젝트의 뼈대가 되는 설계 문서(MD)를 먼저 합의하여 할루시네이션을 차단해야 한다는 것

비교 3 코더가 아닌 아키텍트로 대우하라 슬라이드. Dictating(비효율적인 요청)은 "리소스는 카운트를 세서 0이 되면 해제하도록 구현해" → AI 단순 구현 → 재사용 시 Thrashing 버그 발생. Validating(효율적인 요청)은 "이런 로직으로 리소스를 해제하면 성능이나 코드 관리상 별로인지 검토해줘" → AI가 로직의 맹점(총 사용 횟수)을 논리적으로 분석 → 남은 사용 횟수(lastUseIndex) 기반의 구조 역제안. 인사이트는 AI에게 정답을 주입하지 않고 아이디어의 타당성 검토를 요청할 때 AI가 로직의 맹점을 스스로 파악하고 더 나은 구조를 역제안한다는 것

비교 4 시스템을 모듈 단위로 분할하여 지시하라(Chunking) 슬라이드. 비효율적인 요청은 "계획 문서대로 전체 시스템 스크립트 다 작성해", 효율적인 요청은 "10.1 단계(데이터 구조) 구현해줘 → 다음은 10.3 단계 진행해줘". 막대그래프는 사용한 컨텍스트 토큰으로 한 번에 지시한 막대는 안전 한계선(Token Limit)을 넘어 부서지고, 단계별 분할은 10.1·10.3·10.7 블록이 한계선 아래에 쌓인다. 한 번에 지시하면 출력 제한에 걸려 코드가 잘리거나 핵심 로직이 엉키고, 단계별 분할은 AI가 각 모듈(Importer, Player, UI)에만 집중하여 버그 없는 클린 코드 생산. 인사이트는 확정된 설계도가 있다면 단원별로 번호를 매겨 순차적으로 코딩을 지시하라는 것

네 비교 가운데 실무에서 가장 효과가 큰 것은 첫 번째입니다. AI는 요청을 받으면 빈 곳을 스스로 채우려 하고, 그 과정에서 이미 있는 시스템을 새로 만듭니다. "저장은 쓰지 않는다", "사운드는 기존 매니저를 호출한다" 같은 한 줄이 불필요한 코드를 크게 줄입니다.

설계 문서를 먼저 받는 방식은 대화가 길어질 때 효과가 드러납니다. 문서가 기준점으로 남아 있으면 이름과 구조가 흔들릴 때 되돌아갈 곳이 생깁니다. 30%와 95% 같은 정확도 수치는 자료 기준이며, 저희가 측정한 값은 아닙니다.

정리 — 설계는 사람이, 구현은 AI가

AI-Developer 인터페이스 매트릭스 벤다이어그램. 단순한 질문-답변을 넘어 AI를 프로젝트의 공동 설계자(Co-Architect)로 활용하기 위한 3대 핵심축으로 Clear Boundaries(명확한 제약과 한계 설정), Doc-Driven Design(코드 전 마크다운 문서 합의), Iterative Chunking(모듈 단위의 분할 실행)이 겹치는 가운데에 10X Developer Productivity(압도적 개발 생산성). 아래 문장은 이 채팅 로그의 가장 큰 성공 요인은 코딩 그 자체보다 코드를 짜기 전 환경과 룰을 세팅하는 데 가장 많은 프롬프트를 할애했다는 점

마무리 슬라이드. 인용문은 가장 효율적인 코딩은 코드를 짜기 전 어떻게 짤지 AI와 완벽히 합의하는 것이라는 문장. Key Takeaways는 엑셀과 게임 엔진을 분리하는 Data-Driven Design, 기존 코드베이스와 충돌 없이 융합하는 Custom Modularization, 할루시네이션을 막는 Plan-First 마크다운 설계, 해결책 강요 대신 논리 검토 요청(Validating)으로 시스템 품질 향상. 결론은 설계는 인간이, 구현은 AI가. 이 프로젝트 채팅 로그는 명확한 기획과 제약 조건이 주어졌을 때 AI가 아키텍처를 설계하고 구현할 수 있음을 보여주는 사례라는 설명

"10배 생산성" 같은 표현은 슬라이드의 요약이고, 실제 효과는 팀과 프로젝트에 따라 다릅니다. 다만 프롬프트의 대부분을 환경과 규칙 설정에 쓴다는 관찰은 AI 코딩을 도입하는 팀이 바로 적용해 볼 수 있는 기준입니다.

자주 묻는 질문

AI에게 처음 무엇부터 알려 줘야 하나요? 사용 중인 엔진 기능과 기존 매니저, 그리고 만들지 않을 기능입니다. 저장·사운드·리소스 로딩처럼 이미 있는 시스템을 먼저 밝히면 중복 구현이 크게 줄어듭니다.

설계 문서는 어느 정도까지 받아야 하나요? 폴더 구조, 클래스 이름, 데이터 흐름이면 충분합니다. 이 문서를 작업 공간에 두고 이후 요청마다 기준으로 삼으면 긴 대화에서도 구조가 흔들리지 않습니다.

모듈을 얼마나 잘게 나눠야 하나요? 한 번의 응답에서 한 모듈을 끝낼 수 있는 크기가 기준입니다. 설계 문서에 단계 번호를 매겨 두고 번호 단위로 지시하면 출력이 잘리거나 로직이 엉키는 일을 줄일 수 있습니다.

저희가 이 이야기를 하는 이유

에버스톤은 2013년부터 유니티로 모바일 게임과 앱을 만들어 왔고, 최근에는 AI 코딩 도구를 개발 과정에 들이고 있습니다. 엑셀로 기획 데이터를 관리하고 기존 매니저 구조를 유지하는 방식은 저희 프로젝트에서도 늘 부딪히는 조건이라, 이 자료의 요청 방식 비교를 도입 기준을 세우는 참고로 삼고 있습니다.

인용한 수치와 사례는 원 자료 기준이며, 저희가 검증한 내용이 아닙니다.

다른 글