분류 전체보기 60

[내배캠 TIL 260430] C++ 숫자 짝꿍 (빈도수 배열 최적화)

1. 문제 핵심두 문자열 X, Y에서 공통 숫자로 만들 수 있는 가장 큰 수길이 최대 3,000,000 → 시간복잡도 중요2. 기존 방식 문제sort + 이중 반복문정렬: O(N log N)탐색: O(N^2) (최악) 중복 비교 많아서 시간 초과 위험3. 해결 방법핵심 아이디어숫자는 0~9 → 종류가 고정됨배열로 카운팅시간복잡도O(N) 정렬 없음이중 반복 없음4. 코드 string solution(string X, string Y) { string answer = ""; int countX[10] = {0}; int countY[10] = {0}; for (char c : X) countX[c - '0']++; for (char c : Y) countY[c - '0']++; ..

내배캠 TIL 2026.04.30

[내배캠 TIL 260428] Unreal Grid 기반 Fog of War

1. 문제 상황기존 방식 (Radial)원형으로 시야 표시실제 타일 기반 로직이랑 안 맞음해결 : Grid 기준으로 Fog를 직접 그림2. 핵심 흐름World → Grid → UV 유닛 위치 → 타일 좌표타일 → RenderTarget 좌표로 변환그 위치에 Fog 제거3. 성능 개선기존타일마다 Draw 호출Draw Call 과다 → 느림개선Canvas 사용한 프레임에 한 번만 그림결론:N번 그리기 → 1번으로 줄임4. 핵심 코드UKismetRenderingLibrary::BeginDrawCanvasToRenderTarget(...);Canvas->DrawTile(...); // Clearfor (Vision){ for (Tiles) { Canvas->K2_DrawMaterial(...

카테고리 없음 2026.04.28

[내배캠 TIL 260417] Unreal RTS 영웅 스킬 구조 설계 (다형성 + 타이머 기반 판정)

1. 유닛 & 컨트롤러 구조 (다형성 설계)핵심은 컨트롤러는 유닛의 "종류"를 몰라도 된다는 것.구조부모 클래스: ATWHeroUnitBase자식 클래스: 투사체형 / 범위형 등설계 방식 class ATWHeroUnitBase : public AActor{public: virtual void UseSkill(FVector TargetLocation); virtual bool IsIndicatorRequired() const;};ATWHeroUnitBase* Hero = Cast(SelectedUnit);Hero->UseSkill(ClickLocation);포인트컨트롤러에 분기 없음 (if/switch 제거)새로운 영웅 추가 → 컨트롤러 수정 없음완전한 다형성 구조신호등 함수 (Indicator..

내배캠 TIL 2026.04.17

[내배캠 TIL 260415] Unreal 미니맵 카메라 프러스텀 투영 및 클릭 이동 구현

1. 개요Tiny Dominion 프로젝트에서현재 카메라가 보고 있는 영역(Frustum)을 미니맵에 실시간으로 표시하고,미니맵 클릭 시 해당 위치로 카메라를 이동시키는 기능을 구현했다.핵심은 다음 두 가지다:화면 → 월드 투영 (Deproject)월드 → 미니맵 좌표 변환 (UV 매핑)2. 카메라 프러스텀 렌더링핵심 아이디어화면의 4개 모서리를 월드로 변환해당 Ray를 지면(Z=0)과 교차시켜 실제 위치 계산월드 좌표를 미니맵 UV로 변환 후 선으로 연결구현 코드void ATWMiniMap::DrawCameraFrustum(UCanvas* Canvas, int32 Width, int32 Height){ if (!Canvas || !GetWorld()) return; APlayerControl..

내배캠 TIL 2026.04.15

TIL - Unreal Engine 미니맵 구현

1. 핵심 구조미니맵과 안개는 완전히 분리된 시스템이다.미니맵 → SceneCapture로 지형을 RT에 그림안개 → 별도의 Render Target 2장으로 관리"지형 / 현재 시야 / 탐색 기록"을 각각 따로 만들고 마지막에 머티리얼에서 합성2. 미니맵 캡처 (SceneCapture2D)핵심 포인트매 프레임 X → 타이머 기반 갱신OrthoWidth로 월드 크기 동기화Render Target에 직접 그림void ATWMiniMap::BeginPlay(){ Super::BeginPlay(); if (CaptureComp && MinimapRT) { CaptureComp->TextureTarget = MinimapRT; CaptureComp->OrthoWidth ..

내배캠 TIL 2026.04.13

[내배캠 TIL 260406] Unreal Fog of War 서버연동 정리

1. 핵심 개념Fog of War에서 네트워크의 역할은 단순하다. 서버는 "위치 정보만 동기화" 클라이언트는 "시야를 직접 그린다"렌더링을 서버에서 처리하려고 하면 비용이 폭발한다.따라서 시야 계산과 렌더링은 완전히 클라이언트 책임으로 분리한다 2. 데이터 흐름 구조서버 역할유닛 위치, 상태를 authoritative하게 관리Pawn / Actor Transform 복제 (Replication)클라이언트 역할복제된 유닛 정보 수신로컬 기준으로 시야 계산Render Target에 Fog 직접 렌더링[Server] 위치 동기화 → [Client] 로컬 유닛 필터링 → Fog 렌더링 3. 로컬 소유권 기반 필터링모든 클라이언트는 모든 유닛을 받는다.따라서 반드시 “내 유닛”만 골라내는 과정이 필요하다.APa..

내배캠 TIL 2026.04.06

[ 내배캠 TIL 260403] Unreal RenderTarget 기반 Fog of War 구현

1. FogManager.cpp (핵심 로직)안개 시스템의 중심 역할RenderTarget 초기화 + 유닛 시야를 기반으로 안개를 제거 #include "Kismet/KismetRenderingLibrary.h"#include "Kismet/KismetMaterialLibrary.h"void AFogManager::BeginPlay(){ Super::BeginPlay(); // RenderTarget 초기화 (검정 = 안개 상태) if (CurrentFogRT) UKismetRenderingLibrary::ClearRenderTarget2D(GetWorld(), CurrentFogRT, FLinearColor::Black); if (ExploredFogRT) ..

내배캠 TIL 2026.04.03

[ 내배캠 TIL 260402] Unreal Grid & Fog of War 시스템 정리

1. 데이터 구조 설계RTS에서 지형(Grid)과 시야(Fog)는 역할이 완전히 다르기 때문에 분리해서 관리하는 것이 핵심이다.핵심 포인트Grid → 물리/지형 정보Fog → 시야 정보메모리 절약을 위해 uint8 사용// GridManager.hUSTRUCT(BlueprintType)struct FGridCell { GENERATED_BODY() uint8 WalkableState; // 0: 이동불가, 1: 이동가능 uint8 TerrainType; // 0: 평지, 1: 숲, 2: 물 등 FGridCell() : WalkableState(1), TerrainType(0) {}};// FogManager.hUSTRUCT(BlueprintType)struct FFogCell {..

내배캠 TIL 2026.04.02

RTS 주요 점령 기믹 기획

전장 시스템 기획서Control Line Nexus Battle 1. 전장 구조 (Map Topology)1.1 본진 배치Player A (Blue Team): 맵 좌하단 (7시 방향)Player B (Red Team): 맵 우상단 (1시 방향)각 플레이어는 본진(Nexus)을 중심으로 유닛 생산 및 방어를 수행한다.1.2 거점 배치 (Central Control Line)맵에는 총 3개의 주요 거점이 존재하며,좌상단(11시)에서 우하단(5시)을 잇는 대각선 축을 따라 배치된다.거점위치전략적 특징거점 1 (North-West)좌상단 (11시)Player B에게 유리거점 2 (Center)중앙핵심 교전 지역거점 3 (South-East)우하단 (5시)Player A에게 유리2. 핵심 시스템2.1 점령 메커..

카테고리 없음 2026.03.27

[ 내배캠 TIL 260325] Unreal Engine 네트워크 복제 시스템 정리

1. 액터 복제 설정 (bReplicates)역할해당 액터를 네트워크 복제 대상으로 포함할지 결정설정 위치생성자에서 설정bReplicates = true;핵심 포인트서버에서 생성된 액터가 클라이언트에도 자동으로 생성됨이 설정이 없으면 복제 자체가 시작되지 않음 2. 변수 복제 등록 (GetLifetimeReplicatedProps)역할액터 내부 변수 중 어떤 것을 복제할지 선택구현 방법#include "Net/UnrealNetwork.h"void AMyActor::GetLifetimeReplicatedProps(TArray& OutLifetimeProps) const{ Super::GetLifetimeReplicatedProps(OutLifetimeProps); DOREPLIFETIME(AMy..

내배캠 TIL 2026.03.25