게임 클라이언트와 실시간 3D 제작 도구를 개발해 온 클라이언트 프로그래머 전지훈의 경력기술서입니다. 경력별 주요 업무의 과제와 판단, 결과를 정리했습니다.
전체 이력은 이력서에서, 작업 화면과 영상, 공개 코드는 포트폴리오에서 확인할 수 있습니다. 구현 과정과 도식은 각 프로젝트 글로 연결했습니다.
경력 요약과 핵심 역량
- 3D 제작 도구 (시나몬, 2024 - 2026): Unreal Engine 5와 Rust, Bevy 기반 AI 애니메이션 제작 도구의 액션 데이터 구조, AI 결과 해석, 편집 UI와 저장 구조 설계
- 게임 클라이언트 (작두 스튜디오, 2021 - 2024): Unreal Engine 오픈월드 멀티플레이 게임의 전투, 장비, 좀비 AI와 Dedicated Server 동기화, 다수 개체 최적화, 1.0 정식 출시
- VR 소프트웨어 (클릭트, 2016 - 2018): Unity 기반 VR 클라이언트와 트래커, 모션 캡처 장치 연동, 전시와 공연 콘텐츠 개발
- 개발 환경: GitLab CI와 TeamCity 기반 빌드 자동화, Sentry 크래시 수집, 엔진 버전 이전, AI 에이전트 개발 체계 운용
- 대표 성과: Night of the Dead 1.0 정식 출시, 길고양이 이야기 2의 STOVE와 Steam 출시 전담, UE4에서 UE5로의 엔진 이전 주도, CINEVStudio의 액션 데이터 작성 구조 전환과 편집 UI 상태 관리 재구성, Shotloom의 편집 트랜잭션과 저장 구조 구현
시나몬
2024.06 - 2026.08 / 정규직 / 클라이언트 프로그래머
AI 애니메이션 제작 서비스 CineV의 3D 제작 도구 개발. Unreal Engine 5 기반 CINEVStudio의 액션 데이터, AI 결과 해석, 편집 UI와 Shot 상태 모델을 담당한 뒤, 후속 제품인 브라우저 편집기 Shotloom의 편집과 저장 구조, 생성 서비스 연동 개발
Shotloom
2026.04 - 2026.08 / Rust, Bevy, WebAssembly, WebGPU, React, TypeScript, Tauri
- 개요: 사용자별 서버 GPU 세션에 의존하던 Unreal Engine과 Pixel Streaming 경로를 대체하는 브라우저 3D 편집기. 캐릭터 동작과 카메라를 편집하고 결과를 CineV의 제작 흐름으로 연결
- 담당 범위: 캐릭터와 카메라 편집, 문서 모델, 저장과 복원, 생성 서비스 연동
편집 트랜잭션과 저장 구조
- 과제: React UI, Rust 문서 모델, Bevy 런타임으로 나뉜 구조에서 명령 거절이나 시간 초과 시 세 계층의 상태가 어긋날 위험
- 판단: 계층 간 브리지 계약에 트랜잭션 수명주기와 Undo/Redo 명령을 추가하고, 드래그 중간값 대신 사용자의 조작 단위로 변경을 확정하는 BundleEditor 경로 설계
- 수행:
- 번들 형식 스펙을 Rust 문서 모델로 구현하고, 컬렉션을 구조 공유 자료구조로 바꿔 스냅샷 복사 비용 제거
- 조작 단위 트랜잭션, 명령 거절과 시간 초과 시 롤백, Undo/Redo 런타임 구현
- 자산 등록과 편집 대상 생성을 같은 트랜잭션에 묶어 되돌리기 후 참조와 자산이 따로 남지 않도록 처리
- 브라우저 복구 화면과 진단 문구, autosave와 명시 저장의 응답 구분, 선택 상태를 문서 본문과 분리 저장
- 결과: 명령 거절과 시간 초과를 조작 단위로 롤백하는 공통 편집 경로로 전환, 로컬에서 캐릭터, 포즈 후보, 클립과 카메라 키를 저장한 뒤 다시 열어 편집 상태 복원 확인
카메라와 포즈 키프레임 전환
- 과제: 키를 프레임 번호로 식별해 시간을 옮기면 선택 대상을 잃고, 위치와 회전을 묶어 저장해 일부 축만 편집하기 어려운 키프레임 구조
- 판단: 프레임과 독립적인 키 ID와 속성별 키를 두고, 회전 횟수의 의미가 있는 카메라는 오일러 각, 관절은 쿼터니언으로 보간
- 수행:
- 키프레임 모델, 평가기, 편집 명령, 편집 UI와 저장 형식 버전 4 이전 구현
- 편집 명령에 문서 변경 버전과 트랜잭션 ID 검사를 붙여 중복 적용과 일부 키만 저장되는 상황 방지
- 스크럽 입력을 진행 중 요청 하나와 최신 대기 입력 하나로 제한
- 결과: 속성별 카메라 키를 편집, 평가, 저장하는 저작 기능으로 전환, 이전 저장 형식의 원본을 남기는 업그레이드 제공, 50회 반복 스크럽에서 점진적 지연과 메모리 증가 미재현
생성 서비스 통합
- 과제: 스토리보드의 장면 구성 입력(S2M)과 포즈 생성 서비스(Text2Pose)의 결과를 편집 가능한 장면으로 변환하고, 편집 결과를 CineV로 반환
- 판단: 브라우저 프리뷰와 CLI, 서비스가 같은 규칙으로 입력을 해석하도록 번들링과 장면 구성, 검증 정책을 공유 Rust 코드로 모으는 방향 선택
- 수행:
- S2M 입력을 장면과 자산으로 변환하는 번들 컴파일러, Text2Pose 후보의 선택과 클립 적용 구현
- CineV 진입 시 작업 ID와 입력을 검증하고, 런타임과 자산 준비 뒤 장면을 구성하며 늦게 끝난 이전 요청이 다른 장면을 바꾸지 않도록 처리
- 생성과 결과 저장을 분리해 저장 실패 시 같은 결과 재전송
- 결과: 개발 배포 환경에서 CineV 진입 시 인물 2명, 소품 4개와 카메라의 자동 구성, 영상 생성 결과 이미지의 스토리보드 반영 확인
AI 에이전트 개발 체계
- 과제: CINEVStudio 후속 개발을 빠르게 진행하면서 React UI, Rust 문서 모델, Bevy 런타임을 함께 바꾸는 기능의 범위와 완료 기준 관리
- 판단: 요구사항을 Linear 이슈, 명세, ADR(설계 결정 기록)과 테스트로 구조화하고, AI 에이전트를 개발 과정 전반에 활용하는 방식 선택
- 수행: 에이전트 작업 가드레일과 hook을 추가하고 ADR 31건 작성, 반복 절차를 2026년 5월 공개한 개인 오픈소스 Grimoire로 정리
- 결과: 여러 계층을 바꾸는 기능을 의존 작업으로 나눠 구현과 독립 검토를 분리하는 개발 절차 정착, 카메라와 포즈 키프레임 전환을 12개 의존 작업으로 진행
그 밖의 업무
- VRM 캐릭터 가져오기와 런타임 로딩, SpringBone 좌표 보정, 뷰포트 선택과 이동, 회전 기즈모 구현
- 같은 장면 스냅샷에서 WebM 영상과 첫 프레임, 마지막 프레임 PNG를 만드는 카메라 출력 구현, 실패 단계별 재시도 범위를 나눠 성공한 영상 렌더 재사용
- 토스트 기반 오류 표시와 명령 거절 진단, Text-to-Motion 결과의 번들 저장과 후보 적용
- Rust Engine CI의 캐시를 target 아카이브에서 sccache로 교체해 캐시 크기를 약 1.8GB에서 684MB로 약 62% 감소, warm CI에서 컴파일 374건 모두 캐시 적중
- Linux headless WebGPU 테스트가 준비 이벤트 이후의 오류까지 확인하도록 보완해 거짓 통과 제거
- 편집기 화면이 검게 변하는 원인을 VRM 렌더링 라이브러리의 셰이더 결함으로 추적해 bevy_vrm1에 수정 기여
CINEVStudio
2024.06 - 2026.04 / Unreal Engine 5, C++, UMG, Sequencer, MovieScene, HTTP, ONNX
- 개요: AI가 구성한 장면을 사용자가 편집하고 영상으로 출력하는 Unreal Engine 5 Sequencer(MovieScene) 기반 제작 도구
- 담당 범위: 콘텐츠팀의 액션 데이터 작성부터 AI 결과 해석, 타임라인 편집, 저장과 재생까지 잇는 클라이언트 개발
액션 데이터 작성 구조 전환
- 과제: 애니메이션 구간과 상호작용 설정을 DataTable과 Notify에 타입과 인덱스로 맞추고, 문자열 파라미터를 별도 설계 문서와 대조해야 하는 입력 구조
- 판단: 액션 정의는 DataAsset으로 분리해 필요한 요구조건만 타입별 구조체로 추가하고, 모션 구간과 이벤트 시점은 애니메이션을 보며 AnimComposite에서 편집하는 구조 선택. 조건 값의 조합에는 구조체를, 이벤트별 동작 확장에는 UObject를 사용
- 수행:
- 데이터 타입과 실행 경로 전환, 변환기 구현, 전환 절차 문서화
- 작성한 데이터를 생성 단계에서 실행용 에셋으로 모아 런타임이 애니메이션 에셋에 직접 접근하던 부분 분리
- 기존 검증 프레임워크에 액션 데이터 행 검증기와 메타액션 대비 대상 데이터 검증 추가
- 애니메이션 0프레임의 기준 본에서 액션 시작 위치 오프셋을 자동 계산
- 데이터 규칙과 전환 절차를 기획, 애니메이션, TA, QA 직군과 공유
- 결과: 제작자가 기억해 맞추던 조건 관계를 입력 구조와 검증기로 대체, 콘텐츠팀 제작 가이드에 에셋 작성 절차 반영
AI 행동 해석과 생성 모션 적용
- 과제: 외부 AI 서비스가 지정한 행동과 대상을 현재 월드에서 실행 가능한 액션으로 변환하고, 생성 모션을 타임라인 편집에 연결
- 판단: 외부 입력을 읽는 파싱과 월드 상태를 판단하는 해석 계층을 분리하고, 후보의 시작 위치 검증과 경로 점수 평가를 하나의 파이프라인으로 통합
- 수행:
- 캐릭터 자세, 소품 점유 상태와 NavMesh 경로로 후보를 검사하고 점수를 매기는 해석 계층 설계와 구현, 후보 탈락 사유와 점수 기여도 기록
- 샷 JSON 파서를 초기 상태, 카메라, 블록, 섹션 단위로 나누고 타입 검사 도입
- 캐릭터 배치 위치를 극좌표 샘플링과 근접도 점수로 고르는 위치 보정 구현
- Text-to-Motion 요청의 성별, 배치 단위 병렬 처리와 일부 실패 시 성공 결과 보존, 기존 ONNX 본 변환을 결과에 적용하고 최적화
- 생성 모션의 선택, 타임라인 적용, Undo/Redo 구현, MotionSet을 별도 파일로 압축 저장하고 원자적 커밋과 롤백 적용
- 결과: AI 결과를 일반 편집 데이터와 같은 편집, 저장 경로로 통합하고, 액션의 선택과 제외 원인을 기록으로 추적 가능
편집 UI 상태 관리
- 과제: 같은 뷰포트 입력이 편집 상태에 따라 다르게 동작해야 하는 UI를 큰 위젯의 분기로 처리하는 구조
- 판단: UI Controller와 편집 State로 화면 구성, 선택 모드와 입력 처리 책임을 나누고, 이전 State 종료 뒤 새 State를 시작하는 전환 규칙 적용
- 수행:
- State별 레이아웃, 선택 모드와 입력 전략 설정, Blackboard 기반 공유 상태와 공통 UI 컴포넌트 개발
- 저장, 로드 요청과 샷 이벤트를 Subsystem 기반 메시지 서비스로 옮기고, 구독을 UI Controller 수명에 맞춰 중복 구독 방지
- 결과: 기존 동작을 유지하며 상태별 처리를 옮기고, 새 편집 기능을 State 단위로 추가하는 구조 확립
Shot 상태 모델
- 과제: 샷 초기 상태가 샷 객체와 타임라인 섹션에 나뉘어 검색, 동기화, 저장 복원이 복잡한 구조
- 판단: 독립 Shot 모델과 ShotManager가 초기 상태를 관리하고, 실행 중에는 약한 참조로, 저장할 때는 GUID로 객체를 연결하는 구조 선택
- 수행:
- ShotManager와 Shot 모델, 상태 저장과 조회, 프레임 문맥과 범위별 링크 재계산 구현
- MovieScene 섹션 링크와 P2P 빈 구간 채움을 재작성해 샷 경계와 섹션 사이에서 캐릭터와 Prop 상태 연결
- 기존 저장 데이터를 새 모델로 이관하는 하위 호환 처리
- 결과: 샷 초기 상태의 관리 주체와 참조 복원 경로를 하나로 정리하고, 기존 프로젝트를 새 상태 모델로 이관
그 밖의 업무
- Prop을 상속 대신 컴포넌트 조합으로 재구성하고 태그 기반 점수와 포트 점유 트랙 추가
- Root Motion 키를 재생 속도, 반복, 프레임 오프셋에 맞춰 재계산하고, 카메라 orbit의 반경 손실과 수직 회전 뒤집힘 해결
- GitLab CI 기반 빌드와 패키징, Shared DDC, Symbol Store를 구성해 기획과 QA가 개발 빌드를 직접 내려받아 검증하는 배포 체계 운영
- Sentry 크래시 수집 고도화(미니덤프와 PDB 업로드, Slack 알림)
- Unreal Engine 5.7 이전에서 엔진 API 변경에 따른 코드 이전 담당
- 저장소에 AI 에이전트용 커맨드, MR 가이드와 에이전트 정의를 추가해 팀의 에이전트 작업 규약 정리
- 팀에 JetBrains Rider 사용을 지속적으로 권장해 팀 대부분이 Visual Studio에서 Rider로 전환
팀스파르타
2024.12 - 2025.07 / 프리랜서, 정규직과 병행 / 튜터
언리얼 게임 개발 코스
Unreal Engine, C++
- 내일배움캠프 언리얼 게임 개발 코스 수강생의 학습과 프로젝트 개발 지원, ZEP 온라인 학습 공간에서 질의응답과 학습 상담 진행
- 과제와 팀 프로젝트 코드 리뷰, 취업 준비 단계의 이력서와 포트폴리오 피드백, 모의 면접 진행
- 담당 최종 프로젝트 팀과 수강생이 각각 최우수 팀과 최우수 수강생으로 선정
작두 스튜디오
2021.01 - 2024.06 / 정규직 / 클라이언트 프로그래머
Night of the Dead
Unreal Engine 4/5, C++, Windows Server, Unreal Insights, EOS, Steamworks, TeamCity
- 개요: 밤마다 몰려오는 좀비에 대비해 방어 시설을 짓고 생존하는 오픈월드 멀티플레이 게임. Windows Server 기반 Dedicated Server 지원, 프로그래머 2~3명을 포함한 약 10명 규모 팀
- 담당 범위: 전투, 장비, 좀비 AI와 멀티플레이 동기화, 런타임 최적화, 엔진 이전과 개발 인프라. 얼리 액세스 업데이트부터 2024년 5월 1.0 정식 출시까지 참여
멀티플레이 동기화 최적화
- 과제: 소유 관계에 따라 거리와 무관하게 전달해야 하는 상태, 접속 시 한꺼번에 보내야 하는 레벨 스트리밍 상태와 기록 데이터, 자주 바뀌는 상태 프로퍼티의 전송량
- 판단: Unreal Insights 분석을 바탕으로 복제 대상 선정, 전송 데이터 축소, 전송 경로 분할로 나눠 최적화
- 수행:
- Replication Graph에서 거리로 연결별 후보를 수집하고, 오너, 팀, 그룹에 종속된 액터는 거리와 무관하게 포함
- 장착 장비와 무기 부속품, 고용한 NPC, 탑승물은 Dependent Actor로 묶어 부모 액터가 복제될 때 함께 검토
- 상태가 드물게 바뀌는 아이템, 문, 풀링 좀비에 Net Dormancy 적용
- 접속 시 보내는 레벨 스트리밍 상태 목록에 커스텀 NetSerialize를 붙여 패키지 경로를 int16 코드와 비트 플래그로 압축
- 장비 이름 대신 ID를 복제하고 게임 시각은 분이 바뀔 때만 복제하는 식으로 장비 상태, 게임 시각, 웨이브 진행도의 복제를 줄이고, 적용되지 않던 Adaptive NetUpdateFrequency 설정 수정
- Reliable 버퍼의 여유를 보고 레코드 단위로 나눠 보내는 RPC 스트리밍 라우터를 만들고 지도 안개 동기화를 Fast Array에서 이 경로로 전환
- 결과: 복제 대상, 전송 데이터, 전송 경로를 나눠 다루는 동기화 구조로 전환, 개발 업데이트 #10, #11, #15, #19와 1.0 정식 출시에 반영
다수 좀비의 실행 비용
- 과제: 웨이브의 다수 좀비가 기지 앞에 몰리는 전투에서 이동, 동기화, 애니메이션, 길찾기 비용이 함께 커지는 상황
- 수행:
- 전투와 렌더링 여부에 따라 틱 간격을 늘리고, Significance에 따라 AI 캐릭터의 이동 갱신 간격 조절
- 근접 판정에 본 위치가 필요한 전투 중에만 서버의 포즈 갱신을 켜고 평소에는 몽타주만 틱
- Significance Manager로 계산한 중요도를 Animation Budget Allocator에 전달해 클라이언트 애니메이션 평가 빈도를 조절하고, ACL로 애니메이션 데이터 압축
- 웨이브 경로에 인보커 전용 액터를 두어 경로 주변의 내비메시를 미리 만들고, 웨이브 좀비의 Perception 제거
- 결과: 서버 포즈, 클라이언트 애니메이션 평가, AI 틱과 내비메시 생성을 각각의 조건에서만 처리하는 구조 적용, 개발 업데이트 #10과 #11에 반영
UE5 엔진 이전
- 과제: 2023년 11월 전후 EOS가 Steam 외부 인증을 Web API 티켓(
GetAuthTicketForWebApi, identityepiconlineservices)으로 바꾸도록 요구하고 기존 세션 티켓을 거부하는 기한을 둔 상황. 이 함수는 Steamworks SDK 1.57 이상에만 있으나 UE 4.27은 그보다 낮은 SDK를 포함 - 판단: UE 4.27의 Steamworks SDK를 엔진 수정으로 올리면 수정한 소스 엔진을 계속 관리해야 하는 위험이 커서 이 방안을 피하고, SDK 1.57 이상을 포함하며 엔진 전반의 최적화와 에디터 신기능도 함께 얻을 수 있는 UE5로 이전
- 수행:
- UE4에서 UE5로의 이전 주도
- Replication Graph를 Lyra 샘플의 구성에 맞춰 재작성
- 결과: UE5 이전을 2023년 11월 개발 업데이트 #15에 반영, Web API 티켓 기반 EOS 로그인 적용
UE5 이전과 Replication Graph 재작성 / Steam 인증 티켓과 EOS Private Sandbox 권한 확인
커스텀 Destructible
- 과제: UE4의 PhysX 기반 APEX Destruction에서 원인을 알 수 없는 에러가 잦아 크래시로 이어지던 상황. 교체하더라도 파괴 시점에 Destructible 컴포넌트를 만들던 기존 구성(교체형 APEX)의 시각 효과와 성능을 유지해야 함
- 판단: 소스 엔진으로 PhysX 연동 코드까지 디버깅했으나 남은 분석이 PhysX 바이너리 내부 디버깅이라 드는 시간이 과도하다고 보고, 원인 추적 대신 직접 제어할 수 있는 최소 기능의 커스텀 Destructible 시스템으로 교체. 시각 효과와 성능은 거의 같을 것으로 예상
- 수행:
- Blender에서 미리 나눈 조각 StaticMesh를 파괴 시점에 만들고 일정 시간 뒤 제거하는 구조 구현
- 피해를 입은 건물과 문은 HP 70% 이하에서 조각 메시를 미리 로드하고, 프레임이 15fps 이하이거나 웨이브가 큰 상황에서는 연출용 파편 생성을 생략
- 2026년 11월, 당시 환경을 별도 실험 프로젝트에 재현해 교체형 APEX(UE 4.27), Chaos Geometry Collection(UE 5.3)과 같은 조각, 같은 충격 조건에서 조합별 3회 측정
- 실험 프로젝트에서 동시 파괴 부하 시험의 병목을 Unreal Insights로 조각별 컴포넌트 등록(100개 파괴 시 2,400회)으로 특정하고, 한 프레임에 만드는 조각 컴포넌트 수를 240개로 제한하는 개선안 구현
- 결과:
- 재현 환경에서 겉모습을 유지하면서 단일 파괴 스파이크가 교체형 APEX보다 27% 낮음(UE 4.27, 3.68ms → 2.67ms)
- 50개 순차 파괴의 p95 5.24ms로 60fps 예산 안
- 실험 프로젝트에서 개선안으로 100개 동시 파괴 스파이크를 138ms에서 25ms로 82% 낮춰 교체형 APEX(32ms)보다 낮춤
게임플레이와 개발 인프라
- 무기와 능력치, 전투 판정 구현
- 기존 버프 컴포넌트를 Gameplay Ability System으로 옮겨 화상 같은 상태 이상과 버프를 GameplayEffect로 적용하고, GAS의 Attribute 대신 프로젝트의 장비 능력치 체계로 효과를 계산하도록 GameplayEffect와 Ability System Component 확장
- 상태 효과의 남은 시간 저장과 복원, 게임 시간 기준 지속 시간 구현
- 장비 시스템 모듈을 만들고 티어, 내구도와 부품 개조, 대장간 강화, 가격 변동과 할인이 있는 상점, 장비와 수집물을 전시하는 장식대, 코스튬과 외형 변경 DLC 구현
- 레벨링 시스템 모듈과 장비에 끼워 화염, 냉기, 번개, 독 같은 속성 공격을 더하는 부품 스킬, 패시브 스킬, 능력치 분배 구현
- 일반 좀비의 AI 컨트롤러, 공격할 건물을 찾는 탐색 그리드, 대체 대상과 공격 지점을 고르는 EQS 질의를 구현하고 Behavior Tree 태스크를 C++로 전환
- 비명으로 주변 좀비를 불러 모으는 좀비, 작살로 대상을 끌어당기는 좀비 같은 특수 좀비 구현
- 미끼 덫처럼 좀비의 공격 대상을 끌어오는 도발 시스템 구현
- 1지역부터 6지역까지의 보스 좀비와 공격 대상 선정, 행동 상태 전환, 누적 피해에 따른 경직과 기절, 피격 물리 반응을 담은 보스 공용 모듈 구현
- 인스턴스드 폴리지를 관리하는 폴리지 서브시스템과 범용 리스폰 모듈 구현
- 업적 시스템과 Steamworks 업적 연동
- 에셋 사전 로딩과 로딩 스크린 구현
- Sentry 태그와 게임 흐름 상태를 담은 크래시 진단, 디버그 위젯과 치트 명령 구현
- 얼리 액세스 기간의 개발 업데이트 #03부터 #19까지 담당 기능 반영, 2024년 5월 1.0 정식 출시
- Jira, Confluence, Slack을 대체하는 JetBrains Space On-Premise 서버 구축, TeamCity On-Premise 기반 빌드와 패키징 자동화 구성, Shared DDC 운영
- UE5 이전 후 Epic Online Services 세션의 개설과 접속 흐름을 다시 구성
- Easy Anti-Cheat 보호 세션의 접속 처리와 안티치트 제어 시스템 구현
삐요 스튜디오
2021.10 - 2023.12 / 비고용 팀 활동, 정규직과 병행 / 클라이언트 프로그래머
길고양이 이야기 2
Unity, C#, Steamworks, STOVE SDK
- 2D 퍼즐 어드벤처의 세이브와 로드, 퀘스트, 대화, 이동, 컷신, 환경설정과 UI 등 주요 시스템 개발
- PlayStation, Nintendo Switch, Xbox 컨트롤러 입력과 Steamworks 업적, STOVE 구매 인증 연동
- 스토어 등록부터 다국어 빌드 준비, 출시 빌드 검수와 업로드까지 출시 작업 전담, 2023년 2월 STOVE에서 Windows 얼리 액세스, 6월 Steam에서 Windows와 macOS 정식 출시
누라임게임즈
2020.07 - 2020.08 / 인턴 / 게임 개발자
Brutal League
Unity, C#, GameSparks
- Android용 격투 테마 방치형 게임의 클라이언트 개발 전담
- 캠페인 모드 구현, 게임 서버 서비스 GameSparks 기반 보상 시스템과 서버 연동 개발
이메진템페스트 스튜디오
2019.06 - 2020.04 / 비고용 팀 활동, 군 복무와 일부 병행 / 기획 및 클라이언트 프로그래머
Vapor World
Unity, C#, Spine, URP
- 환자들의 내면세계를 탐험하는 2D 사이드 스크롤 액션 어드벤처의 스토리와 세계관 구성
- 입력, 이동과 전투 시스템 구현, Unity 2D Light와 URP 기반 출품 빌드 제작 참여
육군
2018.03 - 2019.10 / 군 복무 / SW개발병
프로그램 개발과 시스템 운영
C#, WPF, VBA
- 기존 프로그램을 C#과 WPF로 이식 개발
- VBA 기반 엑셀 데이터 정리 프로그램 개발
- 육군 지휘통제시스템의 장애 대응과 운영, 응용체계관리반 분대장 임무 수행
클릭트
2016.07 - 2018.02 / 정규직 / VR 소프트웨어 엔지니어
Unity 기반 VR 콘텐츠와 클라이언트 개발. HTC Vive Tracker 정보를 소켓 통신으로 수신해 장치 간 위치와 자세 데이터를 VR 체험에 연결
CircleVR
2017.06 - 2018.02 / Unity, C#, Gear VR, HTC Vive Tracker
- 여러 사용자가 동시에 체험하고 각 시점을 22대의 곡면 디스플레이에 공유하는 무선 VR 전시 시스템에서 장치 간 좌표계 보정과 체험자 시점의 외부 출력 연결 담당
- Gear VR 클라이언트를 외부 HTC Vive Tracker의 6DoF 좌표계에 맞추고 장착 오프셋 보정
- 홍익대학교 VR 뮤지엄 전시관에 설치
Space Walker
2017.05 - 2017.06 / Unity, C#, Perception Neuron, GPU 파티클, onAirVR
- 홍익대학교 영상대학원과 산학협력으로 개발한 VR 공연 콘텐츠의 3D 배경 인터랙션 구현, 다수 파티클의 성능 부담을 줄이기 위해 GPU 파티클 시스템 적용
- 모션 캡처 장비 Perception Neuron의 전신 모션을 Unity Humanoid 아바타에 실시간 적용하고 좌표축 차이 보정
- Unite ’17 Seoul 키노트 오프닝 공연에서 onAirVR 기반 무선 VR로 시연
학도병의 편지
2017.05 - 2017.06 / Unity, C#, HTC Vive
- HTC Vive 기반 인터랙티브 무비 VR 콘텐츠 제작, 충남보훈관 VR 코너 전시
onAirVR
Unity, C#, OVR API, GoogleVR API
- PC 렌더링 결과와 모바일 HMD의 자세, 입력을 연결하는 스튜디오 클라이언트와 세션별 카메라 리그 구현
- Client 2.0(2017.01 - 2017.05)의 UI 개선, OVR API 대응과 Daydream용 GoogleVR API 연동, 사내 콘텐츠 3개의 데모 제작
#BeFearless - Fear of Heights
2016.07 - 2016.12, Oculus Go 추가 대응 2017년 말 - 2018년 초 / Unity, C#, Gear VR, Oculus Go, Gear S2
- 삼성 #BeFearless 캠페인의 고소공포증 훈련 VR 앱 외주 개발, Landscapes와 Cityscapes 두 빌드 제작
- Gear S2 스마트워치의 심박수 데이터 연동과 다국어 시스템 개발
- Gear VR 대응과 Oculus Store 등록, 이후 제공받은 개발킷 기반 Oculus Go 추가 대응
웹젠
2015.12 - 2016.01 / 인턴 / 게임 디자이너
해녀와 바다
Unity, C#
- 국내 스낵컬처 게임 시장 조사와 분석 보고서 작성
- 교육용 게임 ‘해녀와 바다’의 제안서와 Unity 프로토타입 제작
비트망고
2014.07 - 2014.08 / 인턴 / 게임 디자이너
모바일 게임 4종
- 모바일 게임 Slots, SAMURAI STEPS, Pitter Patter, DRAWLINE 제작 참여
- 레벨과 콘텐츠 디자인, 사운드 발주와 QA 담당

Steady Spiral







