REPLAY
CSV 고스트 리플레이
CSV 파싱, 위치·회전 보간, 가까운 기록 지점으로 이동합니다.
ENGINEERING LAB / 2026
시간, 좌표, 행동을 직접 바꿔 보세요.
아래 데모와 C# 코드는 포트폴리오용으로 새로 작성한 설명 자료입니다.
01 / TIME
실시간 훈련 로직을 다시 실행하지 않고, 기록한 위치를 시간축에서 읽습니다. 두 기록 사이에서는 위치를 보간합니다.
실제 프로젝트의 문제 해결 ↗실제 프로젝트 영상이 아닌 원리 설명용 2D 데모입니다.
02 / SPACE
세 관측 방향 중 장비의 회전 각도와 가장 가까운 방향을 선택합니다. 전환 임계값은 경계에서 선택이 반복되는 현상을 줄이기 위한 예제 설계입니다.
센서 선택 예제와 적용 범위 ↗입력 방향은 예시입니다. 캘리브레이션과 실제 자세 결합은 포함하지 않습니다.
03 / BEHAVIOR
시야 안에 있어도 장애물에 가려지면 적을 직접 탐지하지 않습니다. 거리·각도·가림을 구분하면 행동의 이유를 설명하기 쉬워집니다.
NPC 판단 코드 살펴보기 ↗시야각 90° 기준. 가림은 체크박스로 주입하며 실제 Raycast를 수행하지 않습니다.
VALIDATION
Unity 6000.0.23f1 컴파일 및 Editor 검증 56개 통과. 실제 장비 연동과 제품 통합은 검증 범위에 포함하지 않습니다.
기존 제품의 완성도나 성능을 증명하는 테스트가 아닙니다. 예제에는 실제 훈련 데이터, 장비 SDK, 비공개 프로토콜이 포함되어 있지 않습니다.
Editor 검증 항목 전체 보기 ↗시작, 시간 진행, 일시정지, 탐색, 역방향, 초기화, 반복 갱신을 Unity 재생 흐름에서 확인했습니다. 그래픽 없는 실행 검사이며, 화면 출력 품질·장비 연동 검증은 포함하지 않습니다.
Play Mode 검증 내역 ↗OPEN IN UNITY
예제 16개, 리플레이 실행 장면, 사용 안내와 검증 기록을 한 묶음으로 제공합니다.

2026년 포트폴리오용 재구성 코드 · 합성 데이터 · Built-in 렌더 파이프라인
C# SAMPLE LIBRARY
모두 2026년 포트폴리오용 재구성 코드입니다. 실제 업무 당시 소스로 표현하지 않습니다.
REPLAY
CSV 파싱, 위치·회전 보간, 가까운 기록 지점으로 이동합니다.
TRACKING
관측 방향과 전환 임계값을 사용해 입력을 선택하고 자세를 보간합니다.
REPLAY
위치·회전은 보간하고, 활성 여부와 애니메이션 상태는 기록 시점에 맞춰 선택합니다.
ReplayFrame 배열에 증가하는 시간을 넣고 Sample(frames, time)을 호출합니다. time을 줄이면 역방향 탐색이 됩니다.
단일 객체의 메모리 내 샘플입니다. 파일 입출력, 다중 객체 수명, 음성 동기화는 포함하지 않습니다.
TRACKING
센서 기준의 관절 자세를 로컬 좌표로 바꾼 뒤 아바타 기준으로 옮깁니다.
보정된 sensorRoot, sensorJoint, avatarRoot Pose를 Retarget에 전달합니다.
축·단위·스케일은 미리 일치해야 합니다. 장비 캘리브레이션이나 스켈레톤 리깅 전체를 구현하지 않습니다.
DATA
정해진 개수의 샘플을 보관한 뒤 입력 순서대로 출력합니다.
new FrameDelayBuffer
프레임 수 기준 지연입니다. 가변 네트워크 지연 보정이나 TCP 전송 계층은 포함하지 않습니다.
GAMEPLAY
경로 진행도 차이를 사용해 앞선 NPC는 늦추고 뒤처진 NPC는 빠르게 합니다.
동일한 경로의 playerProgress와 npcProgress를 Speed에 전달합니다.
폐곡선 경로의 랩 처리는 호출자가 해야 합니다. 물리 이동·경로 추종은 포함하지 않습니다.
GAMEPLAY
거리·시야각·가림 여부로 탐지를 판단하고, 아군 신호와 기억 시간으로 상태를 선택합니다.
InView에 월드 위치·방향과 외부 raycast 결과를 전달하고 Decide로 상태를 선택합니다.
Raycast, 실제 전투, 경로 이동, 동료 통신은 별도 계층입니다.
GAMEPLAY
잡기·작동·재장전 입력을 순서대로 확인하는 작은 상태 모델입니다.
장비 입력 어댑터에서 Accept(TutorialStep)를 호출합니다.
특정 XR SDK 입력 바인딩, 총기 물리, 실제 애니메이션은 포함하지 않습니다.
DATA
플레이어별 최고 점수를 유지하고, 동점은 이름 순으로 정렬합니다.
Submit(player, score) 후 Top(count)로 결과를 받습니다. 스테이지별로 별도 인스턴스를 만듭니다.
메모리 내 모델입니다. 파일 저장·복원과 온라인 랭킹은 구현하지 않습니다.
GAMEPLAY
이동해야 하지만 위치 변화가 없는 시간을 누적해 복구 필요 여부를 반환합니다.
매 프레임 Tick을 호출하고 true일 때 주변 공간을 검사한 뒤 복구 동작을 수행합니다.
안전한 위치 탐색이나 실제 이동은 호출자가 담당합니다. 벽을 통과시키는 코드는 없습니다.
TRACKING
double 좌표에서 공통 원점을 뺀 뒤 Unity의 float 좌표로 변환합니다.
이미 같은 직교좌표계·단위로 변환된 WorldPoint와 origin을 사용합니다.
위경도 투영, ECEF 변환, 지구 곡률 계산을 대신하지 않습니다.
NETWORK
동일한 참가자 목록에서 가장 작은 ID를 선택하는 결정적 예시입니다.
SelectCoordinator에 현재 참가자 ID 목록을 전달합니다.
새로 작성한 일반 예제이며 당시 프로토콜이 아닙니다. 합의·장애 복구·분할 네트워크는 해결하지 않습니다.
VISUALIZATION
가상의 카메라와 점을 사용해 화면 UV와 시야 내부 여부를 계산합니다.
카메라 로컬 좌표, 수직 FOV, 화면 종횡비를 Project에 전달합니다.
공개 수학을 이용한 독립 예제입니다. 실제 항공 장비·프로토콜·센서 모델을 재현하지 않습니다.
TOOLS
가상의 Connect·Inspect·Complete 단계로 순차 검증 원리를 설명합니다.
임의의 단계 이름으로 생성하고 Confirm(name, result)을 호출합니다.
실제 발사 절차나 제어 코드와 무관한 교육용 예제입니다. 실패 시 현재 단계를 유지합니다.
TOOLS
합성 장비 ID와 마지막 수신 시간으로 온라인 상태를 판단합니다.
단조 증가하는 초 단위 시간을 Heartbeat와 IsOnline에 전달합니다.
실제 장비 통신·개인정보·GPS 데이터는 사용하지 않는 일반 상태 모델입니다.
GAMEPLAY
시작점·제어점·도착점으로 2차 베지어 경로를 계산합니다.
Sample에 세 위치와 0~1 진행도를 전달해 표시 위치를 받습니다.
명중 판정과 점수는 별도입니다. 이동 표적을 따라갈지 고정할지는 호출자 정책입니다.