About

  • Phone: +1 206-228-3400
  • City: Seoul, Gwanak-gu
  • Email: wod6983@gmail.com

Game programmer focused on practical gameplay systems, rendering fundamentals, and release workflow. I value clear architecture, measurable improvement, and reliable collaboration from prototype to shipping.

Selected Projects

콘솔 뱀서라이크

GitHub 보기 | 회고록 보기 | 개발 기록 보기

기간: 2026.02.05 ~ 2026.02.11 | 역할/팀: 개인 프로젝트

  • 프로젝트 초점: 아이디어 검증부터 플레이 가능한 프로토타입까지 1주 스프린트 진행
  • 강조 포인트: 기술 구현 및 개발 간 기록 남기기
기록 보기 (임시)

1. 프로젝트 개요

  • 콘솔 뱀서라이크 게임 데모
  • 자체 엔진 기반 Player/Enemy/Bullet, 스탯, 카메라, Object Pooling, Quadtree, 구현 과정 경험 및 문서화 목표

주요 기능

  • 충돌 처리: Quadtree 공간 분할 후 AABB 적용
  • 오브젝트 풀링: Exp Gem/Enemy/Bullet 반복 할당 필요 메모리 공간 미리 할당
  • 카메라/월드 확장: 스크롤링 카메라, 잔디 타일링
  • 디버그 모드: 화면에 Quadtree 디버그 라인 표시
  • 문서화: Obsidian 기반 개발일지/체크리스트/이슈 로그
  • Git 전략: 잦은 커밋으로 빠른 롤백, 솔로 프로젝트로 브랜치 미사용
  • 이슈 트래킹: 체크리스트 + 날짜별 로그 + 이슈 분류

2. 아키텍처 및 워크플로우

아키텍처 특징 및 설계 의도

  • 게임 루프: GameLevel 중심 루프, Actor 리스트 순회 Tick/Render 수행
  • 스탯 공통화: IStatHolder 인터페이스 + Stat struct로 Player/Enemy 스탯 접근 통일
  • 확장성: Object Pooling으로 생성/삭제 비용 및 단편화 리스크 감소
  • 충돌 최적화: AABB 유지 + Quadtree 확장 구조로 단계적 최적화
  • 검증: 디버그 모드(좌표/쿼드트리 테스트)로 통합 과정 검증

3. 주요 작업

  • 오브젝트 풀링: Enemy/Gem/Bullet 재사용 구조 구현, prewarm 적용 후 메모리 무한 증가 이슈 분석 및 수정
  • 충돌 처리 최적화: AABB 구현 후 Quadtree 도입, 디버그 함수화, 활성 객체 필터링 및 Query 사용 방식 정리

4. 문제 해결 및 기술적 도전

  • 이슈 1: 오브젝트 풀링 이후 메모리 무한 증가 → GameLevel hasBeginPlay 분리로 초기화 1회 보장
  • 이슈 2: Quadtree 전환 후 메모리 에러/충돌 누락 → Actor 활성 필터링 + Query 흐름 재정리
  • 의사결정: A* 시도 후 방향벡터 추격으로 전환, swap-pop으로 O(1) 삭제, raw pointer 소유권 규칙 문서화 필요성 확인
  • 개선 아이디어: 타일맵/장애물 기반 A* 재적용, Enemy 간 충돌 Layer 적용, 소유권/해제 책임 명문화

5. 결과 및 회고

  • 결과: 핵심 시스템 통합 완료(Player/Enemy/Bullet, HP/EXP/레벨업, Pause UI), Object Pooling/Quadtree/스크롤 월드 구현
  • 성과 지표: Stress Test에서 FPS 저하 체감 없음, vector 삭제 O(N) → swap-pop으로 O(1) 최적화, 메모리 무한 증가 버그 해결
  • 임팩트: 대량 객체 처리 + 충돌 최적화 + UI/pause + 스탯 시스템 하나의 루프 통합
  • 회고: 엔진 루프 관점 디버깅 역량 강화, 정규화/형변환/const/링킹 등 기본기 이슈 케이스 축적
  • 다시 한다면: FPS/메모리 측정 루틴 내장, Quadtree 소유권 문서화, 초기화 루틴 1회 보장 구조 고정

