Blog,
만들면서 배운 것들을 짧고 선명하게 남깁니다. 코드와 화면 사이에서 오래 고민한 흔적을 모으는 공간입니다.
보스가 공격할 때마다 커졌다 작아지는 버그, 범인은 스프라이트가 아니라 보정 코드였다
2D 액션 게임의 보스가 특정 공격 순간에만 갑자기 부풀었다가 돌아왔습니다. 스프라이트를 의심하고, 프레임 높이를 전부 재측정하고, 결국 예전에 문제를 덮으려고 넣었던 보정 코드가 진범이라는 걸 알아내기까지의 기록입니다. 증상을 덮는 코드는 원인이 사라지는 순간 새 버그가 됩니다.
보스를 2배로 키웠더니 좌표가 전부 거짓말을 하기 시작했다
스프라이트 배율 하나를 바꿨을 뿐인데 공격 판정이 빗나가고, 등장 이펙트가 공중에 뜨고, 안내 프롬프트가 하늘에 걸리고, 카메라 줌에 미니맵이 화면 밖으로 밀려났습니다. 전부 다른 버그처럼 보였지만 원인은 하나였습니다. 좌표를 넘길 때 그 좌표가 무엇의 기준인지 아무도 묻지 않았던 것.
총 스킬이 앞으로 안 나가요, 제자리 판정 상자와 한 장짜리 스프라이트
관통탄, 총검돌격, 확산탄. 총 스킬 세 개가 전부 발사되는 시늉만 하고 아무것도 날아가지 않았습니다. 원인은 두 겹이었습니다. 판정 상자에 속도가 없었고, 스프라이트 시트는 여러 프레임짜리 원본에서 한 장만 잘려 들어가 있었습니다. 판정과 그림을 함께 고치고, 자동 추출 대신 사람과 규격을 협상하기까지의 기록입니다.
가짜로 흘러가던 방송 채팅을 진짜 디스코드로 바꿨다
e스포츠 경매 방송 화면의 채팅 패널은 그동안 랜덤 템플릿을 뿌리는 클라이언트 시뮬레이션이었습니다. 이걸 실제 디스코드 채널을 그대로 비추는 읽기 전용 미러로 바꾸면서, 방향을 정하고·수신 방식을 고르고·채팅을 경매 상태에서 분리하고·봇이 없을 때를 대비하기까지의 설계 과정을 정리했습니다.
빌드가 멈춘 줄 알았는데 범인은 iCloud였다
Electron 데스크톱 앱을 패키징하는데 electron-builder가 출력 없이 멈췄습니다. require 추적, 네이티브 스택 분석, 세 번의 헛다리를 거쳐 진짜 원인 — iCloud로 동기화되던 node_modules — 에 도달하기까지의 전체 디버깅 기록입니다.
90% 줌 없이 보이는 포트폴리오로 다듬기
해상도마다 달라지던 비율 문제를 잡고, 모바일 대응과 블로그 탭, About 점 네비게이션을 추가하며 배운 점을 정리했습니다.
쫀득한 커스텀 커서를 만들었다
점과 링 두 겹으로 만든 커서 팔로워 — GSAP ticker, 속도 기반 squash & stretch, 호버 반응까지 직접 다듬은 과정입니다.
풀스크린 프로젝트 패널을 만들며 배운 것
프로젝트 페이지를 단순 목록이 아니라 하나의 전환 경험으로 만들면서 고민한 구조와 애니메이션 기록입니다.
좋은 모션은 얼마나 움직여야 할까
GSAP을 쓰면서 애니메이션의 양보다 타이밍, 순서, 멈춤이 더 중요하다는 걸 배운 메모입니다.
Emotion으로 페이지의 결을 맞추기
About, Projects, Contact, Blog가 서로 다른 화면이어도 같은 포트폴리오처럼 느껴지게 만든 스타일 규칙들입니다.
코드와 일상 사이의 리듬
하루를 너무 생산성으로만 보지 않으려는 작은 기록입니다. 개발하는 시간과 쉬는 시간을 같은 사람의 리듬으로 묶어보았습니다.
Eunsik Woo
배운 내용을 그냥 지나치지 않기 위해 기록합니다. 구현 과정의 선택, 막혔던 지점, 다시 읽고 싶은 생각들을 블로그에 차곡차곡 남깁니다.