전체 글 174

유니티 에디터 메모리 측정(워킹셋 · 커밋 · GC 힙)

서론내 작업 PC의 RAM은 32GB다. 크롬과 JetBrains IDE, 유니티 에디터를 함께 띄워 놓고 작업하다 보니 메모리가 모자라 뻗는 일이 생겼다. 범인을 찾아보니 유니티 에디터였다. 혼자 클라이언트만 만들 때와 달리 서버를 함께 돌려 놓고 작업하게 되면서, 에디터 프로세스 하나가 10GB 가까이까지 올라가 있었다. 문제는 이걸 눈으로 볼 방법이 마땅치 않다는 점이었다. 유니티에는 메모리를 상시로 보여 주는 내장 수단이 없어서, Profiler 창을 일부러 열지 않으면 지금 얼마를 먹고 있는지 알 수가 없다. 그래서 에디터 상단 툴바에 숫자 하나를 얹어 곁눈질로 볼 수 있게 하는 작은 툴을 먼저 만들었다. 그런데 만들고 나니 정작 그 숫자들이 일치하지 않았다. 값이 혼자 크게 오르내렸고, 툴팁의..

Marshalling(마샬링)

서론마샬링은 런타임에 C#과 C++를 잇는 다리라, 그 다리를 자주 건널수록·무거운 짐을 옮길수록 비용이 커집니다.경계 넘는 횟수를 줄이고 blittable 위주로 가볍게 넘기면 됩니다. C#으로 유니티 스크립트를 짜다 보면 결국 엔진 내부의 C++ 코드나 네이티브 플러그인과 데이터를 주고받게 됩니다. 이때 매니지드(C#)와 네이티브(C++)는 데이터를 메모리에 담는 방식이 서로 달라서, 경계를 넘길 때마다 양쪽이 알아들을 수 있는 형태로 데이터를 변환·복사하는 작업이 필요합니다. 이 작업이 바로 마샬링(Marshalling)이고, 이름 그대로 데이터를 경계 넘기 좋게 "정렬·편성"해 넘기는 과정입니다. 그런데 이 마샬링이 왜 성능 문제로 이어지는지, 그 이유와 대응을 정리해 봤습니다. 배경유니티에서 ..

명명 규칙 : Manager / Controller / System

요약 비교 테이블구분핵심 역할적용 범위설계 패턴 및 특징Manager자원 및 전역 상태 관리게임 전체 (Global)주로 싱글톤 패턴, 리소스 풀링Controller입력 처리 및 대상 조작특정 객체 (Local)주로 컴포넌트 형태, 1:1 제어System특정 도메인의 일괄 로직 연산조건에 맞는 다수 객체로직과 데이터의 분리, ECS 구조 Manager (매니저)매니저는 게임 내의 전역적인 상태나 리소스의 생명주기(생성, 보관, 소멸)를 총괄적으로 관리하는 역할을 합니다.담당 범위 : 게임 전체에서 접근해야 하는 데이터나 시스템의 기반 리소스.특징 : 게임 내에 단 하나만 존재해야 하는 경우가 많아 주로 싱글톤(Singleton) 패턴으로 구현됩니다. 하지만 너무 많은 기능을 매니저에 몰아넣으면 결합도가 ..

유니티 2026.07.14

싱글톤 / 서비스 로케이터 / DI 컨테이너

서론 무조건 오른쪽(DI)이 정답이 아니라, 프로젝트 규모와 교체 필요가 다음 칸으로 넘어갈 이유를 만들어줄 때만 이동하는 것이 핵심이다. 전역에서 매니저에 접근하는 방식은 크게 세 가지로 나뉜다. 세 방식은 "얼마나 유연하게 만드느냐 ↔ 얼마나 단순하게 추적하느냐"의 스펙트럼 위에 있다. 이 글은 셋이 각각 뭔지, 뭐가 다른지, 언제 쓰는지만 정리한다. 한눈에 비교항목싱글톤서비스 로케이터DI 컨테이너접근 방식X.Inst 직접Services.Get 창구생성자/필드로 주입인스턴스 획득내가 꺼냄 (pull)내가 꺼냄 (pull)컨테이너가 넣어줌 (push)의존성 노출호출부에 흩어짐메서드 속 Get에 숨음생성자에 드러남인터페이스불가 (구체 고정)선택 (열쇠로 택)선택 (바인딩으로 택)구현 교체불가인터페이스 열..

CS/기타 2026.07.10

서비스 로케이터(Service Locator) 패턴

실제 적용 프로젝트 GitHub - JeongTaeWoong99/Card_GameContribute to JeongTaeWoong99/Card_Game development by creating an account on GitHub.github.com 서론"교체가 필요한 곳에만 인터페이스를 걸고 나머지는 구체 타입 그대로 로케이터에 등록하면, 싱글톤의 편리함은 유지하면서 결합도만 필요한 만큼 낮출 수 있다." 게임 개발할 때 전역 접근이 필요한 매니저 클래스는 보통 싱글톤으로 만든다. 나도 보통은 프로젝트에 X.Inst 형태의 하드 싱글톤을 그대로 썼다. 하지만, '몬스터 AI를 나중에 서버가 붙게 되었을 때, 패킷을 받아 처리하는 플레이어 로직으로 변경해야 할 때, 어떻게 하지?'라는 상황을 생각해보며..