프로파일링

  • FPS 출력
  • Quadtree 적용 전/후
  • Stress Test 조건 화면
  • Object Pooling 전/후 프로세스 메모리 변화 비교

프로젝트 회고

잘한 점

  • 문서화와 커밋 전략 꾸준히 유지
  • Quadtree 시각화
  • 프로파일링 진행
  • 스탯 구조 간소화 유지

부족한 점

  • 기술 구현 집중으로 게임성 개선 시간 배분 미흡
  • 프로파일링 요소로 FPS만 고려해서 정확도 떨어짐

소감

  • 엔진의 큰 그림 이해
  • 기록의 중요성 체감
  • 원하는 기능 직접 구현 경험
Rolling Snow gameplay

눈덩이를 굴려라

Google Play에서 보기

기간: 2025.12 ~ 현재 | 역할/팀: 게임 프로그래머 / 2인 팀

  • 핵심 과제: 직접 기획부터 출시까지 경험하며 문제들 겪어보기
  • 출시 결과: 스토어 출시 완료, 랭킹 시스템 설계중
  • 기술 스택: Unity, C#, Figma
출시 관련 정리
  • 배포용 빌드 설정과 릴리즈 검증 기준 정리
  • 문제 상황: 에디터/개발 빌드에서는 정상 동작, Google Play 배포용(프로덕션) 빌드에서 일부 기능 동작 차이 발생
  • 원인 분석: 디버그 환경 중심 검증 습관으로 릴리즈 환경 설정 차이(Player Settings, 권한, 압축, 스크립팅 백엔드 등) 검증 부족. 프로덕션 배포 시 필수인 버전 코드 증가 규칙 관리 기준 부재. 버전 관리 기준 불일치로 배포 과정 복잡도 증가
  • 해결 방법: 개발 빌드 / 릴리즈 빌드 체크리스트 분리. 플랫폼별 Player Settings 점검 항목 문서화. 실제 배포 환경 기준 테스트 루틴 구성. 프로덕션 배포 시 버전명 / 버전코드 증가 규칙 정리 및 배포 절차 표준화
  • 결과 / 배운 점: 배포 전 검증 과정 표준화. 에디터 기준이 아닌 릴리즈 기준 검증 습관 형성. 버전 관리 규칙 정리로 배포 실수 감소 및 패치 대응 속도 향상
  • 광고 SDK 연동과 Google Play Console 설정 대응
  • 문제 상황: 광고 연동 과정에서 광고 호출 실패 발생. 배포 심사 및 운영을 위한 Console 설정 항목 정확 대응 필요. 일부 구간에서 광고 노출 타이밍으로 게임 흐름 단절 발생
  • 원인 분석: 광고 로드 여부 확인 없는 호출 로직. 게임 상태와 광고 상태 분리 부족. Google Play Console 광고 관련 설문/앱 정보 입력, AdMob App ID / 광고 단위 ID 등 운영 설정 이해 및 관리 부족
  • 해결 방법: Google Play Console 광고 관련 설문/정책 항목 검토 및 정확 기입. AdMob App ID, 광고 단위 ID 환경별 정확 설정. 광고 로드 상태 확인 후 광고 호출 구조로 수정. 게임 오버 / 재시작 흐름과 광고 노출 정책 분리. 광고 호출 실패 시 게임 진행 유지용 대체 흐름 구성
  • 결과 / 배운 점: 광고 호출 안정성 개선. 수익화 기능의 UX 관점 설계 기준 정립. SDK 연동을 넘어 Console 설정 및 운영 단계 포함한 출시 대응 경험 확보
  • Figma-Unity 협업 파이프라인 정리
  • 문제 상황: 디자인 시안의 Unity UI 반영 과정에서 수작업 연결 증가. UI 반영 속도 저하 및 협업 커뮤니케이션 비용 증가
  • 원인 분석: 디자인 산출물 네이밍 규칙 비통일. Unity 컴포넌트 연결 비효율 및 반복 작업 증가
  • 해결 방법: Figma→Unity 연동 플러그인 기반 워크플로우 적용. UI 요소명 네이밍 컨벤션 정리 및 용도 중심 명명 규칙 통일. 예: 버튼 요소명 Button 계열로 통일. Unity에서 네이밍 기준 기반 컴포넌트 연결 규칙 정렬
  • 결과 / 배운 점: UI 반영 속도 및 협업 효율 개선. 디자인-개발 전달 비용 절감을 위한 네이밍 규칙/구조 설계 중요성 체감. 협업 품질의 핵심 기준으로 툴보다 규칙 일관성 확보
  • 출시 후 버전 관리와 패치 대응 체계화
  • 문제 상황: 수정 사항 증가에 따른 버전별 변경 내역 추적 어려움. 회귀 버그 대응 시간 증가
  • 원인 분석: 변경 기록 기준 부재. 커밋 / 릴리즈 노트 관리 방식의 일관성 부족
  • 해결 방법: 기능 / 버그 / 개선 단위 커밋 기준 정리. 버전별 변경 사항 템플릿 운영. 배포 전 체크리스트 + 릴리즈 로그 작성 흐름 정착
  • 결과 / 배운 점: 회귀 버그 추적 속도 향상. 기록 기반 협업 품질 및 유지보수 품질 개선 체감. 출시 이후 운영 단계까지 고려한 개발 습관 형성
