게임 프로그래밍 개념 정리

성능 병목 분석, 멀티스레딩, 네트워크 위치 동기화, 객체 설계, std::vector 삭제 전략, 메모리 할당과 캐시 지역성을 한 번에 정리한 글이다.Frame Time 확인 -> Game / Draw / GPU 중 무엇이 프레임을 제한하는지 확인 -> 해당 영역을

약 16시간 전
·
0개의 댓글
·

Copy Semantics / OwnerShip / Copy Constructor / Copy Assignment / Value Category

Copy Semantics는 이 객체를 복사한다는게 프로그램에서 무슨 의미인가? 를정하는것예를들어Inventory를 복사한다면 보통 아이템 목록도 독립적으로 복사된 새로운 Inventory가 자연스럽다반대로Enemy를 복사한다는게 애매할 수 있다.같은 AI 상태까지 복

4일 전
·
0개의 댓글
·

게임 수학 2주차

여러 벡터를 재료로 사용했을 때 어떤 방향들을 만들어낼 수 있는지 이해한다.플레이어에게 다음 두 방향 벡터가 있다고 하자.플레이어가 앞으로 3만큼, 오른쪽으로 2만큼 이동한다면 이동 벡터는 다음과 같다.이처럼 여러 벡터에 각각 숫자를 곱한 뒤 더하는 것을 선형 결합(L

5일 전
·
0개의 댓글
·

게임 수학 공부

3D 모델 하나가 GPU에 들어가서 모니터의 픽셀이 되기까지 무슨 일이 일어나는지 설명할 수 있다.게임에서 메시 하나를 그린다고 했을때 대략 이런 과정을 거침이것을 크게 세부분으로 나눈다그래픽 처리기 -> 정점 변환 -> 레스터화와 단편 연산GPU는 무엇을 받는가??G

2026년 9월 4일
·
0개의 댓글
·

C++ 핵심 개념 복습: 메모리, 다형성, 동시성, 멀티스레드

멀티코어 환경에서 두 스레드가 다음 코드를 실행한다고 해보겠습니다.CPU에는 캐시 일관성(Cache Coherence)을 유지하기 위한 기능이 있는데도 count의 최종 결과가 항상 2가 된다고 보장할 수 없습니다.캐시 일관성이 있는데도 왜 이런 문제가 발생하는지 설명

2026년 8월 30일
·
0개의 댓글
·

C++/CS : 메모리, 스마트 포인터, 다형성, 객체 슬라이싱

외부 파편화빈 공간 자체는 충분하지만 여기저기 흩어져 있어서 큰 연속 메모리를 못잡는 상태내부 파편화할당받은 블록 내부에서 실제로 안 쓰는 공간이 남은 상태이 함수는 예외를 함수 밖으로 던지지 않겠다는 의미내부에서 예외가 발생하는 것 자체는 가능하고, 내부에서 잡아도

2026년 8월 27일
·
0개의 댓글
·

C++·CS 복습: 다형성·Page Fault·std::move와 해시맵

생성자/소멸자에서 virtual 호출은 현재 생성/소멸중인 클래스까지만 적용된다.즉, 자식의 오버라이딩된 함수가 아닌 같은 레벨의 가상함수가 호출된다.PageFault란 프로세스가 접근한 가상 메모리 페이지가 현재 물리 메모리에 없을때 발생할 수 있음CPU가 특정 가상

2026년 8월 24일
·
0개의 댓글
·

TIL - CS, 알고리즘

이미 다른 예외를 처리하면서 스택을 되돌리는 중에 소멸자가 호출될 수 있다. << 이게 핵심예를들어 함수 안에서 예외가 발생하면 C++은 catch를 찾으면서 스택에 있던 지역 객체들을 정리함, 이 과정을 stack unwinding이라고 함여기서 예외가 발

2026년 8월 13일
·
0개의 댓글
·

TIL - CS복습

프로세스는 각자 독립된 메모리공간을 가진 실행중인 프로그램스레드는 하나의 프로세스 안에서 실행되는 작업 흐름, 같은 프로세스의 스레드끼리는 전역/정적, 힙을 공유한다.각 스레드는 스택과 레지스터를 따로 가진다.같은 프로세스 내 스레드 전환에는 주로 레지스터, 프로그램

2026년 8월 12일
·
0개의 댓글
·

DX11 스터디 - 수학 개념 공부

(x, y, z)처럼 위치나 방향을 나타냄덧셈/뺄셈 : 이동, 두 점 사이 방향길이 : 거리내적 : 두 방향이 얼마나 같은쪽을 보는지 -> 조명 밝기, 앞/뒤 판정외적 : 두 벡터에 수직인 방향 -> 법선, 좌표축 생성여러 점을 한 번에 변환하는 규칙표, DX에서는 보

2026년 8월 7일
·
0개의 댓글
·

UE5 핵심 개념 정리: UObject·GAS·렌더링·애니메이션

TObjectPtr : 이미 존재하는 UObject를 강하게 참조한다. GC가 이 참조를 인식하므로, 이 참조가 살아있는동안 대상 UObject를 수집하지 않음TWeakObjectPtr : 이미 존재하는 UObject를 소유하지않고 관찰만 함, GC가 대상을 수집할수

2026년 8월 6일
·
0개의 댓글
·

TIL - CS

TLB는 최근 가상 페이지 -> 물리페이지 변환 결과를 캐싱하는 CPU내부의 빠른 캐시데이터 레이스 : 같은 메모리를 여러 스레드가 동기화 없이 접근하고, 그 중 하나이상이 쓰기를 하는 경우, C++에서는 정의되지 않은 동작레이스 컨디션 : 스레드 실행순서에 따라 결과

2026년 8월 4일
·
0개의 댓글
·

TIL - CS복습

std::vector에서 capacity가 꽉 찬 상태로 push_back()을 하면 내부적으로 어떤 일이 일어나고, 시간복잡도는 어떻게 되나?주소공간, 메모리 재할당 그리고 복사/이동 때문에 시간복잡도 O(N)까지는 맞는데 이터레이터, 포인터, 레퍼런스가 무효화된다는

2026년 8월 3일
·
0개의 댓글
·

C++·UE5 렌더링 최적화와 동시성 정리

오클루전 컬링이란 시야안에 있지만 다른 불투명 객체에 완전히 가려진 객체를 렌더링 하지 않는 기법을 말함프러스텀 컬링은 카메라 뒤쪽 뿐아니라 상하좌우 near/far범위를 포함한 시야밖의 객체를 렌더링하지 않는것static_cast, dynamic_cast 모두 명시적

2026년 7월 31일
·
0개의 댓글
·

DirectX 입문: Windows API·C++ 컴파일·LRU 캐시

DirectX 스터디 시작인라인함수, 컴파일단계코드카타HWND윈도우 창을 가리키는 핸들, 이 창을 Windows에 알려줄때 사용HINSTANCE실행중인 모듈을 가리키는 핸들, 아이콘, 창 클래스 같은 프로그램 리소스를 등록할 때 사용LPCWSTR유니코드 문자열 포인터

2026년 7월 30일
·
0개의 댓글
·

TIL - 기술적 의사결정 사례

시스템을 처음 도입할 때 여러 선택지를 놓고 고민했던 기록. git 커밋 로그뿐 아니라 당시 설계 메모(세션 기록)까지 다시 뒤져서, 왜 그 방식을 택했는지 이유까지 정리했다.해결하려는 문제: 몬스터가 죽을 때마다 재화를 드롭해야 하는데, 몹 하나당 드롭 개수가 여러

2026년 7월 22일
·
0개의 댓글
·

GAS 점프 파츠 효과가 남는 버그 해결

점프 파츠 먹었을때 한번만 먹기만 하면 게임 끝 다음 아웃런갈때까지도 무조건 점프가 여러번됨 이게 안없어지는 버그RemoveGEForSlot부분이 있는데 여기서GetOwnerASC()는 PS->GetPawn()이 유효할때만 ASC를 반환하는데 그 순간 ASC를 못 찾으

2026년 7월 21일
·
0개의 댓글
·

TIL - 조작법 가이드 + 파츠 드롭 버그 수정 및 UI수정

현재 UNSOutRunGuideSubsystem은 아웃런(허브)에서 "캐릭터 선택 콘솔 → 게임시작 콘솔 → 신규 NPC" 순으로 목적지 안내(마커+HUD 텍스트)만 제공한다. 이동/점프/대시 같은 기본 조작법 안내가 없어서, 처음 접속한 유저가 조작을 모를 수 있다아

2026년 7월 20일
·
0개의 댓글
·

TIL - 파츠 구조 변경 및 트러블 슈팅

StatTag 후보 배열 + 인스턴스구조로 확정Stat배열이란 이 파츠가 가질 수 있는 스텟 후보 배열 (치명타, 공격력, 치명타 데미지 증가 등)이로인해 FNSPartData에 FGameplayTag StatTag필드 추가지금 파츠 GE에 들어있는게공격력 Damage

2026년 7월 16일
·
0개의 댓글
·

TIL - 버그 수정 및 상호작용 수정 및 파츠 GE달기

재화, 힐, 드롭 아이템이 몬스터를 막는 문제 해결재화, 힐 바운싱 넣기몬스터 드롭으로 나온 아이템이 몬스터를 막는 문제, 몬스터가 이걸 못뚫고 지나감콜리전쪽을 먼저확인해보니 콜리전은 Custom으로 플레이어한테 오버랩만 가능하게 되어있었음문제는 네비메시를 드롭쪽에서

2026년 7월 15일
·
0개의 댓글
·