묻공러
'게임 엔진 - 유니티' 카테고리의 글 목록

게임 엔진 - 유니티

게임 엔진 - 유니티/유니티

[유니티 최적화] Garbage Collector

# GC더 이상 참조 하지 않는 쓰레기 메모리들을 GC가 알아서 수집하고 자동으로 해제해 주는 기능을 의미한다프로파일러를 보다 보면 순간적으로 GC 때문에 성능이 하락하거나 게임이 끊기는 경우가 발생하는데이를 GC spikes라고 부른다 GC를 최소화 하기위한 다양한 기법을 숙지해서 활용하는 것이 중요하다# GC를 줄이기 위한 다양한 기법들 1. 객체 풀링 (Object Pooling) 개념: 게임에서 자주 생성되고 파괴되는 객체들(예: 총알, 파티클 효과, 적 캐릭터)을 미리 일정량 생성해두고 재활용하는 기법이다객체를 파괴하는 대신 비활성화해서 풀에 반환하고, 필요할 때 풀에서 꺼내 활성화하여 사용한다활용: Instantiate와 Destroy는 GC 발생의 주요 원인이다풀링을 사용하면 이 두 연산을 ..

게임 엔진 - 유니티/유니티

[유니티 최적화] 메시 압축

# 메시(Mesh)란?유니티에서 3D 모델은 기본적으로 메시이다메시는 3D 객체의 모양을 정의하는 데이터 덩어리로아래의 요소들로 구성된다- 정점 (Vertices)3D 공간에서 점들의 위치 (X, Y, Z 좌표) - 삼각형 (Triangles/Indices)정점들을 연결해서 만들어지는 가장 작은 기본 단위로이 삼각형들이 모여 모델의 형태를 만든다 - 노멀 (Normals)각 정점이나 면이 어느 방향을 바라보고 있는지 나타내는 정보로빛 계산에 사용된다 - UV 좌표 (UV Coordinates)모델 표면에 텍스처를 입힐 때,텍스처의 어느 부분이 모델의 어느 정점에 매핑될지를 나타내는 2D 좌표 - 탄젠트 (Tangents)노멀 맵(Normal Map) 같은 특수 텍스처를 사용할 때 필요한 정보이다이런 정보..

게임 엔진 - 유니티/유니티

[유니티 최적화] 배칭

# 배칭(Batching)?유니티 최적화 기술 중 배칭(Batching)은 중요하다특히 모바일이나 저사양 기기를 위한 유니티 게임을 만들 때필수적으로 이해하고 활용해야 하는 기술이다배칭은 간단히 말해 CPU가 GPU에 그리기 명령(Draw Call)을보내는 횟수를 줄여서 렌더링 성능을 최적화하는 기술이다# 드로우 콜(Draw Call)?배칭을 이해하려면 먼저 드로우 콜을 알아야 한다드로우 콜은 CPU가 GPU에게"이 모델을 이 재질로, 이 위치에 그려라"라고명령을 내리는 것을 의미한다 CPU는 게임 로직 계산, 물리 연산, 드로우 콜 생성 등의 일을 하고GPU는 CPU로부터 받은 드로우 콜을 바탕으로 실제로 화면에 이미지를 그린다문제는 CPU가 드로우 콜을 생성하고 GPU에 보내는 과정이 생각보다 비용이..

게임 엔진 - 유니티/유니티

[유니티 최적화] IL2CPP

# 유니티 빌드 과정유니티는 스크립트(C# 등)와 분리된 계층에서 실행된다이 스크립트들은 빌드를 진행하면 아래와 같은 단계로 실행된다 1. IL 코드 생성: 개발자가 작성한 C# 코드는 먼저 IL(중간 언어)로 컴파일된다 2. IL2CPP 변환: IL 코드를 IL2CPP 백엔드가 받아서 C++ 소스 코드로 변환한다 3. 네이티브 컴파일: 변환된 C++ 소스 코드는 각 플랫폼(iOS, Android, Windows 등)에 맞는 네이티브 컴파일러 (ex. iOS는 Clang, Android는 GCC/Clang, Windows는 MSVC)를 통해 해당 플랫폼의 기계어 코드로 최종 컴파일된다 # IL2CPP의 장점1. 런타임 성능IL2CPP는 모든 IL 코드를 미리 C++ 코드를 거쳐 네이티브 기계어로 컴파일..