반응형
인기글
[windbg] windbg 사용하기, 덤프 분석하기
[windbg] windbg 사용하기, 덤프 분석하기
◽ 툴(tool)
2024.06.26 15:59
"[windbg] windbg 사용하기, 덤프 분석하기" 1. 덤프를 읽을 심볼과 심볼에 맞는 소스코드 경로를 연결시킨다. 2. 덤프를 windbg에 드래그 드롭 또는 open으로 파일을 열면 이런 화면을 볼 수 있다.Loading Dump File : 덤프 파일의 위치, 덤프 종류 Executable search path is : 덤프가 발생한 OS Debug sesstion time : 덤프 발생 시점 시간 Process Uptime: 부팅 이후 동작한 시간 3. !analyze -v 명령어 실행 !analyze-v 명령어를 실행하면 더욱 자세하게 덤프 내용이 나온다.FAULTING_IP: 어떤 부분에서 문제가 일어났는지 표시한다. callstack의 마지막 부분이다. KERNRLBASE.d..
게임 회사 용어 정리 (아마 계속 업데이트 될거임.)
게임 회사 용어 정리 (아마 계속 업데이트 될거임.)
◽ 취업&이직
2024.07.11 17:18
1. IBT (Interal Beta Test)- 임직원들을 대상으로 사내 테스트 2. CDN (Content Delivery Network)- 지리적으로 분산된 서버들을 연결한 네트워크 - 전 세계 CDN 서버의 분산 특성은 서버에서 캐시된 콘텐츠를 사용자에게 더 가깝게 제공함으로써 성능을 향상시킨다.(출처: 베타 플러스) 3. Launcher (런쳐) - 게임을 실행하는 실행파일을 말한다. exe- 바이너리라고 칭하기도 함. 4. OTP (One Time Password) 5. Mac Address (media access control address)- 네트워크 세그먼트의 데이터 링크 계층에서 통신을 위한 네트워크 인터페이스에 할당된 고유식별자. (출처: 위키백과)🎞 상황극??? : 맥...?..
[DirectX12] 스텐실(stencil) 거울 만들기
[DirectX12] 스텐실(stencil) 거울 만들기
◽ directX12
2024.11.07 12:00
1. 스텐실 버퍼 Stencil Buffer🔸 특징스텐실 버퍼는 후면 버퍼 및 깊이 버퍼와 해상도가 같다.스텐실 버퍼를 지정하면 그 스텐실 버퍼는 깊이 버퍼에 부착된다.픽셀 단편들이 후면 버퍼에 기록되지 못하게 하는 역할을 한다.CD3DX12_DEPTH_STENCIL_DESC구조체 채우고, D3D12_GRAPHICS_PIPELINE_STATE_DESC 설정한다.   2. 스텐실 판정 스텐실 버퍼를 이용하면 장면이 후면 버퍼의 특정 영역에만 렌더링되지 않게 만들수 있다. 스텐실을 적용하는 경우, 주어진 한 픽셀이 후면 버퍼에 기록되는지 아닌지는 스텐실 판정의 결과에 따라 결정된다. 스텐실 판정은 픽셀이 래스터화되는 과정에서, 즉 출력 병합기 단계에서 일어난다. 픽셀을 허용 : 후면 버퍼에 그리겠다. 픽셀..
[DirectX12] 섀도우 매핑 (shadow mapping), 섀도우 알고리즘 상세 정리
[DirectX12] 섀도우 매핑 (shadow mapping), 섀도우 알고리즘 상세 정리
◽ directX12
2024.12.18 17:40
1. 장면 깊이 렌더링 광원의 시점에서 본 장면의 깊이를 렌더링하는 과정이 있다. 이는 텍스처 대상 렌더링 ( render - to - texture )의 일종이며, 광원의 시점에서 본 장면의 깊이 값들을 깊이 버퍼에 기록하는 것을 뜻한다. 그림자 매핑 알고리즘에는 두 번의 렌더링 패스가 필요하다. 광원의 시점에서 본 장면 깊이를 그림자 맵에 렌더링플레이어 카메라에서 본 장면을 후면 버퍼에 렌더링  2. 직교 투영/정사영 (Orthographic_Projection)그림자 매핑에서 평행 광이 만들어 내는 그림자를 본뜰때 직교 투영이 필요하다.  (2.1). 직교 투영 행렬 구하기 (orthogonal_projection_matrix) 벡터를 특정 벡터 공간 또는 부분 공간에 직교적으로 투영할 떄 사용하는..
[C++/코드 추천]상황에 따라 여러 UI를 변경해야 할 때, 어떻게 설계해야 할까?
[C++/코드 추천]상황에 따라 여러 UI를 변경해야 할 때, 어떻게 설계해야 할까?
◽ C, C++, C#
2026.10.17 17:33
상황에 따라 여러 UI를 변경해야 할 때, 어떻게 설계해야 할까?게임 클라이언트를 개발하다 보면 특정 상황에서 여러 UI의 상태를 한꺼번에 변경해야 할 때가 있다.예를 들어 A 서버로 이동한 뒤 B 상황이 시작되었다고 가정해 보자.B 상황에서는 다음과 같은 변경이 필요할 수 있다.인벤토리의 특정 아이템 슬롯 비활성화미니맵의 특정 버튼 숨김채팅 입력창 비활성화특정 체크박스의 체크 상태 변경프로그레스바 표시일부 아이콘 이미지 변경이때 B 상황을 관리하는 클래스가 UI를 어떤 방식으로 변경해야 할까?처음 생각해 볼 수 있는 방법은 크게 세 가지다.각 Dialog에 B 상황 전용 함수를 만든다.B 상황 클래스가 각 Dialog와 Control에 직접 접근한다.변경할 Control 정보를 목록으로 만들어 공통 처..
[일상/사진] 수원 화성 유기견 보호소 봉사활동 후기
[일상/사진] 수원 화성 유기견 보호소 봉사활동 후기
◽ 일상&사진
2025.01.28 19:15
경기도 수원 화성시에 있는 유기견 보호소 봉사활동을 다녀왔다. 너무 오랜만에 간 봉사활동…. 다시 종종 다녀야겠다.봉사활동 중 유기견 봉사는 내가 아이들에게 도움을 주고, 나도 아이들에게 마음의 위로를 받는 활동이여서 좋아한다.여기는 강아지 약 90마리, 고양이 약 30마리 정도가 있었다. 이번에 또 2마리를 누군가 보호소에 두고 갔다고 한다. 한 아이의 삶을 책임지지 못할 거면 시작조차 하면 안된다. 에휴 .. 1. 아이들 밥그릇 물그릇 설거지 후 다시 배치 밥그릇 물그릇마다 이름표가 있어서 이름 찾아서 다시 배치해주고 밥과 물을 채워주면 끝청소하는 동안에는 애들 마당에서 놀도록 모두 풀어줬다. 2. 뒷견사, 앞견사 청소 담당이 아니였다. 설거지 하는동안 마당에 멍멍이 풀어두고 청소하는..
[DirectX12] 조명 연산을 위한 법선 벡터, 법선 벡터의 변환
[DirectX12] 조명 연산을 위한 법선 벡터, 법선 벡터의 변환
◽ directX12
2023.12.14 13:54
물체의 입체감과 부피감을 표현하기 위해 조명(Lighting)과 음영(Shadering)이 중요하다. 일반적으로 조형 모형이 정확할 수록 그 계산의 비용은 크고 영화와 같은 미리 렌더링 해두어도 되는 장면은 게임같은 실시간 렌더링을 해야하는 장면보다 비용이 더 높다. 재질(material)은 빛이 물체의 표면과 상호작용하는 방식을 결정하는 속성들의 집합이라고 할 수 있다. 흡수하는 빛의 색, 표면 아래 재질의 굴절률, 표면의 매끄러운 정도, 투명도 등 .. 광원은 다양한 빛의 색을 낼 수 있고 여러가지 세기(intensity)로 방출한다. 광원에서 나온 빛이 물체와 충돌하면, 그 빛의 일부는 흡수되고 일부는 반사된다. 대부분 게임과 같은 실시간 응용 프로그램이 사용하는 조형 모형은 국소 조명 모형(loc..
1분 자기소개 (실제로 면접 때 했던...)
1분 자기소개 (실제로 면접 때 했던...)
◽ 취업&이직
2021.02.22 00:56
1분 자기소개가 얼마나 중요하신지 다들 알거라고 생각합니다. 면접관님이 노트북에 적힌 자기소개서를 보면서 듣다가 얼굴을 쳐다 보느냐 안보느냐가 큰 싸인인거 같습니다. 가장 중요한 것은 중복된 말을 하지않고 간결하며 자기가 이 업무를 위해 남긴 작은 업적을 나열하는 것이 제일 좋지 않을까 생각합니다. 그리고 큰 소리로 면접관님을 쳐다보고 ... 당돌하게 !!저는 실제로 사용했던 1분 자기소개를 공개하려고 합니다. 이건 참고만 해주세요!!안녕하세요. 클라이언트 직무에 지원한 XXX입니다. 저는 게임 프로그래밍에 관심이 생겨 디자인학과에서 게임공학으로 편입 후 게임을 제작한 경험이 총 4번 있습니다. 이 중 마지막 게임은 학교의 산업대전에서 우수작으로 선정됨으로서 완성도를 확인한 작품이기도 합니다. 3년간 게..
[C++/ 코드 추천] 클래스 멤버 선언 순환문제 (전방선언의 한계)
[C++/ 코드 추천] 클래스 멤버 선언 순환문제 (전방선언의 한계)
◽ C, C++, C#
2026.10.17 17:35
클래스 멤버 선언 순환문제 #includeusing namespace std; class DataSecond;class DataFirst {private : DataSecond m_DataSecond;};class DataSecond{};1. 상황 class DataSecond는 Class DataFirst를 상속하는데, Class DataFirst가 다시 Class DataSecond 객체를 멤버로 가지고 있다. 2. 문제 Class DataSecond가 생기기도 전에 객체를 멤버를 가지면 Class DataFirst는 객체의 크기를 결정 할 수가 없다. (객체를 생성하려면 컴파일러는 해당 클래스의 정확한 크기(sizeof)를 알아야 한다.) 전방 선언만으로는 크기를 알 수 없기 때문에 오류가 난다..
[C++] GetTickCount()의 오버플로와 원인과 해결
[C++] GetTickCount()의 오버플로와 원인과 해결
◽ 에러 해결 메모
2026.10.17 17:32
1. 개요게임 세상 속에서는 아이템의 유효기간이나 유저 로그인 시간, 이펙트 발동 시간, 스킬 지속 시간 등 많은 시간들이 존재한다. 이러한 시간을 계산을 할 때 클라이언트(유저) 시간과 게임 안에서의 시간(서버시간) 등의 차이로 남은 시간을 계산한다. 이때 Windows 환경에서 흔히 사용하는 함수 중 하나가 GetTickCount() [ 컴퓨터 부팅 시간 ]이다.하지만 GetTickCount()는 최대 49.7일마다 반환값이 0으로 순환한다는 한계가 있다.과거에는 자주 컴퓨터를 껐다 켰지만 요즘에는 컴퓨터 화면만 절전해 두고 오래 컴을 키는 경우가 많아진다. 그럴 때 DWORD 자료형 리턴값을 가지고 있는 GetTickCount를 사용하면 시간 계산이 잘 못 될 수가 있다. 2. GetTickCou..
최신글
[C++/ 코드 추천] 클래스 멤버 선언 순환문제 (전방선언의 한계)
◽ C, C++, C#2026.10.17 17:35[C++/ 코드 추천] 클래스 멤버 선언 순환문제 (전방선언의 한계)

클래스 멤버 선언 순환문제 #includeusing namespace std; class DataSecond;class DataFirst {private : DataSecond m_DataSecond;};class DataSecond{};1. 상황 class DataSecond는 Class DataFirst를 상속하는데, Class DataFirst가 다시 Class DataSecond 객체를 멤버로 가지고 있다. 2. 문제 Class DataSecond가 생기기도 전에 객체를 멤버를 가지면 Class DataFirst는 객체의 크기를 결정 할 수가 없다. (객체를 생성하려면 컴파일러는 해당 클래스의 정확한 크기(sizeof)를 알아야 한다.) 전방 선언만으로는 크기를 알 수 없기 때문에 오류가 난다..

[C++/코드 추천]상황에 따라 여러 UI를 변경해야 할 때, 어떻게 설계해야 할까?
◽ C, C++, C#2026.10.17 17:33[C++/코드 추천]상황에 따라 여러 UI를 변경해야 할 때, 어떻게 설계해야 할까?

상황에 따라 여러 UI를 변경해야 할 때, 어떻게 설계해야 할까?게임 클라이언트를 개발하다 보면 특정 상황에서 여러 UI의 상태를 한꺼번에 변경해야 할 때가 있다.예를 들어 A 서버로 이동한 뒤 B 상황이 시작되었다고 가정해 보자.B 상황에서는 다음과 같은 변경이 필요할 수 있다.인벤토리의 특정 아이템 슬롯 비활성화미니맵의 특정 버튼 숨김채팅 입력창 비활성화특정 체크박스의 체크 상태 변경프로그레스바 표시일부 아이콘 이미지 변경이때 B 상황을 관리하는 클래스가 UI를 어떤 방식으로 변경해야 할까?처음 생각해 볼 수 있는 방법은 크게 세 가지다.각 Dialog에 B 상황 전용 함수를 만든다.B 상황 클래스가 각 Dialog와 Control에 직접 접근한다.변경할 Control 정보를 목록으로 만들어 공통 처..

[C++/코드 추천] 가변 결과 수를 받을 때 vector vs 동적할당 vs array
◽ C, C++, C#2026.10.17 17:33[C++/코드 추천] 가변 결과 수를 받을 때 vector vs 동적할당 vs array

1. 상황계속해서 정보의 개수가 변하는 상황이 있다. (ex. 참가자 수, 모임 수 등) 정보의 개수만큼 유저의 정보를 받아서 사용해야 하는 상황이다. 동적할당이 좋을까? 배열 또는 벡터가 좋을까? 2. 추천 (ex. 참가자, 모임 수)처럼 달라진다면 std::vector로 실제 결과 수만큼 보관하는 방식을 추천한다. 2 - 1. 서버에서 준 정보를 그대로 사용할 때 (results가 원본 포인터 일 때,)※ assign은 이전에 있었던 원소가 있다면 모두 삭제하고, 인자로 받은 새로운 내용을 집어넣는다. void ServerDataAck(const SData* results, size_t count){ SDatas.assign(results, results + count);} 2-2. 하나씩 넣는..

[C++] std::sort invalid comparator 오류 원인과 해결
◽ 에러 해결 메모2026.10.17 17:32[C++] std::sort invalid comparator 오류 원인과 해결

std::sort(vec.begin(), vec.end(), [](const auto& a, const auto& b) { return a.Value() >= b.Value(); }); struct Compare{ bool operator()(const Item& left, const Item& right) const { return left.Value() >= right.Value(); }};sort(temp.begin(), temp.end(), Compare{}); 이 두 코드는 exception error를 뱉는다.위 두 코드의 문제점은 무엇일까? 1. _STL_VERIFY 에서 에러 분석Visual Studio의 MSVC STL내부에 있는..

[C++] GetTickCount()의 오버플로와 원인과 해결
◽ 에러 해결 메모2026.10.17 17:32[C++] GetTickCount()의 오버플로와 원인과 해결

1. 개요게임 세상 속에서는 아이템의 유효기간이나 유저 로그인 시간, 이펙트 발동 시간, 스킬 지속 시간 등 많은 시간들이 존재한다. 이러한 시간을 계산을 할 때 클라이언트(유저) 시간과 게임 안에서의 시간(서버시간) 등의 차이로 남은 시간을 계산한다. 이때 Windows 환경에서 흔히 사용하는 함수 중 하나가 GetTickCount() [ 컴퓨터 부팅 시간 ]이다.하지만 GetTickCount()는 최대 49.7일마다 반환값이 0으로 순환한다는 한계가 있다.과거에는 자주 컴퓨터를 껐다 켰지만 요즘에는 컴퓨터 화면만 절전해 두고 오래 컴을 키는 경우가 많아진다. 그럴 때 DWORD 자료형 리턴값을 가지고 있는 GetTickCount를 사용하면 시간 계산이 잘 못 될 수가 있다. 2. GetTickCou..

[Perforce/P4V] workspace에 파일 받지 않아도 대용량 파일 지우는 방법 (2012 이전 버전 / 2012 이후 버전)
◽ 툴(tool)2026.08.03 15:51[Perforce/P4V] workspace에 파일 받지 않아도 대용량 파일 지우는 방법 (2012 이전 버전 / 2012 이후 버전)

아주 오래된 Perforce를 쓰는 사람들(2012년 전 퍼포스)... workspace에 파일 받지 않아도 대용량 파일 지우는 방법 공유 일단 우리 회사 퍼포스는 아주 오래된 구석기시대의 퍼포스를 사용한다. 구석기라고 말하기도 그렇고... 빙하기 정도? 퍼포스 모든 커밋이 중앙서버(Depot)로 되어 있다. 퍼포스의 가장 큰 장점 중 하나가 빅데이터, 바이너리 파일들을 빠르게 처리할 수 있다. 때문에 큰 프로젝트를 하는 곳에서 리소스용으로 가지고 있는 경우가 많다. 해본 사람은 알겠지만 게임회사에서 게임 리소스는 아주아주 대용량이다. 받는데 얼마나 오래 걸리겠어 ~ 하지만 한 사람이 받으면 중앙서버를 사용하기 때문에 다른 사람의 접근이 아주 느려진다. 장난 빼고 모든 팀원이 받는다고 하면 하루 종일 걸..

[c++20] requires
◽ C, C++, C#2026.07.29 11:48[c++20] requires

concept의 requires템플릿 인자(Template parameter)에 특정 조건(제약 조건)을 걸 때 사용하는 문법입니다. 예를 들어 아래 코드는 T타입이 FInv_ItemFragment를 상속받은 타입이어야만 함수 사용이 가능하도록 제한합니다. template requires std::derived_from const T* GetFragmentOfTypeWithTag(const FGameplayTag& FragmentTag) const ;이렇게 requries의 특정 조건(제약조건)이 되는 derived_from은 C++20에 추가된 concept입니다. derived_fromConcept란 "이 타입이 특정 조건을 만족하는가?"를 컴파일 타임에 검사하는 기능입니다. 그래서 concept 정..

◽ 언리얼(unreal)2026.07.29 11:48[Unreal / C++] DELEGATE

프로그래밍 용어인 델리게이트는 넓은 의미로 본다면 특정 객체가 해야 할 로직을 다른 객체가 대신 처리할 수 있도록 만드는 보편적인 설계의 개념으로 의미한다.언리얼 엔진의 델리게이트는 A객체가 B객체에 작업 명령을 내릴 때 B 객체에 자신을 등록하고 B의 작업이 끝나면 이때 A에게 알려주는 방식을 의미한다 .A가 B가 요구하는 형식으로 멤버 함수를 만들면 이를 B에 등록할 수 있고, B가 특정 상황이 될 때 B는 미리 등록해둔 A의 멤버 함수를 호출해주는 방식으로 동작한다. 매크로 (MACRO)Blueprint바인딩 개수반환값특징DECLARE_DELEGATE❌1개 ⭕가장 빠름DECLARE_MULTICAST_DELEGATE❌여러 개 ❌호출 순서 보장 안됨.DECLARE_DYNAMIC_DELEGATE⭕1개 ..

◽ 언리얼(unreal)2026.07.29 11:47[Unreal / C++] TObjectPtr, TSubclassOf, TInstancedStruct, 다양한 UObject 포인터..

📒 1. TObjectPtr (UE5) " 이미 만들어진 객체를 가리키는 UObject 포인터 "UE5 : TObjectPtr Item;UE4 : UInv_InventoryItem* Item; 이미 생성된 UObject를 가리키는 포인터 UE5에서 권장하는 UObject 포인터사용법은 UObject*와 거의 동일하다.GC가 객체를 추적하기 쉽다.에디터에서 참조 관리가 향상된다.지역 변수나 함수 인자는 Raw Pointer(UE4 버전)를 많이 쓴다. 📒 2. TSubclassOf " 앞으로 만들 클래스 " TSubclassOf WeaponClass;특정 클래스의 자식 클래스만 담을 수 있는 클래스 타입실제 객체가 아니라 클래스(설계도)를 저장한다SpawnActor(), NewObject() 에서 많..

시력 : -9.75D, -9.12D 초고도근시,난시 렌즈삽입술 수술 후 다음 날 바로 출근한 직장인 / 1주일 간 후기, 가격 공개 (병원 : <서울 밝은 세상 안과> )
◽ 일상&사진2026.07.14 06:58시력 : -9.75D, -9.12D 초고도근시,난시 렌즈삽입술 수술 후 다음 날 바로 출근한 직장인 / 1주일 간 후기, 가격 공개 (병원 : <서울 밝은 세상 안과> )

공간을 일 그러 뜨리는 능력이 있던 개찐따 안경 30년 만에 벗어내다. ✅ 서울|부산 밝은 세상안과를 선택한 이유압도적인 수술경험압도적인 리뷰 수 (네이버 리뷰 1만 건 넘고, 구글 리뷰도 5000건이 넘는다. 압도적이다..)GPT가 추천해 준 병원 중 하나오래된 병원 (나랑 한 살 밖에 차이 안남..!)전문의 의사 많음 장비 많음 병원 아주 큼회사에서 제휴업체 안과가 있어 한 100만 원 정도는 싸게 수술할 수 있지만 굳이...? 제휴업체의 의사 선생님을 모르지만, 동네 병원에서 수술은 뭔가 무섭다.. 수술경험이 많은 병원에서 하는게 더 안심된다. https://www.iloveeye.com/index.do?utm_source=naver_pc&utm_medium=bs_seoul&utm_camp..

[Unreal / C++] AAA급 UI 만들기 ControlTab - IInputProcessor 이용하여 키 변경하기 + AddTicker 사용하는 이유
◽ 언리얼(unreal)2026.03.16 23:11[Unreal / C++] AAA급 UI 만들기 ControlTab - IInputProcessor 이용하여 키 변경하기 + AddTicker 사용하는 이유

Enhanced Input 키 리맵 UI 구현 흐름 정리이번 글에서는 키 변경 UI가 실제로 어떤 흐름으로 동작하는지 정리해보겠습니다.예시는 UWidget_ListEntry_KeyRemap, UWidget_KeyRemapScreen, 그리고 IInputProcessor를 사용한 구조입니다.전체 흐름은 아래처럼 보면 이해하기 쉽습니다.리스트 엔트리에서 변경 / 리셋 버튼 클릭키 입력을 받을 전용 화면 표시화면 활성화 시 Input Preprocessor 등록사용자 입력을 먼저 감지유효한 입력이면 실제 키 매핑 변경설정 저장 후 화면 종료비활성화 시점에 Input Preprocessor 해제즉, 단순히 버튼을 눌러 키를 바꾸는 구조가 아니라 입력을 기다리는 전용 화면을 띄우고, 그 안에서 입력을 먼저 받아 ..

[C++] warning C4541: dynamic_cast와 /GR- 문제 원인과 해결
◽ 에러 해결 메모2026.03.12 11:54[C++] warning C4541: dynamic_cast와 /GR- 문제 원인과 해결

비주얼 스튜디오의 런타임 형식 정보 사용은 C++의 RTTI(Run-Time-TypeInformation)의 옵션입니다. 이 옵션은 보통 dynamic_cast나 typeid, std::type_info를 쓸 때 필요합니다.예(/GR): 실행 중에 “이 객체의 실제 타입이 뭐지?”를 확인할 수 있음dynamic_cast, typeid, std::type_info 기반 동작 사용 가능다형성 기반 코드, 상속 구조, 플러그인/프레임워크 코드에 안전타입 정보가 추가돼서 .rdata 섹션 크기가 늘어난다.(약간)아니요(/GR-): 그런 타입 정보 생성을 끔런타임 타입 판별 기능을 사실상 못 쓴다고 보면 됨성능·용량을 조금 더 아끼고 싶은 프로젝트에서, RTTI를 전혀 안 쓴다는 확신이 있을 때만 고려dynami..

반응형
image