게임을 만들다 보면 처음에는 잘 돌아가던 프로젝트가 오브젝트가 늘어날수록 끊기기 시작합니다. 특히 모바일 기기에서는 같은 게임도 훨씬 무겁게 느껴집니다. 최적화는 감으로 하는 일이 아니라 원인을 측정하고 하나씩 줄이는 일입니다. 이 글은 유니티에서 최적화를 시작할 때 알아야 할 기본기를 다룹니다.
먼저 측정하기: 프로파일러
최적화의 첫 원칙은 추측하지 말고 측정하라는 것입니다. 유니티에는 프로파일러(Profiler)라는 도구가 있어 한 프레임 안에서 CPU, GPU, 메모리가 각각 얼마나 쓰이는지 그래프로 보여 줍니다. 렌더링이 문제인지, 스크립트가 문제인지, 물리 계산이 문제인지를 여기서 먼저 구분합니다.
에디터에서 측정한 결과는 실제 기기와 다를 수 있습니다. 모바일 게임이라면 개발용 빌드를 기기에 설치하고 프로파일러를 연결해 실제 환경에서 확인하는 것이 정확합니다.
렌더링 최적화: 드로우콜 줄이기
드로우콜(Draw Call)은 CPU가 GPU에게 무언가를 그리라고 보내는 명령입니다. 명령 수가 많을수록 CPU 부담이 커집니다. 화면에 보이는 오브젝트와 재질 종류가 많을 때 드로우콜이 늘어납니다.
- 움직이지 않는 배경 오브젝트는 Static으로 설정해 묶어 그리기(배칭) 대상이 되게 합니다.
- 같은 재질을 여러 오브젝트가 함께 쓰도록 텍스처를 한 장에 모읍니다. 이를 텍스처 아틀라스라고 합니다.
- 같은 모델이 많이 반복되면 GPU 인스턴싱을 켭니다.
- 멀리 있는 물체는 LOD(Level of Detail) 그룹으로 단순한 모델로 바꿔 그립니다.
- 벽 뒤에 가려져 안 보이는 물체는 오클루전 컬링으로 그리지 않게 합니다.
Frame Debugger를 열면 한 프레임이 어떤 순서로 그려지는지 단계별로 볼 수 있어 불필요한 그리기 작업을 찾기 쉽습니다.
유니티(Unity) 최적화 기본 혼자 배우다 막혔다면, 수업으로 체계적으로과정 상담 → 스크립트 최적화: 매 프레임 하는 일 줄이기
Update 함수 안의 코드는 1초에도 수십 번 실행됩니다. 여기서 GetComponent나 오브젝트 검색(Find)을 반복하면 작은 비용이 쌓여 큰 부담이 됩니다. 필요한 참조는 시작할 때 한 번 가져와 저장해 둡니다.
가비지 컬렉션(GC)도 주의해야 합니다. 가비지 컬렉션은 쓰지 않는 메모리를 자동으로 정리하는 기능인데, 정리하는 순간 게임이 잠깐 멈칫할 수 있습니다. 매 프레임 문자열을 합치거나 새 리스트를 만드는 코드를 줄이고, 자주 생겼다 사라지는 오브젝트는 오브젝트 풀로 재사용하면 이런 멈춤을 줄일 수 있습니다.
메모리와 리소스 관리
| 대상 | 확인할 점 |
|---|
| 텍스처 | 실제 화면 크기에 비해 해상도가 너무 크지 않은지, 플랫폼에 맞는 압축 형식을 썼는지 |
| 오디오 | 긴 배경음은 스트리밍, 짧은 효과음은 메모리에 올리는 식으로 설정을 나눴는지 |
| 모델 | 보이지 않는 면이나 지나치게 촘촘한 폴리곤이 없는지 |
| 씬 | 쓰지 않는 리소스가 계속 메모리에 남아 있지 않은지 |
텍스처는 메모리를 가장 많이 차지하는 경우가 많습니다. 모바일에서 작게 보이는 아이콘에 큰 이미지를 그대로 쓰는 일이 흔하니 임포트 설정의 최대 크기부터 점검해 보세요.
최적화는 언제 하나
개발 초반부터 모든 코드를 최적화하려고 하면 진도가 나가지 않습니다. 기능을 먼저 완성하고, 목표 기기에서 정기적으로 측정하다가 기준보다 느려지는 지점에서 원인을 찾아 고치는 방식이 현실적입니다. 다만 오브젝트 풀이나 참조 저장처럼 처음부터 지켜도 부담이 없는 습관은 미리 들여 두는 것이 좋습니다.
목표를 정해 두면 판단이 쉬워집니다. 예를 들어 우리 게임은 어떤 기기에서 어느 정도 프레임을 유지한다는 기준을 팀이 함께 정하고, 그 기준 아래로 떨어지는 장면만 집중해서 고치는 식입니다. 기준이 없으면 끝없이 최적화만 하다가 일정이 밀리기 쉽습니다.
관련 수업 안내
SBS아카데미게임학원 유니티3D(Unity) 과정은 오브젝트 풀, 렌더링, 셰이더 등 엔진 고급 내용을 다루고 포트폴리오 제작 단계에서 실제 프로젝트에 적용해 볼 수 있도록 구성되어 있습니다.
자주 묻는 질문
프레임이 떨어지면 가장 먼저 무엇을 보나요?
프로파일러에서 CPU와 GPU 중 어느 쪽이 오래 걸리는지 먼저 확인합니다. 원인 쪽이 정해져야 드로우콜을 줄일지, 스크립트를 고칠지 결정할 수 있습니다.
최적화 경험도 포트폴리오에 넣을 수 있나요?
넣을 수 있습니다. 최적화 전후 프로파일러 화면과 무엇을 바꿨는지 정리하면 문제 해결 능력을 구체적으로 보여 줄 수 있습니다.
오브젝트 풀과 렌더링 등 이 글의 최적화 기초를 실제 게임 제작 단계에서 적용해 보는 과정입니다.
게임프로그래밍학과전 세계적으로 가장 널리 사용되는 실시간 개발 플랫폼 Unity(유니티)를 활용해 2D·3D 게임부터 인터랙티브 콘텐츠, 메타버스, AR/VR까지 다양한 디지털 콘텐츠를 직접 기획하고 제작하는 실무 중심 프로그램입니다.
강의정원 10명 내외강의시간 2시간 내외교육난이도 Lv.1~5수업 요일·횟수 월수금, 화목금, 격일, 매일
수업 진행 순서C언어 기초 → C# 게임 로직 → Unity 기능 실습(UI·물리 효과·애니메이션·씬 관리) → 개인·팀 프로젝트 → 포트폴리오 / 단위 수업: 이론·개념 설명 및 강사 시연 → 단계별 개인·팀 실습 및 과제 제작 → 1:1 강사 피드백 및 수정 보완
실습 내용C언어로 코드를 직접 작성해 보고, Unity에서 C# 스크립트로 게임 규칙과 동작을 구현합니다. 물리 효과, UI 연결, 애니메이션 제어를 넣어 보고, 게임 오브젝트와 씬을 구성해 하나의 게임으로 엮어 봅니다.
강사 피드백 방식10명 내외 소수 정원 수업으로 진행하며, 실무 강사진이 수강생의 실습 과제·작품·기획서를 1:1로 확인하고 수정·보완 방향을 직접 피드백합니다.
- 유니티 초급유니티의 구조와 이해 · 유니티 인터페이스 · 객체 생성 및 컴포넌트 · Scene 구성과 카메라 · Asset의 활용과 객체 이동 · 키보드 입출력 제어 · 물리와 충돌의 이해 · Animation 컨트롤 · 프리팹(Prefab)의 이해와 사용 · Layer와 Tag의 활용 · NGUI와 터치 인터페이스 · 마우스 및 터치 컨트롤 · Scene 제어 및 Popup 제어 · Joint와 2D 물리 · Raycasting과 Picking · 가상 키패드의 제작 · Angry Bird 예제 따라하기 · PC와 모바일 빌드 해보기
- 유니티 2D 초급2D 슈팅 게임 프로그래밍 기획 설계 · Scene의 구성과 이동 · 2D Sprite의 출력 · 주인공 출력과 이동 · 배경의 출력과 스크롤 · 2D 물리의 이해와 구현 · 미사일 발사 구현 · 미사일 관리 · 오브젝트 풀(Pool)의 사용 · 적의 생성과 Animator의 활용 · 컨디션 설정으로 상태 변화 · 여러 종류의 적 생성 · 이펙트와 사운드 · 적의 죽음 처리 · 코루틴의 이해(Coroutine) · 매니저를 이용한 적의 관리 · 플레이어의 죽음 처리 · 타이틀, 로비 , 환경설정, 결과화면 처리
- 유니티 3D 초급Scene의 구성과 Light · 버텍스(Vertex), 폴리곤, Mesh의 이해 · 텍스쳐(Texture)와 쉐이더(Shader)의 이해 · 3D 공간에서 오브젝트의 이동 · 카메라의 회전과 이동 · Rigidbody를 이용한 물리와 충돌처리 · 본과 리깅의 이해 · Animation(Legacy)의 활용 · Animation(Mecanim)의 활용 · Animation의 제어 및 모션연결 · Animation Event기능과 공격판정 · 엑셀 데이터를 통한 Effect 제어 · 마우스를 이용한 캐릭터 제어 · NavMesh를 이용한 길찾기 · NavAgent 기능을 활용한 AI · Lighting Map · 3D 최적화 방법
- 유니티 3D 중급3D 액션 RPG · Scene의 구성과 이동 · 3D 카메라 컨트롤 · 키보드와 가상 키패드로 캐릭터 이동 · Character Controller의 사용 · 적 리소스 추가 및 Spawn 기능 구현 · 무기의 교체 및 애니메이션 · 충돌 처리 및 파티클 생성 · 주인공 점프, 회피, 스킬 등 기능 구현 · 적의 AI 설계 및 FSM의 이해 · 적의 유한상태기계(FSM)의 구현 · 적을 관리하는 매니저 구현 · 적과 주인공의 피격처리 · 점수처리와 PlayerPerfs에 저장 · 보스 몬스터의 구현 · HUD를 통한 UI 구성 · Item과 버프 기능 구현
- 유니티 3D 고급 과정 포트폴리오제작 or 1인게임개발제작게임 구상 및 컨셉 기획 · 리소스 수집 · 기본 기능 테스트 및 R&D · 목표 설정 및 일정 관리 · 플레이어 컨트롤 · 레벨 디자인 및 테이블 작업 · 각종 이펙트 및 사운드 적용 · 플레이 데이터 저장 · 타이틀, 로비, 결과화면 등 UI 작업 · 랭킹 , 도전과제 등 구글 API 적용 · PC 및 모바일 빌드 & QA · 백엔드 서버(Parse) DB연동 작업 · 소셜 네트워크 연동 작업
수료 후 결과물 — 수료 결과물(Unity로 만든 개인·팀 프로젝트 포트폴리오), C언어 기초 문법 실습, C# 게임 로직 구현, UI·물리 효과·애니메이션 기능 실습
이어지는 진로 — Unity 게임 개발자, 인터랙티브 콘텐츠 개발, 메타버스·AR/VR 콘텐츠 개발
유니티3D(Unity) 과정 자세히 보기 →