영상을 불러오지 못했습니다

포트폴리오

게임 클라이언트와 실시간 3D 제작 도구를 개발해 왔습니다. 대표 작업에서 맡은 문제와 구현 내용을 화면, 영상과 설계 자료로 소개합니다.

hon454@gmail.com / 이력서 / 경력기술서 / 전체 프로젝트

기술 검증 프로젝트#

UE5 Dedicated Server 최적화 실험실#

항목내용
소개Unreal Engine 5.8.3 Dedicated Server의 리플리케이션 비용을 측정하고 최적화 기법을 하나씩 적용해 비교하는 실험 프로젝트
진행 기간2026.10 - 진행 중
주요 기술Unreal Engine 5, C++, Unreal Insights, PowerShell

Dedicated Server 하나에 접속한 클라이언트 8개의 화면과 클라이언트별 복제 상태 표시
Dedicated Server 하나에 접속한 클라이언트 8개의 화면과 클라이언트별 복제 상태 표시

클라이언트 화면마다 그 클라이언트에 복제된 자원 노드, NPC, 건축물 수와 플레이어 위치가 표시됩니다.

최적화가 없는 오픈월드 서버에서 시작해 Relevancy, Dormancy, Net Update Frequency 같은 엔진 기능을 한 번에 하나씩 적용합니다. 측정은 PC 한 대에서 서버 하나와 클라이언트 8개를 띄우고, 한 변이 2km인 맵에 자원 노드 5,001개, NPC 350명, 건축물 500개를 고정 시드로 배치한 같은 시나리오로 측정을 반복합니다. 실행마다 처음 30초를 제외하고 60초를 측정하며, 세 번 실행한 중앙값으로 서버 프레임 시간과 대역폭을 비교합니다. 단계마다 원리와 측정 근거를 글로 정리합니다.

기법을 켜고 끄는 핵심 설정은 자원 노드의 Relevancy, Dormancy와 갱신 빈도 설정에서, 단계별 차이는 단계별로 최적화해 보기에서 볼 수 있습니다.

주요 경력#

시나몬#

항목내용
소속 기간2024.06 - 2026.08
참여 형태정규직
담당 직무클라이언트 프로그래머

Shotloom#

항목내용
소개캐릭터 동작과 카메라를 편집하고 영상 생성 서비스와 연결하는 브라우저 3D 편집기
참여 기간2026.04 - 2026.08
주요 기술Rust, Bevy, WebAssembly, WebGPU, React, TypeScript, Tauri

Shotloom 편집기에서 0프레임과 60프레임 사이의 카메라를 30프레임에서 평가한 화면
Shotloom 편집기에서 0프레임과 60프레임 사이의 카메라를 30프레임에서 평가한 화면

0프레임과 60프레임에 카메라 키를 두고 30프레임을 평가한 화면입니다. 타임라인의 Camera 트랙 아래에 Position, Rotation, FOV 키가 따로 놓입니다.

  • 편집 명령과 Undo/Redo: React UI, Rust 문서 모델과 Bevy 런타임을 잇는 브리지 계약에 트랜잭션 수명주기와 Undo/Redo 명령을 추가하고, 이 경로 위에 Undo/Redo와 저장, 복원을 구현했습니다.
  • 편집 트랜잭션과 롤백: 드래그 시작부터 확정까지를 하나의 트랜잭션으로 기록하고, 명령이 거절되거나 시간이 초과되면 롤백해 UI와 런타임, 저장 상태를 일치시켰습니다.
  • 캐릭터와 카메라 저작: 캐릭터 배치와 포즈 후보 적용, 속성별 카메라 키프레임을 편집 UI부터 타임라인 평가와 저장 형식까지 연결했습니다. 브라우저와 CLI가 같은 Rust 코어와 번들 형식을 사용하도록 구성했습니다.
  • 생성 서비스 통합: 영상 제작 서비스 CineV의 샷을 편집 가능한 3D 장면으로 열고, 생성 영상의 마지막 프레임 이미지를 스토리보드로 돌려주도록 구현했습니다. 생성과 결과 저장을 분리해 저장에 실패하면 같은 결과를 다시 전송할 수 있게 했습니다.
  • CI 캐시 개선: Rust Engine CI의 캐시를 target 아카이브에서 sccache로 바꿔 캐시 크기를 약 1.8GB에서 684MB로 약 62% 줄였습니다. warm CI에서 컴파일 374건이 모두 캐시에 적중했습니다.

