2026 · PORTFOLIO

Game Client
Developer

플레이를 구현하고,
Unity 콘텐츠를 앱·웹·모바일 환경으로 연결합니다.

이은빈 bin7342@gmail.com
1
Summary

Profile

이름
이은빈
직무
게임 클라이언트 개발자
생년월일
1993.12.24

Education

학교
단국대학교 · 2020.03 졸업
전공
소프트웨어학과 · 학사
자격
정보처리기사

Skills

엔진 · 언어
Unity · C#
빌드 대상
WebGL · Android · iOS
Unity 기술
Addressables · ScriptableObject
Cinemachine · Tilemap · Timeline
Sprite Atlas · UGUI
앱 연동
UaaL · React Native Bridge
JavaScript · HTML · CSS
그 외
FMOD · I2 Localization
Unity Ads · Unity IAP · Git
  1. 청담미디어게임 클라이언트 개발2025.04 – 2026.07 · 1년 4개월
    • 다양한 장르의 핵심 플레이 프로토타이핑
    • Unity 콘텐츠의 앱·웹 실행 환경 구현
    • 타 직군과 요구사항 및 구현 범위 조율
  2. 크몽프리랜서2024.01 – 2024.12
    • 앱 스토어 등록과 심사 대응
    • 다중 기기 테스트 후 개선안 제시
  3. 연세대학교 예방의학교실QA2023.08 – 2024.10
    • 환자 데이터 수집 앱 품질 검토
    • 기기·OS 호환성과 UI/UX 개선 제안
  4. 모바일 게임 1인 개발우리집 행복한 고양이2022.12 – 2025.01
    • 기획·개발·아트·사운드까지 1인 제작
    • Google Play 출시 후 업데이트 운영
2
Projects 3
Product

AI 캐릭터와 소통하고
다양한 콘텐츠를 즐기는
컴패니언 앱

캐릭터 대화·에피소드·영상통화·미니게임을 연결한 앱입니다.
미니게임과 영상통화의 Unity 콘텐츠를 담당했습니다.

AI 컴패니언 앱 캐릭터 홈
5
Unity Scope

Unity로 구현한
미니게임과 3D 캐릭터

캐릭터와 대화하고 에피소드를 즐길 수 있는 앱입니다.
미니게임과 영상통화 화면의 3D 캐릭터를 담당했습니다.

유성신 캐릭터 홈과 관계 정보
캐릭터 홈캐릭터 선택 · 호감도 확인
캐릭터 커뮤니티 화면
커뮤니티게시물과 소식 확인
캐릭터 에피소드 화면
에피소드캐릭터 콘텐츠 재생
Project 1 Supernova Minigames Unity WebGL 게임을 앱에서 실행
Note Rush 미니게임 실행 화면
Project 2 3D Character Runtime Unity as a Library로 앱에 통합
영상통화 화면의 미호 3D 캐릭터 standing 상태
6
Project 02

SUPERNOVA
MINIGAMES

캐릭터 IP를 활용한 WebGL 미니게임 시리즈입니다.
앱 실행과 유저·랭킹 데이터 연동을 구현했습니다.

PERIOD2026.02 – 2026.04
TEAM기획 · 디자인 협업
ROLEUnity 클라이언트 개발 전담
TECHUnity 2DC#UGUIWebGLI2 Localization
7
Play

NOTE RUSH

음치인 미호가 음표를 모으며 수련한다는
설정을 리듬 액션으로 풀어낸 게임입니다.

  • 연속 음표 획득으로 피버 타임 진입
  • 운석, UFO 등 장애물을 피해 고득점 목표

ON THE RUN

사채업자에게 쫓기는 소희의 상황을 짧은 추격전으로 풀어낸 러너 액션 게임입니다.

  • 장애물 패턴에 맞춘 두 가지 조작
  • 진행에 따라 달라지는 속도
게임 종료 후 점수와 순위를 보여주는 리더보드 화면

