반응형
인기글
[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)- 네트워크 세그먼트의 데이터 링크 계층에서 통신을 위한 네트워크 인터페이스에 할당된 고유식별자. (출처: 위키백과)🎞 상황극??? : 맥...?..
시력 : -9.75D, -9.12D 초고도근시,난시 렌즈삽입술 수술 후 다음 날 바로 출근한 직장인 / 1주일 간 후기, 가격 공개 (병원 : <서울 밝은 세상 안과> )
시력 : -9.75D, -9.12D 초고도근시,난시 렌즈삽입술 수술 후 다음 날 바로 출근한 직장인 / 1주일 간 후기, 가격 공개 (병원 : <서울 밝은 세상 안과> )
◽ 일상&사진
2026.07.14 06:58
공간을 일 그러 뜨리는 능력이 있던 개찐따 안경 30년 만에 벗어내다. ✅ 서울|부산 밝은 세상안과를 선택한 이유압도적인 수술경험압도적인 리뷰 수 (네이버 리뷰 1만 건 넘고, 구글 리뷰도 5000건이 넘는다. 압도적이다..)GPT가 추천해 준 병원 중 하나오래된 병원 (나랑 한 살 밖에 차이 안남..!)전문의 의사 많음 장비 많음 병원 아주 큼회사에서 제휴업체 안과가 있어 한 100만 원 정도는 싸게 수술할 수 있지만 굳이...? 제휴업체의 의사 선생님을 모르지만, 동네 병원에서 수술은 뭔가 무섭다.. 수술경험이 많은 병원에서 하는게 더 안심된다. https://www.iloveeye.com/index.do?utm_source=naver_pc&utm_medium=bs_seoul&utm_camp..
[일상/사진] 수원 화성 유기견 보호소 봉사활동 후기
[일상/사진] 수원 화성 유기견 보호소 봉사활동 후기
◽ 일상&사진
2025.01.28 19:15
경기도 수원 화성시에 있는 유기견 보호소 봉사활동을 다녀왔다. 너무 오랜만에 간 봉사활동…. 다시 종종 다녀야겠다.봉사활동 중 유기견 봉사는 내가 아이들에게 도움을 주고, 나도 아이들에게 마음의 위로를 받는 활동이여서 좋아한다.여기는 강아지 약 90마리, 고양이 약 30마리 정도가 있었다. 이번에 또 2마리를 누군가 보호소에 두고 갔다고 한다. 한 아이의 삶을 책임지지 못할 거면 시작조차 하면 안된다. 에휴 .. 1. 아이들 밥그릇 물그릇 설거지 후 다시 배치 밥그릇 물그릇마다 이름표가 있어서 이름 찾아서 다시 배치해주고 밥과 물을 채워주면 끝청소하는 동안에는 애들 마당에서 놀도록 모두 풀어줬다. 2. 뒷견사, 앞견사 청소 담당이 아니였다. 설거지 하는동안 마당에 멍멍이 풀어두고 청소하는..
[unreal] 애니메이션 리타게팅
[unreal] 애니메이션 리타게팅
◽ 언리얼(unreal)
2025.07.04 23:00
1. 정의IK 리타게팅(Inverse Kinematics Retargeting)은 언리얼 엔진에서 제공하는 애니메이션 변환 기능으로, 서로 다른 스켈레탈 메시 간에 애니메이션 데이터를 자연스럽게 이전할 수 있도록 지원한다. IK(역운동학) 알고리즘을 활용하여 손, 발 등 주요 신체 부위의 위치 정밀도를 유지한다. 2. 주요 특징본 구조 차이 대응: 본 개수, 명칭, 방향 등이 상이한 캐릭터 간에도 애니메이션 재사용이 가능하다. 정확한 컨택 포인트 보정: 손, 발 등 주요 부위가 바닥 또는 오브젝트에 정확히 닿는 동작을 실시간으로 보정한다. 엔진 내 통합 워크플로우: 외부 툴 없이 언리얼 엔진 내에서 직접 세팅 및 적용이 가능하다. 3. 사용 절차소스 및 타깃 스켈레탈 메시 준비 각 메시에 IK Rig 에..
[Perforce/P4V] warning : Can't clobber writable file ....
[Perforce/P4V] warning : Can't clobber writable file ....
◽ 툴(tool)
2025.05.29 18:50
"⚠️warning : Can't clobber writable file"clobber : "덮어쓰다" , '강제로 교체하다' 기본적으로 Perforce에서 받은 작업 공간의 파일을 수정하기 위해서는 [Check out...] 과정을 거쳐야 한다. 이 과정 [Check out...]에서 읽기 모드이었던 작업 파일이 쓰기 모드로 바뀌게 되고 수정이 가능하게 된다.Perforce는 [Check out...] 과정을 생략하고 직접 읽기모드를 변경하거나 파일을 덮어 씌운 파일이 존재할 때 업데이트를 받게 되면 사용자가 작업 중인 내용을 실수로 잃는 것을 방지하기 위해 덮어쓰기를 하지 않고 warning을 뱉어낸다. 근데 만약 .. 덮어쓰고 싶다? 할 때 아래 방법을 따라 하자! P4V -> Connectio..
[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..
[Perforce/P4V] workspace에 파일 받지 않아도 대용량 파일 지우는 방법 (2012 이전 버전 / 2012 이후 버전)
[Perforce/P4V] workspace에 파일 받지 않아도 대용량 파일 지우는 방법 (2012 이전 버전 / 2012 이후 버전)
◽ 툴(tool)
2026.08.03 15:51
아주 오래된 Perforce를 쓰는 사람들(2012년 전 퍼포스)... workspace에 파일 받지 않아도 대용량 파일 지우는 방법 공유 일단 우리 회사 퍼포스는 아주 오래된 구석기시대의 퍼포스를 사용한다. 구석기라고 말하기도 그렇고... 빙하기 정도? 퍼포스 모든 커밋이 중앙서버(Depot)로 되어 있다. 퍼포스의 가장 큰 장점 중 하나가 빅데이터, 바이너리 파일들을 빠르게 처리할 수 있다. 때문에 큰 프로젝트를 하는 곳에서 리소스용으로 가지고 있는 경우가 많다. 해본 사람은 알겠지만 게임회사에서 게임 리소스는 아주아주 대용량이다. 받는데 얼마나 오래 걸리겠어 ~ 하지만 한 사람이 받으면 중앙서버를 사용하기 때문에 다른 사람의 접근이 아주 느려진다. 장난 빼고 모든 팀원이 받는다고 하면 하루 종일 걸..
[Unreal] Behavior Tree 이해하면서 몬스터 AI 만들기
[Unreal] Behavior Tree 이해하면서 몬스터 AI 만들기
◽ 언리얼(unreal)
2025.12.02 22:34
동영상1 1. 블랙보드 세팅에 대하여... 블랙보드(Blackboard) 에셋은 AI의 두뇌로 생각할 수 있으며, 비헤이비어 트리가 결정 내리는 데 사용하는 키(Key) 값을 저장한다. 블랙보드는 필요에 따라 c++ 또는 블루프린트 안에서 Set, Get 할 수 있다. 여기서 최상단에 SelfActor값과 TargetActor값의 거리를 service 하는데 이 두 값을 어디서 세팅하는지 알아보자. 1.1. SelfActor블랙보드 처음 생성하면 SelfActor가 나온다. 이 SelfActor는 그냥 현재 이 블랙보드를 사용하는 주체라고 생각하면 된다. C++ AAIController 클래스 내부에서 GetPawn()을 SelfActor에 세팅해주고 있다.1.2. TargetActorTargetAct..
최신글
[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