포즈와 카메라 편집 영상 / 저장 구조와 복원 화면 / 서비스 통합과 검증 범위

CINEVStudio#

항목내용
소개AI가 구성한 3D 장면을 편집하고 영상으로 출력하는 Unreal Engine Sequencer(MovieScene) 기반 제작 도구
참여 기간2024.06 - 2026.04
주요 기술Unreal Engine 5, C++, UMG, Sequencer, ONNX

CINEVStudio에서 액션 조건을 타입별 요구조건으로 입력하는 Unreal Editor 화면
CINEVStudio에서 액션 조건을 타입별 요구조건으로 입력하는 Unreal Editor 화면

액션 데이터 에셋에서 대상 타입(Prop, Location)을 고르고 높이와 태그 요구조건을 붙이는 화면입니다.

AnimComposite에서 액션의 모션 구간과 Notify, Curve를 함께 편집하는 Unreal Editor 화면
AnimComposite에서 액션의 모션 구간과 Notify, Curve를 함께 편집하는 Unreal Editor 화면

의자에 앉는 모션 위에 자세 구간 Notify(Stand, SittingOnObject)와 골반 IK Curve를 함께 놓은 AnimComposite 화면입니다.

  • 액션 데이터 작성 구조: 문서와 대조하며 맞추던 액션 조건을 타입별 에셋 입력 구조로 바꾸고, 테이블에 프레임 값으로 적던 모션 구간과 이벤트 시점은 애니메이션을 보며 AnimComposite에서 편집하게 했습니다. 데이터 타입과 실행 경로, 변환기를 개발하고 검증 프레임워크에 액션 데이터 검증기를 추가했습니다. 제작자가 기억해 맞추던 조건 관계를 입력 구조와 검증기가 대신하게 됐습니다.
  • AI 결과의 실행과 편집: AI의 행동 지시를 현재 장면에서 실행할 수 있는 액션으로 해석하고, 생성 모션을 선택해 타임라인에 적용하는 흐름을 구현했습니다. 이 결과도 일반 편집 데이터와 같은 Undo/Redo와 저장, 복원 경로를 거치게 했습니다.
  • 편집 UI 상태 관리: UI Controller와 편집 State로 화면, 선택과 입력 처리를 나누고 Blackboard로 공유 상태를 전달했습니다. 새 편집 기능을 State 단위로 추가하는 구조를 만들고 공통 UI 컴포넌트를 개발했습니다.
  • Shot 상태 모델: 샷 초기 상태를 관리하는 Shot 모델과 ShotManager를 만들고, 상태 저장과 조회, 프레임 문맥과 재계산, 기존 저장 데이터 이관을 구현했습니다.
  • Root Motion과 카메라: Root Motion 키를 타임라인 조건에 맞춰 다시 계산하고, 카메라 orbit의 반경 손실과 수직 회전 뒤집힘을 해결했습니다.
  • 빌드 환경과 엔진 이전: GitLab CI 기반 빌드와 패키징, Shared DDC를 구성하고 Sentry 크래시 수집을 고도화했습니다. Unreal Engine 5.7 이전에서는 엔진 API 변경에 따른 코드 이전을 맡았습니다.

액션 입력 화면과 실행 구조 / UI 상태 관리와 도식 / 제품 화면과 실제 제작 사례

작두 스튜디오#