LEADERBOARD

플레이 결과를 점수와 순위로 정리해 보여주는
두 게임의 공통 시스템입니다.

  • 상위 기록과 내 순위를 함께 표시
  • 게임 종료 후 재도전 흐름으로 연결
8
Platforms PLAY WEBGL ↗

웹은 허브에서, 앱은 게임으로 바로 실행

하나의 WebGL 빌드에서 화면 비율과 Safe Area를 감지해 PC와 모바일 UI 배치를 나눴습니다.

WEB게임 허브 → 게임 선택 → 개별 게임 실행
APP앱 → 개별 게임 URL
PC 웹의 Supernova Minigames 게임 허브
GAME HUB웹에서 게임 선택
16:9 PC 화면에서 실행한 Note Rush
PC16:9가로 화면에 맞춰 배경과 UI 확장
9:19.5 모바일 화면에서 실행한 Note Rush
MOBILE9:19.5Safe Area 대응
9
Event Flow

앱과 게임 간 이벤트 흐름

유저·랭킹 데이터는 앱이 관리하고, WebGL 게임은 플레이와 결과 계산만 담당하도록 역할을 나눴습니다.

실행 플레이 게임 오버 랭킹 설정
APPReact Native
3)기록 저장 · 랭킹 계산
1)GAME_SETTINGS 유저명 · 사운드 · Safe Area
PLAYING…
2)game_result score · playTime
4)LEADERBOARD myRank · ranking[]
settings_update 설정 변경 시 동기화
GAMEUnity WebGL
5)RANKING UI 표시
10
Project 03

3D Character
Runtime

React Native 영상통화 화면에 Unity 3D 캐릭터를 통합했습니다.
통화 상태에 따라 듣기·생각·말하기 행동을 전환합니다.

PERIOD2026.05 – 2026.07
TEAM기획 · 디자인 협업
ROLEUnity 클라이언트 개발 전담
TECHUnity 3DC#UaaLWebGLiOS · Android
영상통화 화면의 미호 3D 캐릭터
영상통화 화면의 소희 3D 캐릭터
영상통화 화면의 현주 3D 캐릭터
11
Call States

대화 상태에 따른 캐릭터 반응

통화 상태 이벤트를 하나의 캐릭터 상태로 변환해, 앱의 대화 흐름과 애니메이션 전환 기준을 맞췄습니다.

미호 standing 상태
standing대기
미호 listening 상태
listening듣는 중
미호 thinking 상태
thinking생각 중
미호 talking 상태
talking말하는 중
12
Integration

앱과 Unity를 연결한 통화 실행 흐름

화면 재진입 시 런타임과 렌더링 상태가 어긋나지 않도록 초기화·정지·재개 순서를 분리했습니다.

React Native통화 화면과 사용자 흐름
01채팅방 진입
02통화 진입
03통화 종료
Apple Android 네이티브 브리지iOS · Android앱과 Unity 요청 전달
준비 요청 전달초기화 · 캐릭터 로드
표시 요청 전달재개 · 상태 적용
종료 요청 전달정지 · 화면 해제
Unity Unity 런타임Unity캐릭터 실행과 렌더링
PREPARE
  1. 1)Prewarm런타임 초기화
  2. 2)Load캐릭터 로드
  3. 3)Pause렌더링 정지
RENDER
  1. 1)ResumeUnity 실행
  2. 2)Re-apply캐릭터 상태 재적용
  3. 3)Render ON화면 표시
STOP
  1. 1)PauseUnity 정지
  2. 2)Render OFF화면 해제
13
Project 04

BURN
MY NEST

감정 변화를 터치 인터랙션으로 풀어낸 세로형 2D 게임입니다.
탭·드래그·홀드 입력과 장면 전환 흐름을 구현했습니다.

