Game Programmer Portfolio

안녕하세요,
서버와 클라이언트를 함께 보는
게임 프로그래머 김경배입니다.

언리얼 엔진 5·C++로 멀티플레이 게임을 만듭니다.
판정은 서버, 연출은 클라이언트로 나눠
여러 클라이언트가 접속해도 상태가 어긋나지 않는 전투를 설계합니다.

핵심 역량

게임 클라이언트부터 서버·시스템 계층까지, 문제가 어디서 깨지는지 찾습니다

⚔️

GAS 기반 전투 설계

Gameplay Ability System으로 스킬·데미지·쿨다운을 모듈 단위로 분리해, 새 능력을 추가해도 기존 코드 수정이 최소화되는 구조를 만듭니다.

🛰️

서버 권한 기반 멀티플레이

판정은 서버 권한으로 확정하고 결과만 리플리케이션, 연출은 멀티캐스트로 분리해 클라이언트 간 상태 일관성을 보장합니다.

🔍

계층을 가르는 디버깅

임베디드·백엔드 경험을 바탕으로 클라이언트인지 서버인지, 네트워크인지부터 좁혀 문제의 원인 계층을 빠르게 찾습니다.

프로젝트

대표작 2개는 상세히, 그 외 4개는 간략히 정리했습니다.

대표작 · 01

Forever Planet

서비스 종료된 넥슨 <에버플래닛>을 참고한 Globe View 2.5D RPG

기간 2025.04 ~ 2025.06 형태 개인 프로젝트 · 기여도 100%
UE5.2C++GASDedicated ServerPaperZD

01 · 프로젝트 개요

구면(Globe) 형태의 월드 위에서 이동하고 전투하는 2.5D RPG입니다. Dedicated Server 기반 멀티플레이를 목표로 설계했습니다.

왜곡된 구면 월드에서의 이동

02 · GAS 기반 전투 시스템

AbilitySystemComponentAttributeSet으로 전투 수치를 관리하고, GameplayAbility 단위로 스킬을, GameplayEffect로 데미지·쿨다운을 적용했습니다. 새 능력을 추가해도 기존 코드 수정이 최소화되도록 모듈 단위로 분리했습니다.

공격 리플리케이션 및 멀티캐스트

03 · 서버 권한 기반 판정으로 전환 핵심

초기에는 공격 판정과 피격 연출을 함께 Multicast로 전파했습니다. 각 클라이언트가 판정을 독립 처리하면 상태 일관성을 보장할 수 없다고 판단해 구조를 바꿨습니다.

  • 피격 처리 Ability에 NetExecutionPolicy = ServerOnly 지정, 진입부에 HasAuthority 가드 적용
  • 확정된 Health는 ReplicatedUsing = OnRep_Health로 각 클라이언트에 전달
  • MulticastMulticast_SetHitColor(피격 색)·Multicast_SetKnockback(넉백) 등 연출 전용으로 역할 축소
서버 권한으로 확정된 피격 리플리케이션

04 · OnRep 서버 미호출 문제

bIsAttackingReplicatedUsing을 걸어 애니메이션을 재생했으나 서버 화면에서만 동작하지 않았습니다. OnRep은 값을 수신하는 쪽에서 호출되므로, 값을 직접 변경하는 서버에서는 실행되지 않음을 확인했습니다. SetIsAttacking에서 콜백을 직접 호출해 서버·클라이언트 동작을 일치시켰습니다.

05 · 멀티플레이 검증

Dedicated Server에 다중 클라이언트를 접속시켜 전투 상태와 액터 소멸이 모든 클라이언트에서 일치하는지 확인했습니다.

다중 클라이언트 전투
적 소멸 동기화

06 · 중복 발동 차단

공격이 반복 입력되는 문제를 Cooldown.Attack 태그와 ActivationBlockedTags로 차단해, 쿨다운 중 재발동을 막았습니다.

대표작 · 02

Unnamed

UE5 기반 오픈월드 RPG

기간 2024.12 ~ 2025.02 형태 개인 프로젝트 · 기여도 100%
UE5.2C++Blender

01 · 핵심 메커닉

캐릭터 이동, 회피, 상호작용 등 기본 조작을 구현하고 Animation BlueprintIK로 동작을 연결했습니다.

이동·회피·상호작용

02 · 전투 시스템

공격, 피격 반응, 히트 판정을 구현했습니다. 중복 타격과 애니메이션 충돌 문제를 상태 전이 조건을 정리해 해결했습니다.

전투 (1)
전투 (2)

03 · 적 AI

Behavior TreeBlackboard로 감지·추적·공격 패턴을 구성했습니다. 감지 범위와 상태 전이 조건을 분리해, 여러 유형의 적을 같은 구조로 확장할 수 있게 했습니다.

04 · 장비 및 재화 시스템

장비 착용에 따른 외형·스탯 변경과 재화 획득을 구현했습니다.

장비 착용
재화 획득

05 · 오픈월드 최적화

Packed Level Actors를 적용해 반복 배치 오브젝트를 병합, 드로우콜을 줄였습니다.

그 외 프로젝트

VanguardDT

2025.11~12

3인 팀 · 차량 파트 외 전 영역

3D Gaussian Splatting 파이프라인을 구축하고 언리얼 엔진과 연동했습니다.

PythonPyTorchHuggingFaceUnreal Engine
개발 기록(블로그) ↗

zerojuice

2026.01~02

5인 팀 · 백엔드 · 웹/앱 클라이언트

자율주행 주차 관제 시스템. MQTT/REST 채널을 분리하고, JSON 40byte → 바이너리 12byte 전환과 ByteBuffer 엔디안 정합으로 응답 지연을 85% 단축했습니다.

JavaSpring BootMQTTMySQLAWSDockerReactReact Native

Thaw the mask

Global Game Jam

가면 시스템 · 레벨 디자인

글로벌 게임잼에서 하루 만에 완성한 Unity 2D 게임. 가면 시스템, 스테이지 선택, 타일맵 레벨 디자인을 담당했습니다.

UnityC#2D

AI 도구

2025.10~2026.02

MCP 서버 개발 · 배포

백준 MCP 서버를 개발·배포하고, Unity에 MCP를 연결해 에셋 생성·레벨 배치를 자동화하는 실험을 진행했습니다.

MCPPythonUnity
GitHub ↗

기술 스택

게임 클라이언트부터 서버·시스템까지

Languages

C++C#JavaPython

Engines

Unreal Engine 5Unity

Systems & Tools

GASDedicated ServerSpring BootMQTTDockerAWS

경력

경력 · 교육 · 자격 · 수상

경력

KB국민은행
플랫폼제휴사업부 간편결제팀 · 인턴
2026.07~08
하나저축은행
디지털금융팀 · 계장
2023.04~2024.05
큐비스트
마케팅팀 · 인턴
2022.08~12

교육

SSAFY 14기
삼성청년SW·AI아카데미 · 임베디드
2025.07~2026.06
Google ML Bootcamp
머신러닝 부트캠프
2024.07~11

자격증

정보처리기사SQLDDeep Learning Specialization

수상

SSAFY 공통 프로젝트 우수상SSAFY 성적 우수상KB 아이디어뱅크상