항목내용
소속 기간2021.01 - 2024.06
참여 형태정규직
담당 직무클라이언트 프로그래머

Night of the Dead#

항목내용
소개좀비의 습격에 대비해 방어 시설을 만들고 생존하는 오픈월드 멀티플레이 게임
참여 기간2021.01 - 2024.06
팀 규모약 10명, 프로그래머 2~3명
주요 기술Unreal Engine 4/5, C++, Unreal Insights, EOS, Steamworks
  • Dedicated Server 동기화: Unreal Insights 분석을 바탕으로 Replication Graph가 거리와 소유 관계에 따라 연결별 복제 대상을 고르게 했습니다. 상태가 드물게 바뀌는 액터는 Net Dormancy로 휴면시키고, 접속 시 보내는 레벨 스트리밍 상태에는 커스텀 NetSerialize를 붙여 코드와 비트 플래그로 압축했습니다. 접속 시 한꺼번에 보내야 하는 기록 데이터는 Reliable 버퍼의 여유를 보고 레코드 단위로 나눠 보내는 RPC 스트리밍 라우터로 전송했습니다.
  • 다수 좀비의 실행 비용: 서버의 포즈 갱신은 근접 판정이 필요한 전투 중에만 켰습니다. Significance Manager로 계산한 중요도를 Animation Budget Allocator에 전달해 예산 안에서 애니메이션 갱신 빈도를 조절하고, ACL로 애니메이션 데이터를 압축했습니다.
  • 게임플레이 구현: 전투, 장비의 티어와 내구도, 파츠 개조, 보스 및 일반 좀비 AI를 구현했습니다.
  • UE5 엔진 이전: EOS가 Steam 외부 인증을 Web API 티켓으로 바꾸도록 요구하자, 이를 지원하는 Steamworks SDK 1.57 이상을 포함한 UE5로의 이전을 주도했습니다.
  • 파괴 연출: 원인을 알 수 없는 에러가 잦던 APEX Destruction을 직접 제어할 수 있는 커스텀 Destructible 시스템으로 교체했습니다. 당시 환경을 재현해 교체 전 구성(교체형 APEX)과 비교한 결과 단일 파괴 스파이크가 27% 낮았고, 동시 파괴 부하 시험에서 찾은 병목을 프레임당 조각 컴포넌트 예산으로 줄여 100개 동시 파괴 스파이크를 교체 전 구성보다 낮췄습니다(UE 4.27, 138ms → 25ms, 교체 전 32ms).
  • 개발 인프라: JetBrains Space와 TeamCity On-Premise 서버를 구축해 협업 도구와 빌드, 패키징 자동화를 운영했습니다.

UE 4.27에서 같은 장면을 커스텀 Destructible 시스템과 교체형 APEX로 부순 화면
UE 4.27에서 같은 장면을 커스텀 Destructible 시스템과 교체형 APEX로 부순 화면

장비와 전투 업데이트 / 멀티플레이 동기화 / 멀티플레이 최적화 시리즈 / 다수 좀비 최적화 / 커스텀 Destructible / 재현 환경에서의 측정 / Steam 출시 페이지

삐요 스튜디오#

항목내용
소속 기간2021.10 - 2023.12
참여 형태비고용 팀 활동, 정규직과 병행
담당 직무클라이언트 프로그래머

길고양이 이야기 2#

항목내용
소개길고양이의 모험을 다룬 2D 퍼즐 어드벤처
참여 기간2021.10 - 2023.12
주요 기술Unity, C#, Steamworks, STOVE SDK

G-STAR 2023 인디 어워즈에서 Games for Impact 수상작으로 발표된 길고양이 이야기 2
G-STAR 2023 인디 어워즈에서 Games for Impact 수상작으로 발표된 길고양이 이야기 2