PERIOD2026.07 – 2026.08
TEAM기획 · 디자인 협업
ROLEUnity 클라이언트 개발 전담
TECHUnity 2DC#WebGL
기억 퍼즐 장면
Burn My Nest 타이틀 화면
술잔 인터랙션 장면
14
Play PLAY WEBGL ↗

장면별 입력 방식과 완료 조건

장면마다 입력 방식은 다르지만 완료 신호는 공통 처리로 전달해, 진행 상태 저장과 다음 장면 전환을 같은 흐름으로 실행합니다.

드래그 배치드롭 영역 판정 · 스냅 배치 · 실패 시 원위치 복귀
회전 입력각도 누적 · 180° 완료 판정
퍼즐 조립조각별 위치 판정 · 전체 퍼즐 완성 조건 확인
홀드 입력누르는 시간에 따라 잔과 병의 수위를 함께 갱신
15
Project 01

Odie
Odyssey

메트로배니아 구조의 2D 액션 어드벤처입니다.
탐색 동선과 장면 연결을 설계하고 이동·전투·상호작용 시스템을 구현했습니다.

PERIOD2025.06 – 2026.01
TEAM기획 · 디자인 협업
ROLEUnity 클라이언트 개발 전담
TECHUnity 2DC#ScriptableObjectAddressablesTimelineFMODI2 Localization
16
Play

탐색·대화·전투·미니게임으로 이어지는 플레이

오브젝트 앞에서 상호작용 안내가 표시된 화면
탐색·상호작용오브젝트를 조사해 다음 장면으로 진행합니다.
광산 입구에서 진행되는 캐릭터 대화 장면
대화·컷신캐릭터 대화와 컷신으로 장면의 흐름을 연결합니다.
경광봉을 휘두르며 적과 전투하는 Odie Odyssey 플레이 화면
전투공격과 피격 뒤 넉백까지 전투 흐름이 이어집니다.
핸드카를 조작해 레일을 이동하는 미니게임 화면
미니게임특정 구간은 별도의 미니게임을 클리어하며 진행합니다.
17
Architecture

입력과 감지는 분리하고 행동은 모듈로 재사용

플레이어와 몬스터의 입력은 분리하고, 겹치는 이동·전투·상호작용은 독립 모듈로 구성했습니다.
플레이어는 입력, 몬스터는 FSM으로 같은 행동 모듈을 호출해 로직 중복을 줄였습니다.

Odie Idle 스프라이트 PLAYER
INPUTPlayerInputHandler이동 · 점프 · 공격 · 상호작용
COORDINATORPlayerController입력 전달 · 상태 전환 조정
COMPONENT CONTROLLERS
MovementJumpClimbCombatInteraction
Toad Poison Idle 스프라이트 MONSTER
SENSORSDetection Sensors발견 · 추적 · 공격 · 지면
CONTEXTMonsterAIController센서 이벤트 처리 · 상태 전환
STATE PATTERN FSM
PatrolAlertChaseAttack
플레이어와 몬스터가 공통 데이터 참조
DEFINITIONCharacterDefinitionSO행동 수치 · 전투 설정 정의
RUNTIMECharacter State현재 상태 · 체력 · 장착 무기
PERSISTENCESaveData진행도 · 체크포인트 저장
18
Combat AI

탐지부터 타격·피격까지 나눈 전투 판정

공격 모션과 실제 타격 시점이 어긋나지 않도록 탐지·공격 전환·유효 프레임 판정을 분리했습니다.
유효 프레임에서 한 번만 피해를 적용해 중복 판정을 방지했습니다.

Toad Poison 첫 번째 Idle 프레임 Odie 첫 번째 Idle 프레임
몬스터 콜라이더탐지·추적 범위와 공격 전환 조건
DetectionSensorChase추적 범위 유지
DetectionSensor최초 발견 감지
AttackRayProbe공격 전환 판단
GroundAheadProbe전방 바닥 확인
플레이어 콜라이더피격 범위와 공격 유효 프레임
PlayerHitBox피격 범위
Weapon Collider공격 유효 프레임에만 활성화
19
Level Build

