Esc

    시리즈

    순서대로 읽는 글 묶음 34개, 369편. 주제로 좁히거나 이름으로 찾습니다.

    C#

    4개 시리즈 · 80편
    C#

    변수 하나가 메모리에 자리를 잡는 것에서 시작해 타입과 동작을 나중에 정하는 방법까지. 앞에서부터 읽는 것을 전제로 씁니다.

    Unity

    7개 시리즈 · 68편
    Unity

    패턴 이름을 외우는 것이 아니라 무엇을 얻고 무엇을 잃는지를 봅니다. 어디서든 꺼내 쓰기부터 하지 않기 위한 패턴까지, 게임 코드에서 실제로 만나는 순서로.

    Unity

    드로우 콜을 줄였는데 느려지는 일이 왜 생기는지에서 시작합니다. 배칭, 아틀라스, 라이팅, 오버드로우를 CPU 가 명령을 만드는 시간과 GPU 가 픽셀을 칠하는 시간으로 갈라서 봅니다.

    Unity

    적 1만 마리를 실제로 돌려 보고 잰 기록입니다. 이웃 탐색을 19.60ms 에서 6.26ms 로 줄인 것보다, 적이 열 배 늘어도 프레임이 안 늘어난다는 쪽이 중요합니다. 틀린 측정과 조용히 실패한 코드도 같이 적었습니다.

    Unity

    AssetBundle 은 에셋 일부를 Player 밖 파일로 빼서 따로 받고 열고 내리게 합니다. 압축과 여는 API, 의존 번들, 공용 에셋 중복, Unload 의 두 방식을 주제별로 봅니다.

    Unity

    Addressables 는 AssetBundle 위에 주소와 카탈로그를 얹어 위치 찾기와 의존 번들 열기를 대신합니다. 그룹과 번들 모양, 번들 단위 참조 카운트, 카탈로그로 하는 원격 배포를 주제별로 봅니다.

    Unity

    Content Directories 는 번들 대신 에셋 하나를 파일 하나로 빌드하고 올리고 내립니다. Root 에서 따라가는 빌드, 해시 파일, 등록과 Load, 핸들만 세는 참조 카운트, 6.6 의 한계를 주제별로 봅니다.

    Unity UI

    3개 시리즈 · 31편
    Unity UI

    유니티에 런타임 UI 가 없던 시절에 그 자리를 채운 시스템입니다. 2025년 10월에 MIT 로 열린 저장소를 보면서, 왜 이렇게 생겼고 uGUI 와 어디서 갈리는지를 짚습니다. 이어받은 프로젝트에서 만났을 때를 위한 글입니다.

    그래픽스

    2개 시리즈 · 8편
    그래픽스

    픽셀 하나의 색을 Ambient, Diffuse, Specular, Emissive 넷으로 나눠 계산하고 더합니다. 각 항이 무엇을 담당하고, 껐을 때 무엇이 깨지는지를 구 하나를 직접 칠해 가며 봅니다.

    그래픽스

    평평한 삼각형 하나가 어떻게 울퉁불퉁해 보이는가. 밝기를 정하는 것이 모양이 아니라 법선이라는 데서 시작해, 그 법선을 텍스처에 담는 방법과 그래서 못 하게 되는 것까지.

    게임 수학

    1개 시리즈 · 19편

    라이브러리

    13개 시리즈 · 134편

    R3

    10편
    라이브러리

    UniRx 와 R3 가 스트림을 어떻게 돌리고, 언제 끊고, 누가 해제하는지 봅니다. R3 는 UniRx 를 고치지 않고 다시 썼고, 그 차이가 에러, 해제, 시간과 프레임에서 드러납니다.

    UniTask

    12편
    라이브러리

    UniTask 는 코루틴의 빈칸을 메우고 Task 의 GC 를 없앤 async 라이브러리입니다. 풀과 PlayerLoop 로 await 를 처리하는 방식과 취소, 예외, 스레드, 할당에서 생기는 일을 주제별로 봅니다.

    라이브러리

    MessagePipe 는 이벤트를 DI 컨테이너의 서비스로 만듭니다. 구독 목록의 구조, 해제와 스코프, 버퍼드와 비동기 발행, 필터와 진단에서 생기는 일을 주제별로 봅니다.

    라이브러리

    VitalRouter 는 라우터 하나에 모든 커맨드를 흘립니다. 발행과 구독의 비용, 예외, 인터셉터, 할당, 순서 제어, 스코프에서 생기는 일을 주제별로 봅니다.

    라이브러리

    유니티의 DI 는 생성자를 못 쓰는 모노비헤이비어와 씬에 묶인 수명을 넘어야 합니다. VContainer 가 스코프를 세우고, 등록을 굳히고, 주입하고, 해제하는 방식을 주제별로 봅니다.

    Zenject

    10편
    라이브러리

    Zenject 는 new 로 잇던 조립을 컨테이너가 대신합니다. 바인딩, 조회, 주입, 수명, 진입점, 풀, 검증, 비용이 어떻게 정해지는지 주제별로 봅니다.

    Reflex

    7편
    라이브러리

    Reflex 는 조립 코드를 등록 표 하나로 바꾸는 작은 DI 컨테이너입니다. 등록, 조회, 주입, 씬 통합, 오류, 비용이 어떻게 정해지는지 주제별로 봅니다.

    DOTween

    11편
    라이브러리

    DOTween 은 getter 와 setter 두 람다로 어떤 값이든 트윈합니다. 트윈이 만들어지고, 갱신되고, 시퀀스로 묶이고, 파기되는 방식과 할당을 주제별로 봅니다.

    라이브러리

    LitMotion 은 트윈 하나를 구조체 배열의 한 칸으로 만들고 Burst Job 으로 갱신합니다. 그 구조가 빌더, 핸들, 저장소, PlayerLoop, 시퀀스, 수명, 할당을 어떻게 정하는지 주제별로 봅니다.

    UniText

    12편
    라이브러리

    UniText 는 글리프 고르기만 HarfBuzz 에 맡기고 나머지를 C# 으로 짠 uGUI 텍스트 엔진입니다. 마크업, 그리기, 셰이핑, 양방향, 줄바꿈, 아틀라스, 이모지, 병렬이 어떻게 돌아가는지 주제별로 봅니다.

    라이브러리

    MessagePack-CSharp 는 필드 이름 대신 번호로 객체를 바이트로 바꿉니다. 포맷, 쓰기와 읽기, 포매터 선택, 키, AOT, Union, 보안, 스트림, 할당을 주제별로 봅니다.

    라이브러리

    MemoryPack 은 C# 메모리를 그대로 복사해 인코딩을 없앤 직렬화기입니다. 그 대가로 생기는 포맷의 제약과 버퍼, 포매터, 버전, Union, 압축, 할당을 주제별로 봅니다.

    라이브러리

    MagicOnion 은 .proto 대신 C# 인터페이스를 스키마로 쓰는 gRPC 프레임워크입니다. 등록, Unary, 클라이언트, StreamingHub, 그룹, 하트비트, 필터, Unity, 성능을 주제별로 봅니다.

    CS · 네트워크

    1개 시리즈 · 2편
    CS · 네트워크

    프로그램이 쓰는 주소는 전부 가짜입니다. 그 가짜 주소가 왜 생겼고 어떻게 진짜 주소가 되는지, 그리고 그 번역이 빗나가는 순간이 왜 프레임을 흔드는지.

    알고리즘

    3개 시리즈 · 27편
    알고리즘

    타일맵 위를 걷는 것도, 스킬 트리의 선행 조건도 정점과 간선으로 보면 같은 문제입니다. 그래프를 어떻게 저장하고 어떻게 훑는지에서 시작해 다익스트라와 A 스타까지 갑니다.

    알고리즘

    반으로 자르는 것 하나로 백만 칸이 스무 번에 끝납니다. 기본형에서 시작해 중복이 있을 때, 길이를 모르는 배열, 답 자체를 이분 탐색하는 것까지 봅니다.

    알고리즘

    가까운 것만 보려면 미리 나눠 둬야 합니다. 좌표를 칸으로 바꾸는 것부터 트리로 쪼개는 것, 물체를 묶는 것까지. 무엇이 얼마나 자주 바뀌느냐로 갈립니다.