Unity 에서 GitHub Copilot을 사용하는 5가지 팁

유니티의 AI 도구가 베타 버전으로 출시되면서 , 특히 에디터 내 AI 어시스턴트와 인기 개발자 도구와의 통합 기능 등 새로운 기능에 대한 관심이 뜨겁습니다. 베타 버전을 처음 사용하시는 경우, AI 도구 웹 페이지에서 자세한 내용을 확인하실 수 있습니다. 또한 핵심 기능을 쉽게 익힐 수 있도록 동영상 튜토리얼 시리즈를 제작했습니다.
저희는 스테이시 하프너와 만나 그녀가 Unity 와 깃 GitHub 코파일럿을 활용하여 게임 개발 워크플로우를 최적화하는 방법에 대해 이야기를 나누었습니다. 스테이시는 마이크로소프트의 전 수석 개발자 옹호 담당자이자 유튜버이며, 10년 이상 독립 게임 개발자로 활동해 왔습니다. 그녀는 .NET, Xbox, Unity 등 다양한 플랫폼 기반의 크리에이터 기술 분야에서 경력을 쌓았습니다. 그녀는 개발자들을 위한 활동을 하지 않을 때는 자신의 인디 스튜디오를 운영하고 격주로 게임 개발 튜토리얼을 게시합니다.
아래에서 자세히 살펴보겠습니다.
팁 1: 컨텍스트 창을 거스르지 말고, 컨텍스트 창을 활용하세요.
"컨텍스트 윈도우는 AI가 세션 사용할 수 있는 작업 메모리로, 사용 시간에 제한이 있습니다." 사용하는 기본 모델에 따라 성능이 한계에 도달하기 전에 저하되기 시작할 수 있으므로 세션 진행됨에 따라 응답 정확도가 떨어질 수 있습니다. GitHub Copilot은 세션 압축할 수 있도록 하여 이 문제를 해결하는 데 도움을 주지만, 기본 모델이 이미 저하되기 시작한 후에 압축을 트리거하면 저하된 상태가 새로운 기준선이 됩니다. 그래서 처음부터 이 제한 사항을 고려하여 워크플로를 구성하는 것을 권장합니다.
"더 복잡한 기능의 경우, 메인 채팅 스레드를 사용하여 해당 작업을 조율합니다." 대규모 기능 개발의 경우, 메인 스레드가 작업을 집중적인 단위로 나누고, 각 단위를 처리하기 위해 백그라운드 에이전트를 시작하도록 하겠습니다. 코딩 담당자가 구현을 처리하고, 검증 담당자가 이를 검토하며, 검토를 통과하면 기능이 완료될 때까지 이 과정이 반복됩니다. 각 에이전트는 자체 컨텍스트에서 작동하므로 메인 스레드는 집중력을 유지하고 더 오랫동안 일관된 성능을 발휘합니다.

팁 2: 프로젝트 환경을 설정하세요
" GitHub Copilot을 구동하는 기본 모델은 일반적으로 범용적이지만, 프로젝트의 .github 폴더에 구성 파일을 추가하여 Copilot의 동작을 사용자 지정할 수 있습니다." GitHub Copilot이 프로젝트와 도메인을 더 잘 이해할 수 있도록 세 가지 주요 파일 형식을 추가할 수 있습니다.
- 사용자 지정 지침은 Copilot이 모든 세션 에서 로드하는 상시 컨텍스트로, 프로젝트의 기준선을 정의합니다. 제안서에는 선호하는 코딩 규칙, Unity 프로젝트 사양(예: Unity 엔진 버전 및 렌더링 파이프라인), 아키텍처 패턴 및 일반적인 선호 사항을 포함해야 합니다. 프로젝트의 어느 부분을 작업하든 항상 참이어야 하는 사항에 이 규칙들을 사용하세요.
- 에이전트는 각기 고유한 도구와 지침을 갖춘 해당 분야 전문가 페르소나입니다. 저는 셰이더, UI 툴킷, 게임 시스템 등을 전문으로 하는 에이전트들을 보유하고 있습니다. 가장 간단하게는 주어진 작업에 맞는 에이전트를 선택하면 되지만, 에이전트 간의 인수인계를 포함하여 더 체계적인 구조를 만들 수도 있습니다.
- 스킬 은 모듈식으로 재사용 가능한 명령어이며, 특정 작업이 트리거할 때만 로드됩니다. 스킬 설명은 매 세션 마다 로드되므로 모델은 언제 해당 스킬을 호출해야 하는지 알 수 있지만, 전체 세부 정보는 실제로 필요할 때만 로드됩니다. 예를 들어, 제 UI 툴킷 에이전트는 필요에 따라 스타일링, UXML 작성 및 관련 작업을 위해 개별 스킬을 호출합니다. 이렇게 하면 모델의 메모리 컨텍스트가 작업 간에 효율적으로 유지됩니다.