Tiled 맵을 Unity 런타임 레벨로 변환

Tiled 오브젝트 속성을 포털·스폰·보상 데이터로 변환해, 맵 배치가 장면 이동과 진입 위치로 이어지도록 구성했습니다.

1)Tiled에서 전체 맵과 오브젝트 배치
Tiled에서 제작한 전체 맵 레이아웃과 포털·몬스터 스폰·보상 배치
  • 포털
  • 몬스터 스폰
  • 보상
2)Unity Tilemap과 Collider로 변환
사다리와 수직 이동 구간이 있는 Unity 장면
수직 구간Tilemap · Collider
넓은 탐색 공간과 오브젝트가 배치된 Unity 장면
탐색 구간Camera Boundary · Spawn ID
3)Spawn ID로 포털 간 장면 연결
  1. EnterPortal목적 장면 · Spawn ID 전달
  2. SceneFlowManagerFade · Additive Load 처리
  3. PortalSpawnRegistrySpawn ID 인덱싱 · 기본 위치 대체
  4. GameScene플레이어 생성·이동 · VCam 선배치
20
Runtime

장면 전환에도 이어지는 음악과 재사용 가능한 리소스

BGM은 장면이 바뀌어도 자연스럽게 이어지고, 반복 오브젝트는 캐시와 풀로 재사용하도록 구성했습니다.

ADAPTIVE MUSICFMOD
FMOD Studio에서 구성한 BGM Event의 레이어 트랙
BGM Event의 레이어 트랙과 Fade 구성
  • 같은 Event동일 GUID는 재시작 없이 유지
  • 다른 Event1초 Crossfade로 자연스럽게 전환
  • 볼륨SaveData의 Master · BGM · SFX 값 적용
RESOURCE LIFECYCLEAddressables · Pool
Unity Addressables Groups 창의 카테고리별 그룹과 PreLoad 라벨
카테고리별 그룹과 PreLoad 라벨
  • Cache동일 요청은 캐시에서 반환 · 중복 로드 방지
  • PoolPop · Use · Push로 반복 오브젝트 재사용
  • Release개별 · Label · 전체 단위로 Handle 해제
21
Project 05

CreverseCreverseWeb Games

책 한 권의 어휘를 세 가지 웹 게임으로 재구성했습니다.
외부 라이브러리 없이 개발하고 웹에 배포했습니다.

PERIOD2026.06 – 2026.07
TEAM기획 · 디자인 협업
ROLE개발 전담
TECHHTMLCSSJavaScript
Connections 단어 분류 화면
Coupang 컨베이어 분류 화면
Escape Room 방 화면
22
Play

같은 어휘를 세 가지 플레이 방식으로 재구성

같은 학습 어휘를 서로 다른 규칙과 조작으로 반복해서 떠올리도록 설계했습니다.

Connections 단어 그룹 분류 화면

Connections

16개 단어의 공통점을 찾아 네 개씩 묶습니다.
비슷한 의미를 비교하며 어휘 관계를 익히도록 구성했습니다.

규칙
오답 4회 제한 · 정답 그룹 상단 고정
구현
단어 셔플 · 힌트 · 선택/해제
Coupang 컨베이어 벨트 단어 분류 화면

Coupang

컨베이어 벨트로 들어오는 단어를 알맞은 상자에 분류합니다.
제한 시간과 점차 빨라지는 속도로 빠른 판단을 유도했습니다.

규칙
90초 제한 · 목숨 3개 · 연속 성공 시 최대 5배
구현
스폰 간격 2.6→1.2초 · 벨트 속도 75→225px/s
Escape Room 단서와 장치가 배치된 방 화면

Escape Room

방 안의 다섯 장치를 풀고 제한 시간 안에 탈출합니다.
책 속 단서를 다시 찾아 퍼즐에 적용하도록 구성했습니다.