G-STAR 2023 인디 어워즈에서 Games for Impact 수상이 발표된 중계 화면입니다.

  • 주요 게임 시스템: 세이브와 로드, 퀘스트, 대화, 이동, 컷신과 UI를 개발했습니다.
  • 플랫폼 연동: 컨트롤러 입력, Steam 업적과 STOVE 구매 인증을 연동했습니다.
  • PC 출시 전담: 스토어 등록부터 다국어 빌드 준비, 출시 빌드 검수와 업로드까지 맡았습니다. 2023년 STOVE Windows 얼리 액세스와 Steam Windows, macOS 정식 출시를 진행했습니다.

게임 영상과 출시, 수상 자료 / 담당 범위

이메진템페스트 스튜디오#

항목내용
소속 기간2019.06 - 2020.04
참여 형태비고용 팀 활동, 군 복무와 일부 병행
담당 직무기획 및 클라이언트 프로그래머

Vapor World#

항목내용
소개환자들의 내면세계를 탐험하는 2D 액션 어드벤처
참여 기간2019.06 - 2020.04
주요 기술Unity, C#, Spine, URP
  • 기획과 클라이언트 개발: 스토리와 세계관을 기획하고 입력, 이동과 전투 시스템을 개발했습니다.

참여 기간 중 출품한 프로젝트가 제11회 새로운 경기 게임오디션 공동 2위에 선정됐고, MWU Korea Awards 2019 PC & Console 분야 Top 3에 올랐습니다.

출품 영상과 개발 기록

육군#

항목내용
소속 기간2018.03 - 2019.10
참여 형태군 복무
담당 직무SW개발병

프로그램 개발과 시스템 운영#

항목내용
참여 기간2018.03 - 2019.10
주요 기술C#, WPF, VBA

분대장 임명장
분대장 임명장

을지태극훈련 지원 표창장
을지태극훈련 지원 표창장

SW 및 회의 지원 우수상
SW 및 회의 지원 우수상

복무 중 받은 임명장과 표창입니다. 전장망 SW 지원과 회의 지원으로 우수상을, 을지태극훈련 지원으로 표창을 받았습니다.

  • 프로그램 개발: C#과 WPF로 기존 프로그램을 이식하고, VBA로 엑셀 데이터 정리 프로그램을 개발했습니다.
  • 시스템 운영: 육군 지휘통제시스템의 장애 대응과 운영을 맡고 응용체계관리반 분대장으로 복무했습니다.

클릭트#

항목내용
소속 기간2016.07 - 2018.02
참여 형태정규직
담당 직무VR 소프트웨어 엔지니어

Unity 기반 VR 클라이언트와 소켓 통신을 통한 장치 연동을 담당했습니다. 아래 대표 작업 외에 onAirVR Client 2.0과 #BeFearless - Fear of Heights 개발에 참여했습니다.

CircleVR#

항목내용
소개여러 사용자의 VR 체험과 외부 디스플레이를 연결한 전시 시스템
참여 기간2017.06 - 2018.02
주요 기술Unity, C#, Gear VR, HTC Vive Tracker
  • 장치 간 좌표 보정: HMD와 외부 트래커의 좌표계를 맞추고 장착 오프셋을 보정했습니다.
  • 체험과 외부 시점 연결: 여러 사용자의 시점을 외부 디스플레이로 연결해 체험자의 화면을 관람객과 공유하도록 했습니다.

전시 영상과 담당 업무

Space Walker#

항목내용
소개무용수의 움직임을 VR 공간에 실시간으로 연결하는 공연 콘텐츠
참여 기간2017.05 - 2017.06
주요 기술Unity, C#, Perception Neuron, GPU 파티클, onAirVR
  • 전신 모션 연동: Perception Neuron의 모션을 Unity Humanoid 아바타에 연결하고 좌표축 차이를 보정했습니다.
  • 실시간 배경 연출: 3D 배경 인터랙션을 구현하고, 다수의 파티클을 처리할 때의 성능 부담을 줄이기 위해 GPU 파티클 시스템을 적용했습니다.

