Portfolio
실제로 참여했거나 주도한 프로젝트 중, 주요 작업 내용을 중심으로 정리한 포트폴리오입니다.
복싱스타 – 라이브 서비스 & 시스템 리팩토링
네시삼십삼분 · 챔피언스튜디오 사원 (2018.09 ~ 2022.02)
라이브 중인 모바일 게임 <복싱스타>의 신규 콘텐츠 개발과 기존 복합 시스템을 모듈화/리팩토링하며, 플랫폼 이슈 대응과 CI/CD·빌드 머신 운영까지 담당했습니다.
역할: 클라이언트 프로그래머
핵심 기술: Unity (Legacy RP), NGUI, AssetBundle, Native Plugin, Jenkins
주요 기여 & 기술 포인트
1. 스탯 시스템 구조 리팩토링
UserStatSystemBase를 도입하여 Player / Bot / Replay 등 다양한 컨텍스트에 따라 다른 스탯 시스템을 사용할 수 있도록 베이스화.UserStatSystem은 인게임 유저 전용 구현으로, 라이브 서비스 중인 프로젝트의 세부 로직은 숨기고 인터페이스/구조만 외부에 설명.
2. 계정/캐릭터 단위 스탯 테이블 분리
AccountStatTable– 계정 단위 스탯(코스튬 컬렉션, 계정 레벨 등)을 관리.CharacterStatTable– 캐릭터별 스탯을Dictionary<int, ClientStatData>로 관리.ClientStatData– 실제 숫자 데이터(레벨/퍼센트/그룹 스탯)를 모아두는 최하단 데이터 구조.
3. Arabic 문자열 지원
- nGUI에 Arabic지원을 위해 손수 플러그인 제작 (스트링 이슈로 상용 플러그인 적용 불가)
리팩토링 리뷰 발표 자료 (PPT)
C# 코드 보기
실제 구현 코드에서 민감한 부분을 제외한 발췌본을 별도의 페이지에서 제공합니다. 스탯 시스템의 베이스 구조와 데이터 테이블 설계를 확인할 수 있습니다.
실시간 멀티플레이 논타겟 액션 게임
네시삼십삼분 · 챔피언스튜디오 팀장 (2022.02 ~ 2023.02)
실시간 멀티플레이 논타겟 액션 게임 신규 개발 프로젝트를 리드하며, 커스텀 물리 시스템과 네트워킹 구조를 직접 설계·구현했습니다.
역할: 팀장 / 리드 클라이언트 개발자
핵심 기술: Unity, URP(Post-Processing), Addressable, uGUI, Photon, Unity NetCode, UniRx
넷코드 & 스킬 구현 상세
Netcode 1 – UniRx 기반 입력 처리
- UniRx의
Observable.EveryUpdate를 활용해 매 프레임 로컬 유저 입력을 스트림으로 처리. - 입력 스트림을 Tick 스트림(
ObservableEx.EveryTick)과 분리하여, 렌더링 프레임과 게임 로직 Tick을 독립적으로 운영. - 각 Tick마다 입력 스냅샷(
InputPayload)을 생성해 버퍼에 기록하고, 서버 동기화용 RPC에 재사용할 수 있도록 구조화.
Netcode 2 – Circular Buffer로 Tick 상태 관리
- 고정 크기
BUFFER_SIZE를 가진 순환 버퍼를 두어,tick % BUFFER_SIZE인덱스로 입력/포지션 이력을 저장. - 서버 보정(Server Reconciliation) 시, 서버에서 수신한 확정 상태를 기준으로 해당 Tick 이후의 입력을 재적용(리플레이)하여 예측/보정을 구현.
- Tick 별
InputPayload와PositionPayload를 분리해 디버깅 및 롤백 시 특정 Tick 상태를 빠르게 복원 가능.
스킬 구현 1 – 브레이크 데이터 기반 돌진 스킬
- 가장 기본이 되는 “앞으로 돌진” 스킬을 설계하면서, 기획자가 원하는 감속 구간(BrakeData)과 일반 마찰 계수를 자유롭게 조정 가능하도록 구현.
BrakeData와 스킬 파라미터들을ScriptableObject로 분리해 기획자가 에디터에서 실시간으로 값 튜닝 및 A/B 테스트를 수행할 수 있게 지원.- 커브(예:
AnimationCurve speedGraph)와 BrakeData를 조합해 초반 가속–중반 유지–후반 감속과 같은 다양한 속도 속성을 코드 수정 없이 구성 가능.
슈퍼콜라 택틱스 – 모바일 RPG 신규 개발
멘티스코 · 슈퍼콜라 택틱스 (2023.12 ~ 2024.12)
URP 기반 모바일 프로젝트의 전투/툴/최적화/CI/CD 전반을 담당하며, 인게임 시스템과 개발 툴, 빌드 파이프라인을 구축했습니다.
역할: 클라이언트 프로그래머
핵심 기술: URP, uGUI, UniRx, UniTask, Addressable, UI Toolkit, Jenkins
주요 기여 & 기술 포인트
- MVP 기반 UI 시스템 및 인게임 전투 시스템 구현.
- UI Toolkit을 활용한 개발용 툴 제작으로 디자이너/기획자 워크플로우 개선.
- Profiler 기반 최적화로 FPS 향상 및 APK 용량 감소(FPS +30%, APK −37.5%).
- Jenkins 전/후처리 스크립트(manifest, plist, shell-script)로 빌드 파이프라인 자동화.
[외주계약] 방치형 모바일 게임
외주 기간 계약 · 유니티 클라이언트 프로그래머 (2025.01 ~ )
방치형 모바일 게임의 유니티 클라이언트를 담당하여, 라이브 안정화, 성능 최적화, CI/CD 및 운영 자동화를 구축했습니다.
역할: 유니티 클라이언트 프로그래머
핵심 기술: Unity, UniRx, AssetBundle, uGUI, Jenkins, AWS S3, CloudFlare
주요 기여 & 기술 포인트
- Jenkins 기반 CI/CD 파이프라인 구축 및 에셋번들 업로드 자동화로 배포 시간을 단축하고 휴먼 에러를 감소.
- 서버 테이블 동기화 자동화 스크립트를 구성하여, 운영/밸런스 작업 시간을 크게 절감.
- 렌더링/로딩 경로 최적화로 프레임 드랍과 로딩 시간을 눈에 띄게 감소시키고, 방치형 특성에 맞는 안정적인 프레임 확보.
- 라이브 이슈에 신속 대응하여 크리티컬 버그/충돌을 최소화하고 서비스 안정성 유지.
- AWS 인프라 구성/튜닝을 통해 월 서버 비용을 약 1000만원 → 100만원 미만으로 최적화.
[외주계약] 디펜스 게임
풀스택 개발
서버 아키텍처부터 Unity 클라이언트, 빌드/배포 자동화까지 단독으로 설계·구현한 디펜스 게임 프로젝트입니다.
역할: 풀스택 개발자
핵심 기술: ASP.NET Core, WebSocket, Unity, UniTask, Swagger, Jenkins
주요 기여 & 기술 포인트
1. 서버 아키텍처 설계 및 구현
- ASP.NET Core + WebSocket 기반 실시간 통신 서버를 설계하여 룸/세션/웨이브 처리 로직을 직접 구현.
- 게임 룰/웨이브 진행/보상 계산을 서버 중심으로 두어 치트/동기화 문제를 최소화.
2. 클라이언트–서버 계약 자동화
- Swagger를 사용해 서버 API/패킷 스펙을 정의하고, 이를 기반으로 클라이언트용 C# API 통신 코드를 자동 생성.
- 패킷 정의 변경 시 서버/클라이언트 간 싱크를 자동화해 실수로 인한 프로토콜 불일치를 줄임.
3. Unity 클라이언트 및 파이프라인
- 웨이브/타워/유닛 로직과 UI 흐름을 구현하고, 데이터 기반 밸런싱 구조를 도입.
- Jenkins 기반 CI/CD 파이프라인을 구성해, 빌드/배포를 원클릭으로 처리 가능한 형태로 자동화.