팁 3: 훌륭한 계획은 큰 효과를 가져온다
"계획 단계는 모든 구현이 시작되기 전의 첫 번째 단계입니다." `/plan` 명령어 다음에 구체적인 지침을 입력하면 GitHub Copilot은 코드베이스를 분석하여 코드를 한 줄도 작성하기 전에 구현 경로를 계획합니다.
해당 기능이나 수정 사항을 가능한 한 자세하게 설명한 다음 Copilot에 조사를 요청하고 질문을 보내달라고 하세요. 이러한 의견 교환을 통해 사용자 경험과 기능에 대해 더 자세히 생각해 볼 수 있으며, 종종 예외적인 상황들을 발견할 수 있습니다. 해당 반복 작업이 완료되면 AI가 구현의 큰 틀을 정의하도록 하세요. 여기에는 사용하는 기존 시스템, 새로 생성해야 하는 클래스와 메서드, 그리고 이 모든 것이 어떻게 통합되는지가 포함됩니다. 그런 다음에야 비로소 프로그램이 코드를 작성하도록 허용해야 합니다."

팁 4: 코드 리뷰를 건너뛰지 마세요
"AI가 생성한 코드는 검토가 필요합니다. 특히 해당 코드가 프로젝트에 장기간 사용되는 경우 더욱 그렇습니다." 구현 결과가 나오면 풀 리퀘스트처럼 취급하고 내용을 꼼꼼히 읽어보세요.
"VS Code에서 에이전트 창 기능을 제공하기 전에는 여러 가지 다른 방법을 시도해 봤는데, 이제는 그 기능을 가장 많이 사용합니다." 특정 코드를 강조 표시하고 /Explain 명령어를 사용하여 AI가 해당 코드의 작동 방식을 설명해 주도록 하거나, /Review 명령어를 사용하여 AI가 방금 작성한 코드에 대한 비평을 제공하도록 할 수 있습니다. 그다음에는 실제 풀 리퀘스트에서처럼 변경 사항에 직접 인라인 주석을 추가하고, 이를 그룹으로 묶어 AI에 보내 반복 작업을 진행하겠습니다.
"이 습관은 코드를 제 기준에 맞게 유지하고 시스템에 대한 깊은 이해를 유지하는 데 중요합니다." 그러한 지식은 게임이 발전함에 따라 올바른 디자인 결정을 내리는 데 도움이 됩니다."

팁 5: 인공지능을 개인 교사로 활용하세요
" GitHub Copilot을 사용하면 배우고 싶은 Unity 개념에 대한 맞춤형 튜토리얼을 만들 수 있습니다." GitHub Copilot은 프로젝트를 읽을 수 있으므로 게임에 필요한 것과 사용자의 기술 수준에 맞춰 학습 내용을 조정해 달라고 요청할 수 있습니다.
"저는 오랫동안 셰이더를 배우고 싶었기 때문에, 교육에 중점을 둔 Unity Shader Graph 에이전트를 만들고 이를 사용하여 전투용 지면 타겟팅 오버레이를 만들었습니다." 제가 완전히 이해하지 못하는 개념을 접했을 때는 질문을 할 수 있었고, 준비가 되었을 때만 다음 단계로 넘어갔습니다.
"시간이 지남에 따라 독립심을 키워주는 일련의 수업을 활용하는 것이 중요합니다." 예를 들어, 저는 첫 번째와 두 번째 셰이더에 대한 안내 튜토리얼을 제공해 달라고 요청했습니다. 그 프로그램은 제가 익숙하지 않은 노드와 수학적 원리를 차근차근 설명해 주어서 각 셰이더가 어떻게 작동하는지 실제로 이해할 수 있었습니다. 세 번째 셰이더는 직접 만들어보고 싶었기 때문에 막히는 부분이 있으면 정답을 물어보는 대신 힌트를 달라고 했습니다. 그것은 제게 다음 단계를 파악하는 데 도움이 되는 몇 가지 질문을 주었고, 저는 계속 나아갔습니다. 그 과정이 끝날 무렵, 저는 제가 무엇을 만들어냈는지 비로소 이해하게 되었습니다.