공연 콘텐츠와 담당 업무

오픈소스 프로젝트#

유지관리자 (Maintainer)#

Grimoire#

항목내용
소개AI 에이전트의 코드 리뷰, 리뷰 대응, 이슈 준비도 판단, 작업 인계와 Git 운영을 위한 재사용 가능한 Skill과 Plugin
주요 기술Python, Codex Skills, Codex Plugins, GitHub CLI, Git
  • 개발 흐름 구성: PR 맥락 수집부터 피드백 분류, 사용자 의사결정, 구현과 검증, 리뷰어 후속 대응까지 하나의 흐름으로 연결했습니다. 대화와 작업이 바뀌어도 결정 상태를 이어가고, 원격 변경은 사용자 확인과 검증을 통과한 뒤에만 수행합니다.
  • 보호 장치: 작업 인계와 Git 정리, 충돌 해결처럼 실수 비용이 큰 작업은 대상을 다시 확인하고, 확인에 실패하면 중단합니다.
  • 동작 검증: Python 표준 라이브러리 기반 테스트로 주요 동작을 검증합니다.
  • Skill과 Plugin 배포: 코드 리뷰, 작업 인계와 Git 운영 절차를 Skill로 작성하고 설치 가능한 Plugin으로 제공합니다. Shotloom 개발 기간에 이 도구를 포함한 에이전트 환경을 운용했습니다.

GitHub Pulls Show Reviewers#

항목내용
소개GitHub PR 목록에 리뷰 요청 대상과 리뷰 상태를 표시하는 Chrome 확장 프로그램
주요 기술TypeScript, React, WXT, GitHub REST API, Vitest, Playwright

GitHub PR 목록의 각 행에 리뷰 요청 대상과 리뷰어별 승인 상태를 표시한 화면
GitHub PR 목록의 각 행에 리뷰 요청 대상과 리뷰어별 승인 상태를 표시한 화면

  • 리뷰 상태 표시: 요청된 사용자와 팀, 리뷰어별 승인 및 변경 요청 상태를 PR 목록에 표시했습니다. 한국어를 포함한 5개 언어를 지원합니다.
  • 화면 갱신과 API 처리: GitHub의 목록 갱신에 맞춰 표시를 복원하고, 페이지 단위 API 배치와 행 단위 캐시, 동시 요청 수 제한을 구현했습니다.
  • 계정 연동과 배포: GitHub App으로 계정별 비공개 저장소 접근을 처리하고 Chrome Web Store에 배포했습니다.

Copy Selection Context#

항목내용
소개선택한 코드의 파일 경로와 줄 번호를 함께 복사하고 여러 파일의 문맥을 모으는 JetBrains 플러그인
주요 기술Kotlin, IntelliJ Platform SDK, Gradle, JUnit 5, GitHub Actions

선택한 코드를 파일 경로, 줄 번호와 함께 복사하고 도구 창에서 여러 문맥을 모은 화면
선택한 코드를 파일 경로, 줄 번호와 함께 복사하고 도구 창에서 여러 문맥을 모은 화면

  • 코드와 위치 복사: 선택 영역의 경로와 줄 범위를 계산하고, 여러 커서의 선택 영역과 사용자 지정 출력 형식, GitHub와 GitLab permalink를 지원했습니다.
  • 문맥 수집과 검토: 수집 당시의 코드와 위치를 스냅샷으로 보관하고, 도구 창에서 순서를 조정한 뒤 함께 복사하도록 구현했습니다.
  • 검증과 배포: 단위 테스트와 IntelliJ 플랫폼 테스트, 플러그인 호환성 검증을 구성하고 GitHub Actions에서 릴리스와 배포를 자동화해 JetBrains Marketplace에 배포했습니다.

기여자 (Contributor)#

Firefly#