규칙
5분 제한 · 책 원문에서 단서 탐색
구현
퍼즐 5종 · 조명 진행도 표시 · 레이어 기반 화면 구성
23
Hub OPEN GAME HUB ↗

여섯 게임을 한곳에서 선택하고 바로 실행

여섯 게임을 하나의 허브에서 선택해 바로 실행하도록 구성했습니다.
게임별 경로를 분리해 개별 수정과 추가가 서로 영향을 주지 않도록 했습니다.

cereels-dev.github.io/game-hub/
여섯 게임이 정리된 게임 허브 화면
허브에서 선택여섯 게임을 한 화면에서 탐색
games/<game>/게임별 독립 경로로 바로 실행
GitHub Pages허브와 게임을 하나의 저장소에서 배포
24
Project 06

우리집
행복한 고양이

아픈 고양이를 돌보고 치료한 뒤 입양 보내는
2D 픽셀아트 육성 시뮬레이션입니다.

PERIOD2022.12 – 2025.01
TEAM1인 개발 100%
ROLE기획 · 개발 · 디자인 · 사운드 · 출시
TECHUnity 2DC#ScriptableObjectEasy Save 3Unity AdsUnity IAPI2 Localization
우리집 행복한 고양이 타이틀 화면
25
Play

돌봄·치료·입양으로 이어지는 플레이

고양이를 수집하는 대신, 건강을 회복한 고양이에게 새 가족을 찾아주는 육성 게임입니다.

고양이를 쓰다듬어 호감도를 올리는 화면
돌보기쓰다듬고 놀아주며 먹이와 호감도를 관리
증상에 맞는 약을 골라 치료하는 화면
치료증상을 확인하고 알맞은 약을 선택해 회복
입양센터에 새로운 고양이가 등장한 화면
입양레벨이 오르면 만날 수 있는 고양이 품종 확장
  1. Room돌봄 · 방 꾸미기
  2. Hospital검진 · 치료
  3. Messenger입양 조건에 맞는 가족 찾기
  4. Adoption Center새로운 고양이 만나기
26
Solo Dev

아트와 사운드 제작부터 스토어 출시까지 1인 개발

기획·개발·아트·사운드를 혼자 맡아 Google Play 출시를 완료했습니다.

직접 제작한 아트와 사운드
Aseprite에서 부위별 레이어로 나눈 고양이 스프라이트
Aseprite눈·코·입·몸을 레이어로 분리해 다양한 고양이 조합
GarageBand에서 작곡한 BGM 트랙
GarageBandBGM과 효과음 직접 작곡·제작
출시 과정에서 해결한 문제
  • 스토어 심사 세 차례 거절광고 정책 위반 · 버튼 미작동 · 스토어 설명과 실제 기능 불일치
  • 거절 사유별 수정과 재검증5초 후 광고 스킵 보장 · Pre-launch Report 기반 UI 점검 · 실제 기능에 맞게 스토어 설명 수정
  • 출시 후 운영 기능 추가인앱 업데이트 · 다국어 지원 · 광고·인앱 결제 연동
27
Performance

CPU 연산과 Draw Call을 줄인 성능 최적화

고양이 수가 늘수록 커지던 CPU 연산과 Draw Call을 코루틴과 Sprite Atlas로 줄였습니다.

Think()고양이 한 마리의 다음 행동 결정
코루틴으로 주기 실행하도록 바꾼 고양이 행동 결정 코드
CPU행동 결정 연산
원인Update()의 매 프레임 행동 연산고양이 수만큼 반복되며 CPU 사용량 증가
해결코루틴 기반 주기 실행행동 주기를 유지하며 호출 횟수 감소
RENDERDraw Call
원인스프라이트별 개별 텍스처 사용Batch가 40 이상으로 늘며 렌더링 부담 확대
해결Sprite Atlas로 텍스처 통합고양이·아이템·UI·배경을 묶어 Batch 감소
28
Thank You

이은빈 · Game Client Developer
bin7342@gmail.com

29