컨벤션 고찰 : 역할 분류와 책임의 경계소프트웨어 공학 / 설계 컨벤션 / 역할 분리Unity C# (UI 는 Model / View / Presenter 구조 가정) 역할을 어떻게 나누고 어떤 이름으로 부를지는 이 컨벤션을 쓰는 동안 계속 안고 있던 고민이다.UI 를 Model / View / Presenter 로 다시 나눈 것도, UI 에서 Controller 라는 이름을 걷어낸 것도 그 고민의 일부였다. 이번에는 씬 오브젝트 이름 규칙을 고치는 작업이었고, 우선순위 표를 채우다 설명되지 않는 칸 하나가 남으면서 그 고민이 다시 표면으로 올라왔다. 이 글은 그 과정을 AI(Claude)와 나눈 대화 순서대로 기록한다. 인용한 프롬프트는 원문에서 필요한 부분만 잘라 옮겼다. 1. 출발점 : 씬 오브젝트..
코드의 의존성 관리소프트웨어 공학 / 설계 패턴 / 의존성 관리C# (Unity 환경 가정, Unity 6.6 문서 기준으로 확인) 의존성 관리는 한 객체가 동작에 필요한 다른 객체를 어떤 경로로 얻는지 정하는 설계 문제다.대표적인 해법인 싱글톤, 서비스 로케이터, 의존성 주입(DI)은 "필요한 객체를 누가 찾아서 쥐어주는가"라는 같은 질문에 서로 다르게 답한다. 이 글은 세 방식의 구조, Unity 환경에서 생기는 함정, 상황별 선택 기준을 정리한다. 1. 의존성이란 무엇인가Player가 피격 사운드를 재생하려면 오디오 시스템이 있어야 한다. 이때 Player는 오디오 시스템에 의존한다고 말한다.의존 자체는 문제가 아니다. 의존 없는 프로그램은 아무것도 하지 못한다. 문제는 어떻게 의존하느냐이고, 이를..
UGUI 드로우콜·배칭·리빌드 정리Unity uGUI 에서 드로우콜이 어떻게 결정되고, Canvas 리빌드가 언제 발생하며, Nested Canvas 를 어디에 세워야 하는지를 파이프라인 단위로 정리한 문서다. 1. 전체 그림 - 3단 파이프라인1-1. 단계별 역할단계하는 일더티 트리거실행 위치갱신 범위1. Layout RebuildRectTransform 의 rect(크기) 확정. LayoutGroup 계산SetLayoutDirty()C#더티 서브트리2. Graphic RebuildOnPopulateMesh() 로 정점 생성 후 CanvasRenderer 에 제출SetVerticesDirty()SetMaterialDirty()C#더티 요소만3. Batch BuildCanvasRenderer 메쉬들을 캔..
Claude Code CLI, 하나의 PC에서 두 개의 계정 쓰기Claude Code는 계정을 머신 단위로 1개만 저장한다.디렉토리별 계정 지정 기능은 없지만, CLAUDE_CONFIG_DIR 환경변수로 설정 폴더 자체를 분리하면 사실상 동일한 결과를 얻을 수 있다. 1. 문제 상황하나의 개발 PC에서 서로 다른 Claude 계정을 함께 써야 하는 상황이 생겼다. 개인 계정과 회사(조직) 계정을 분리해서 사용하고 싶다프로젝트 A는 회사 조직 계정, 프로젝트 B는 개인 계정으로 붙이고 싶다특정 리포지토리만 다른 계정으로 작업하고 싶다 직관적으로는 "디렉토리별로 계정을 지정하는 설정"이 있을 것 같지만, 그런 기능은 없다. 2. 왜 안 되는가 - 구조 이해2.1 로그인은 머신 전역이다항목범위동작/login..
혼자 데스크탑 게임을 만들다 두 번째 난관에 봉착했었다. 타일을 절반으로 줄이기까지 배율 단계가 두 개뿐이었다.맵이 32픽셀 타일 아홉 줄이라 기준 높이가 288픽셀이고, 창은 576이었다. 그러니까 1배와 2배였다. 방치형 게임인데 줌 단계가 두 개면 조작이랄 게 없다.3배로 올리면 864픽셀이라 바탕화면 게임이 아니라 그냥 화면 반을 먹는 창이 된다. 그래서 소수 배율을 생각했다 32의 절반은 16이다. 정수다.32의 1.5배는 48이다. 이것도 정수다. 그러면 0.5, 1, 1.5, 2 네 단계를 쓸 수 있는 거 아닌가.144, 288, 432, 576. 다 딱 떨어진다. 픽셀이 깨질 이유가 없어 보였다. 이걸 제안했더니 반박이 왔다.타일 전체가 정수로 떨어지는 것과 픽셀 하나가 정수배로 커지는 건..