CS/디자인 패턴 2026.07.10

Addressables

분석 프로젝트 Mini_Project/Assets/Project/2_Tutorials/Addressables/README.md at main · JeongTaeWoong99/Mini_ProjectUnity tech demos & study projects (SOLID, Design Patterns, Shaders) - JeongTaeWoong99/Mini_Projectgithub.com 서론 어드레서블은 '에셋을 주소로 부르는' 대신 '비동기와 메모리 반환을 직접 챙기는' 것을 맞바꾼, 중대형·라이브 게임을 위한 유니티 공식 에셋 관리 시스템이다. '어드레서블(Addressable)'은 말 그대로 '주소를 매길 수 있는' 에셋을 뜻한다. 에셋마다 문자열 주소(address)를 붙여두고, 나중에 그 주소만..

STP(Spatial-Temporal Post-processing)

참고 영상AA 정리 글 Anti-Aliasing참고 영상 앨리어싱 (Aliasing) 이란?우리가 보는 모니터는 수많은 사각형 '픽셀'로 이루어져 있습니다. 컴퓨터가 이미지, 특히 사선이나 곡선을 이 픽셀 격자에 표현하려고 할 때 문제가 생깁니다.tae-woong.tistory.com 서론고해상도로 렌더링하면 픽셀 수가 많아 성능 부하가 크다. 그래서 나온 발상이 낮은 해상도로 렌더링한 뒤 고해상도로 끌어올리는(업스케일) 것이다. 유니티 6의 STP가 바로 이 업스케일러다. 이름에 핵심이 담겨 있다. Spatial(공간) 과 Temporal(시간) 을 함께 활용하고, Post-processing(후처리) 단계에서 저해상도 화면을 고해상도로 변환한다. 즉 여러 프레임에 걸친 시간 정보와 한 프레임 안 주변..

GPU Occlusion Culling

참고 영상서론화면에 보이지 않는 물체를 안 그리고 건너뛰면 그만큼 렌더링이 빨라진다. 그 "안 그리고 건너뛰기"를 컬링(Culling)이라고 한다. 유니티 6에는 가려진 물체를 GPU가 런타임에 직접 골라내 건너뛰는 GPU Occlusion Culling이 추가됐다. 이름에 핵심이 담겨 있다. Occlusion은 "가림", 즉 다른 물체에 가려진 것을 뜻하고, 앞에 GPU가 붙은 건 이 판정을 CPU가 아니라 GPU가 런타임에 처리한다는 의미다. 이 기능은 단독으로 동작하지 않고 GPU Resident Drawer를 전제로 한다. (GPU Resident Drawer는 별도 글에서 정리) 배경▶ 프러스텀 컬링 vs 오클루전 컬링컬링에는 크게 두 가지가 있다. 프러스텀 컬링은 카메라의 시야 범위(절두체) ..

GPU Resident Drawer(GPU 상주 드로워)

참고 영상 서론유니티 6가 되면서 다양한 최적화 기법이 새롭게 도입됐다. 그중 하나가 GPU Resident Drawer다. 알맞은 상황(중복 오브젝트가 많고 CPU 병목인 신)에서는 드로우콜이 43,000 → 128까지 줄어들 수 있을 만큼 효과가 극적인 경우도 있다. 사용해 보기 전에, 이 기능이 왜 만들어졌고, 어떤 원리로 동작하며, 언제 효과가 있는지를 먼저 정리하고 넘어가려고 이 글을 작성한다. 참고로 이름에 핵심이 담겨 있다. Resident는 "상주(常駐)한다"는 뜻으로, 그릴 데이터를 매 프레임 보내는 게 아니라 GPU 메모리에 눌러앉혀 둔다는 의미다. 합치면 "그릴 데이터를 GPU에 상주시켜 두고, 그리는 작업까지 GPU가 담당하게 만드는 기능"이 된다. 배경 : 기존 최적화 기법과 그 ..

KIVOTOS RUN(26.06.14)

블루 아카이브를 시작한지 어언 10개월 차. 처음으로 블루 아카이브 오프라인 행사에 참여하게 되었다. 오프라인 달리기 행사인데, 이번에 친구들과 모두 티켓팅에 성공하여 함께 참여하게 되었다. 장소는 하남 미사경정공원, 5km 참가 티켓은 70,000원. 이 가격에 굿즈 + 게임 쿠폰 + 건강까지 챙겨주면서, 행사 수익은 기부까지... 그저 '대 용 하'(김용하 EPD). 티케팅에 성공하면, 대회를 시작하기 전에 미리 행사 굿즈들을 배달해 준다. 특별 패키지 안에는 스트링백, 스포츠타올, 헤어밴드, 티셔츠가 들어 있다. 행사 때 꼭 가지고 가야 하는 배번호도 같이 들어가 있다. (없으면 달리기 참여를 못 한다!) 한 가지 아쉬운 건 티셔츠가 일반 면티여서 아쉬웠다. 평소에 운동할 때도 입을 수 있는 기능성..