항목내용
소개Astro와 Svelte 기반의 정적 블로그 테마
주요 기술Astro, Svelte, TypeScript, Mermaid
  • GitHub 카드 빌드 캐시: GitHub 저장소 카드를 빌드 시점 캐시로 전환해 API 장애와 사용량 제한에 대응했습니다.
  • Mermaid 렌더러 이전: Mermaid 렌더링을 Node.js 기반 최신 버전으로 이전하며 기존 테마의 출력 형태를 유지했습니다.
  • 카테고리 바 휠 스크롤: 누적 이동 손실과 입력 지연을 제거하고, 가로 트랙패드 제스처를 보존하면서 목록 경계에서는 페이지 스크롤이 이어지도록 개선했습니다.
  • 레이아웃 슬롯 수정: 페이지별 <head> 콘텐츠가 최상위 레이아웃으로 전달되지 않던 Astro 슬롯 구조를 수정했습니다.
  • 한국어 README 작성: 설치와 구성, 배포와 Markdown 확장 기능을 다룬 한국어 README를 작성했습니다.

bevy_vrm1#

항목내용
소개Bevy에서 VRM 1.0 아바타를 불러오고 렌더링하는 라이브러리
주요 기술Rust, Bevy, WGSL, WebGPU
  • 재현과 원인 격리: Shotloom 브라우저 편집기에서 MToon VRM을 표시한 직후 화면이 검게 변하는 문제를 Chrome WebGPU에서 재현했습니다. Metal 네이티브에서는 나타나지 않는 문제였고, 조명 단계별로 비교해 원인을 emissive 처리로 좁혔습니다.
  • 셰이더 플래그 수정: MToon 셰이더가 EMISSIVE_TEXTURE 비트를 MToon uniform이 아닌 Standard Material 플래그 필드에서 읽어, WebGPU에서 바인딩되지 않은 텍스처를 샘플링하고 그 NaN이 톤매핑과 Bloom으로 퍼지는 것을 확인했습니다. 플래그를 MToon uniform에서 읽도록 수정했습니다.

함께 일한 동료들의 추천#

직책과 협업 관계는 함께 일한 당시를 기준으로 표기했습니다.

기술적 문제의 근본 원인을 끝까지 파고드는 끈기.

홍XX시나몬 CTO, AI Lab Lead
상급자(비직속)번역 발췌

가장 신뢰했던 것은 복잡한 문제를 구조화하는 능력이었습니다.

황XX시나몬 Lead Software Engineer
직속 상사원문 발췌

주변의 문제를 발견하고, 필요한 일을 스스로 찾아 실제 변화로 만들어내는 동료입니다.

심XX시나몬 클라이언트 개발자
같은 팀 동료원문 발췌

새로운 영역의 문제를 깊게 파고들어 구조화하고, 팀이 함께 이해할 수 있는 형태로 만들어 갔습니다.

임XX시나몬 테크니컬 아티스트
같은 팀 동료원문 발췌

미래지향적이면서도 신뢰할 수 있는 엔지니어.

고XX시나몬 AI PO
협업 동료(타 부서)번역 발췌

기획과 개발의 경계를 두기보다 함께 좋은 결과물을 만들어가기 위해 고민해주는 클라이언트 개발자였습니다.

최XX시나몬 서비스 기획자
협업 동료(타 부서)원문 발췌

LinkedIn에서 추천사 전체 읽기

Profile Image of the Author
Jihoon Jeon
안녕하세요! 서브컬처와 자전거를 사랑하는 개발자 전지훈입니다.
공지사항
제 블로그에 오신 것을 환영합니다! 예시 공지입니다.
카테고리
태그
최신 일상
사이트 통계
게시글
73
카테고리
10
태그
143
총 단어 수
133,527
운영 일수
0일
최근 활동
0일 전
사이트 정보
빌드 플랫폼
GitHub Actions
블로그 버전
Firefly v6.16.9
라이선스
CC BY-NC-SA 4.0
목차