코드 보기
// Example: coroutine-based state control
IEnumerator Invincible(float duration)
{
    playerState.IsInvincible = true;
    yield return new WaitForSeconds(duration);
    playerState.IsInvincible = false;
}
Shading Project demo

Shading Project

데모 영상 보기

기간: 2024 (학업 프로젝트), 개인 프로젝트 | 역할/팀: 그래픽스 프로그래머 / 2인 팀

  • 기술 초점: 디퍼드 셰이딩 이해, G-buffer 이해, 내적/외적 이해, 렌더링 파이프라인 이해
  • 그래픽 주제: 반사 벡터 계산, 큐브맵 텍스처 샘플링을 통한 환경 반사 동적 표현
  • 결과물: 셰이딩 데모 및 시각 비교 샘플 구성
  • 기술 스택: C++, OpenGL, GLSL, ImGui
코드 보기
// Example: fragment shader stylized lighting
vec3 N = normalize(normal);
vec3 L = normalize(lightDir);
float ndotl = max(dot(N, L), 0.0);
float toon = step(0.5, ndotl);
vec3 color = baseColor * mix(0.35, 1.0, toon);

Skills

Languages and Databases

Engines

Tools and APIs

Experience & Education

Wanted Potenup Game Development Track

January 19 - Present

(간단한 설명은 추후 추가 예정)

Teaching Assistant

August 2019 - August 2019

ProjectFun K-12 program in Digipen

  • Assist 10 students in the game project class and held office hours every day
  • Made a sample project with a custom engine and showed it to the students for the professor to use it as a presentation

Military service

Aug 2019 - March 2021

Republic of Korea

  • Discipline the recruit in Army Recruit Training Center and was discharged as a sergeant

Education

Bachelor's Degree in Computer Science in RTIS Simulation

Credit: 4.0 / 4.5

March 2018 - August 2024

Bachelor's Degree in Computer Science in RTIS

Credit: 3.7 / 4.0

August 2022 - April 2024

Language & Certificates

OPic certificate

OPic(영어)

Intermediate High(IH)

Date: August 12, 2024
Engineer Information Processing

정보처리기사

Date: June 13, 2025
ADsP

데이터분석 준전문가(ADsP)

Date: June 13, 2025

Contact

My Address

서울특별시 관악구

Social Profiles

Email

wod6983@gmail.com

Contact

+1 206-228-3400