2026/10/01 3

오답노트

static int Run(){ try { return 7; } finally { Console.Write("F"); }}Console.Write(Run());return은 값을 호출한 쪽에 돌려주는 명령이고, Console.Write()는 콘솔에 문자를 출력하는 명령이야. 둘은 완전히 다른 동작이야.1. 실제 코드 실행 순서static int Run(){ try { return 7; } finally { Console.Write("F"); }}Console.Write(Run());이 코드를 실행 순서대로 따라가 보자.Console.Write(Run())을 만난다.Console.Write()를 실행하려면 인자로 전달할 Run()의 반환값을 먼저 알아야 하므로 Run()부터 실행한다...

카테고리 없음 2026.10.01

게임 프로그래밍 Base knowledge

게임 프로그래밍 문제를 빠르게 풀려면 나는 Identity × Lifetime × State × Time × Ownership × Order 여섯 축을 머릿속 체크리스트처럼 두는 걸 추천해. 문제가 생기면 “이 중 뭐가 깨졌지?”라고 먼저 보는 거야.문제 유형먼저 정의할 불변식이런 증상이 보이면 의심대표 원인 Entity Identity / Lifetime새 엔티티는 이전 엔티티의 상태를 상속받지 않는다리스폰 직후 이상한 데미지, 버프, 타겟팅ID 재사용, stale reference, generation 없음Object PoolingPool에서 꺼낸 객체는 새 객체와 동일한 초기 상태여야 한다두 번째 사용부터만 이상함HP/flag/list/timer 초기화 누락State Machine허용되지 않은 상태..

카테고리 없음 2026.10.01

Arena Delayed Damage Regression

코드 리뷰시 클래스가 많고 호출 상황이 복잡하다면 시작점부터 본다외부에서 처음 호출되는 함수가 뭔지 찾음예: CombatWorld.ScheduleDamage(), CombatWorld.Tick()상태를 실제로 들고 있는 클래스가 누군지 찾는다이번 경우:현재 엔티티 상태 → EntityRegistry예약 피해 → CombatWorld._damageByTick값 하나를 끝까지 추적한다예: EntityId targetScheduleDamage(target)Capture(target)EntityHandleScheduledDamage.TargetTick()Resolve(handle)실제 GameEntity함수 이름이 아니라 “무슨 상태를 읽고/바꾸는가”를 본다Spawn() → slot 점유 + generation..

카테고리 없음 2026.10.01