728x90
728x90
[ 회고 & 컬럼/쿠고랑 개발일지 ][Python/AEO] llms.txt와 자동 생성 주제 색인으로 220개 항목 저장소를 LLM이 읽는 문서로 바꾸기2026-11-14 19:59:51TL;DR지식 저장소 kugorang/ai-dev-knowledge에는 항목 220개가 월별 파일 3개(합계 163,946바이트)에 들어 있습니다. 가장 큰 파일은 2026년 11월 파일 하나로 185개 항목 144,118바이트이고, 항목 하나를 찾으려면 그 파일 144,118바이트를 통째로 읽어야 했습니다.2026-11-14에 llms.txt(3,718바이트)와 주제 색인 페이지 9개·색인 목차 1개(합계 168,644바이트), 그리고 색인을 만드는 scripts/build-index.py(280줄, 표준 라이브러리만 사용)를 추가했습니다.python3 scripts/build-index.py --check는 색인이 낡았으면 종료 코드 1을 냅니다. 실측으로 색인 링크 473개가 모두 실제 항목 헤딩 ..- [ 모바일 & 앱/Flutter & Dart ][Flutter/Mobile] Unity 개발자가 본 Flutter 렌더링 파이프라인: RepaintBoundary와 ValueNotifier로 캘린더 위젯 프레임 드랍(Jank) 방어하기2026-11-13 21:35:54TL;DRFlutter에서 월간 캘린더 셀을 터치할 때 발생하는 프레임 드랍(Jank)은 상위 위젯의 setState() 호출로 인해 42개 날짜 셀의 RenderObject 전체가 markNeedsPaint() 루프를 타기 때문입니다.Unity 6 (Unity 6.3) 게임 엔진의 컴포넌트 격리 멘탈 모델을 선언형 UI에 적용하여, 날짜 셀에 RepaintBoundary를 부여해 GPU 래스터 레이어 캐시를 확보했습니다.상태 전달을 캘린더 전체 리빌드가 아닌 단일 셀 단위의 ValueNotifier 구독으로 전환하여, UI 스레드 렌더링 시간을 14.8ms에서 1.8ms로 87.8% 단축하고 60fps를 실측 검증했습니다.1. 문제 현상: 날짜 하나를 눌렀을 뿐인데 왜 화면이 튀는가?쿠고랑의 캘린더 퍼..
- [ 시스템 & 인프라/Linux & DevOps ][Linux/DevOps] 저사양 클라우드 인스턴스에서 백그라운드 데몬 가용성을 높이는 방법: HTTP/2 표준화와 스왑 메모리 가드2026-11-12 22:30:03TL;DR (핵심 요약)1GB RAM처럼 컴퓨터 메모리가 작은 클라우드 컴퓨터에서는 메모리가 꽉 차면 리눅스 커널의 OOM Killer 기능이 실행 중인 프로그램을 강제로 종료합니다.하드디스크의 일부분을 메모리처럼 활용하는 스왑(Swap) 공간을 만들면 메모리 부족으로 프로그램이 꺼지는 현상을 방지할 수 있습니다.무거운 브라우저 프로그램을 사용하는 대신, 운영체제에 기본으로 설치된 curl 프로그램을 사용하여 HTTP/2 프로토콜로 통신하면 컴퓨터의 메모리 사용량을 낮게 유지할 수 있습니다.1. 컴퓨터 기초 개념과 문제 정의이 글을 이해하기 위해 필요한 컴퓨터 용어와 동작 원리를 먼저 설명합니다.1.1 핵심 컴퓨터 용어 정의클라우드 인스턴스 (Cloud Instance): 인터넷을 통해 원격으로 빌려 쓰..
[ 게임 개발/Unity 6 & C# ][Unity/C#] Unity 6(6.3) FSM과 가비지 컬렉션(GC) 0MB 최적화 기법: 시즌 1 36명 캐릭터 FSM과 수백 개 오브젝트 무가비지 풀링 아키텍처2026-11-10 21:57:13TL;DR1. Unity 6(Unity 6.3) 환경에서 방치형 클리커의 다중 엔티티 동시 제어 시 발생하는 프레임 드랍의 주원인은 빈번한 Instantiate/Destroy와 상태 전환 델리게이트 힙 할당입니다.2. 상태 패턴(State Pattern) FSM을 정적 인스턴스로 캐싱하고, 큐(Queue) 기반 오브젝트 풀링을 결합하여 프레임당 가비지 컬렉션(GC) 할당량을 0바이트(0B)로 수렴시켰습니다.3. 본 포스팅에서는 모바일 저사양 기기에서 60FPS를 항시 유지하기 위한 C# 무가비지 FSM 아키텍처와 실측 벤치마크 데이터를 정리합니다. 1. 문제 정의: 멀티 엔티티 동시 구동 시 GC Spike 발생 원인쿠고랑 (kugorang)의 모바일 방치형 게임 은 시즌 1에 등장하는 12개 패밀리 총..
[ 게임 개발/Unity 6 & C# ][Unity/C#] 방치형 클리커 최적화: 600명 객체 풀링과 Queue 기반 무한 순환 FSM 설계 (Garbage Collection 0회 달성)2026-11-09 21:23:44TL;DR• 문제 정의 — 모바일 클리커 환경에서 600명의 손님 인스턴스를 동적으로 생성·파괴하면 힙 메모리 단편화와 가비지 컬렉터(GC) 실행으로 프레임 드롭(16.6ms 초과)이 발생합니다.• 아키텍처 해법 — Queue 기반 순환 인덱스 버퍼, 600개 경량 데이터 구조체 사전 풀링(Object Pooling), 4단계 유한 상태 머신(FSM)을 구축했습니다.• 실측 검증 결과 — 인게임 런타임 중 캐릭터 순환 관련 힙 할당 0 Bytes, GC 수거 0회 유지, 저사양 안드로이드 기기에서 60FPS를 방어했습니다.1. 개요 및 병목 현상 분석쿠고랑 (kugorang)의 방치형 클리커 게임 은 600종의 고유 손님 데이터가 순차적으로 고물상 화면에 진입해 터치 입력을 처리하고 퇴장하는 루프 구조를..
[ 회고 & 컬럼/쿠고랑 개발일지 ][쿠고랑 AI 일일 개발일지 #01] Unity 6 UI Toolkit 실측 픽셀 대조: USS cubic-bezier 미지원 결함 해결기2026-11-08 18:30:18TL;DR — 3줄 핵심 요약• 문제: 컴퓨터 화면에 버튼을 그릴 때, 원래 계획했던 점(픽셀)의 위치와 실제 게임 화면에 그려진 점의 위치가 1~2개씩 어긋나는 문제가 생겼습니다.• 원인과 기술: 이미지를 9개 조각으로 나누어 늘리는 방법(9-슬라이스)과 버튼 움직임 속도 규칙(cubic-bezier)이 유니티 6 엔진에서 제대로 실행되지 않았습니다. 화면을 사진 찍어 점의 개수를 자로 재듯 세어보며 문제를 확인했습니다.• 해결과 인계: 작동하지 않는 규칙을 유니티가 읽을 수 있는 다른 규칙으로 바꾸고, 이 사실을 다음 작업자를 위해 노션(Notion) 공용 메모리에 기록했습니다.1인 인디게임 개발사 쿠고랑에서 만들고 있는 3D 큐브 스도쿠 게임 'Facet'의 화면을 유니티 6 엔진으로 옮기던 202..
[ 42경산 & 알고리즘/42 과제 회고 ][42경산 FDF] 와이어프레임 모델 구현 가이드: 등각 투영 좌표 계산부터 DDA·Bresenham 선 그리기까지2026-04-12 01:19:33TL;DR — 3줄 핵심 요약• 문제: .fdf 파일에는 숫자만 들어 있는데, 화면은 가로와 세로 두 개의 숫자로 위치를 정한다. 3차원 숫자를 2차원 화면 숫자로 바꾸지 못하면 선을 하나도 그릴 수 없다.• 기술/원인: MiniLibX 창은 픽셀 색 값을 담은 1차원 메모리 배열이다. (x, y) 픽셀의 주소는 y * line_len + x * (bpp / 8) 로 계산되고, 그 주소에 4바이트 색 값을 쓰면 화면의 그 점이 바뀐다.• 해결/인사이트: 원본 z[y][x]는 건드리지 않고, 그릴 때마다 중심 정렬 → zoom → z_scale → 회전 → 등각 투영 → shift 순서로 화면 좌표를 새로 계산한 뒤, DDA로 두 점 사이를 픽셀 단위로 채운다.FDF가 하는 일: 파일의 숫자를 선으로 바꾸..
[ 게임 개발/Unity 6 & C# ][Unity] ML-Agents로 구현하는 강화학습 게임 AI: 관찰·행동·보상 설계부터 학습 파이프라인까지2025-10-25 20:38:11TL;DR — 3줄 핵심 요약• 문제: 조건문으로 NPC를 짜면 상태(체력, 적 위치, 탄약, 부상병 수)가 늘어날수록 경우의 수가 곱으로 늘어나고, 개발자가 넣지 않은 조합에서 NPC는 아무 행동도 하지 못한다.• 기술/원인: ML-Agents는 상태를 숫자 배열(관찰)로 넘기고, 신경망이 출력한 행동 값을 받아 실행한 뒤, 그 결과로 보상 숫자를 돌려주는 루프를 반복한다. 신경망의 가중치는 PPO 같은 알고리즘이 누적 보상을 키우는 방향으로 조금씩 수정한다.• 해결/인사이트: 결과를 좌우하는 것은 알고리즘이 아니라 보상 함수다. 휴리스틱 모드로 환경이 정상인지 먼저 확인하고, 강화학습으로 정책을 학습시키고, 시범 데이터가 있으면 모방학습으로 출발점을 앞당기는 순서가 실전에서 가장 빠르다.ML-Agen..
728x90
728x90