카테고리

쿠펭 36

  • 가구를 들고 벽으로 걸어 들어가면 가구가 벽을 파고들었다. 벽 차단 코드는 이미 있었고, 낮게 든 가구를 통째로 건너뛰는 조건과 접점 높이로 히트를 버리는 필터가 구멍이었다. 이어서 반동이 흔들림으로 남는 문제와 벽 앞에서 가구가 떠오르는 문제를 함께 고쳤다.

  • 협동으로 가구를 분해하면 상대방의 미니게임 판이 검은 사각형으로 뜨고 게이지가 두 겹으로 보였다. 표시 공간을 통일하고 '이 판을 그릴 컴포넌트'를 대상당 하나로 고르니 퍼센트가 어긋나던 것까지 같이 사라졌다.

  • 운반 게임의 도구 6종이 GAS 위에서 어떻게 도는지 코드 실측으로 정리했다. 어트리뷰트셋은 하나도 없고, 상태는 복제 변수가 쥐고, 능력은 자격 판정과 행위만 맡는 구조다.

  • 가구가 물·불·전기 사고로 망가지는 시스템을 붙였다. 파손을 일으키는 원인은 넷인데 결과를 내는 자리는 하나로 모으고, 사고 종류는 설정값이 아니라 대상이 무엇인가로 갈랐다.

  • 드라이버로 가구를 분해하고 렌치로 고치는 미니게임을 붙였다. 입력·운반·적재 판정이 이미 있는 프로젝트라, 설계의 대부분은 '무엇을 새로 만들지 않을까'를 정하는 일이었다.

  • 가구를 든 채 계단 앞에 서면 전진이 멈췄다. 상한을 두 번 올려도 안 됐고, 상한을 조건부로 푸는 것으로 풀렸다. 그다음엔 오르긴 오르는데 멈칫거리는 문제가 남았다.

  • 가구를 잡는 순간 몸 앞에서 빙글 도는 결함을 세 번에 나눠 고쳤다. 매번 다른 자리였지만 원인은 같은 종류였다 — 회전을 어느 기준에서 재고 있었는가.

  • 기존 기능 자동 검사 371항목이 전부 통과한 뒤에도 두 건이 남아 있었다. 판이 시작된 뒤 들어온 클라이언트에게만 가구가 옛 자리로 보이고 손에 든 아이템이 스케일 0으로 깨졌는데, 원인은 둘 다 '알리기'와 '상태로 두기'를 구분하지 않은 것이었다.

  • 방코드 하나로만 돌던 세션 계층에 친구 초대와 방찾기를 얹었다. 방코드용으로 켜 둔 설정이 초대 조건을 이미 채우고 있었다는 발견과, 검색 필터를 클라이언트로 넘긴 판단.

  • 슬라이드를 기능 목록으로 채우면 게임의 톤이 사라진다. 발표 자료 전체에 택배 브랜드 아이덴티티를 씌워 성격을 표지에서부터 드러내고, 26슬라이드 흐름과 브로셔 구조를 잡았다.

  • 레벨에 걸려 있는 셀 셰이딩 포스트 프로세스와 툰스카이 머티리얼을 에디터에서 열어, 노드 체인과 인스턴스 파라미터를 그대로 옮겨 적었다. 접었던 PP 림라이트·아웃라인 실패 기록까지.

  • 셰이더를 만드는 것과 팀 게임에 정착시키는 것은 다른 일이었다. 팀원 재질 수백 개를 하나도 고치지 않고 레벨 전체에 필터를 거는 대신, 나눗셈 노이즈 증폭과 미연결 머티리얼 입력이 터졌다.

  • Tripo로 생성해 리깅한 펭귄을 FBX로 뽑아 Blender에서 스켈레톤과 텍스처를 확인하고, 텍스처를 파일에 내장해 재익스포트했다. '정말 들어갔는가'를 세 가지 방법으로 검증한 기록.

  • 서로 다른 리그 사이의 리타게팅이 무너져 한 번 우회했던 문제를, 리그 자체를 다시 만들어 정면으로 풀었다. 표준 휴머노이드 리그를 입히고 IK 리타게터·블렌드스페이스·ABP로 이어지는 구조까지.

  • 로비 대기 중에 다음 스테이지를 미리 로드하면 로딩이 짧아진다 — 그렇게 넣은 최적화가 게임 입장 자체를 막았다. 프리로드는 성공하고 있었고, 문제는 트래블의 맵 로드와 같은 패키지를 두고 부딪힌 것.

  • 레벨 조명을 굽자 벽이 탄 것처럼 얼룩덜룩해졌다. 원인은 하나가 아니라 셋이었고 전부 라이트맵이 참조하는 데이터 쪽에 있었다. 셋을 다 고친 뒤에도 남은 노이즈와, 굽지 않기로 한 결론.

  • 클라이언트에서만 전진이 사선으로 휘거나 벽처럼 막혔고, 카메라를 급회전하면 가구가 몸을 뚫었다. 같은 반경을 서로 다른 자로 재고 있었던 것과, 성분 보간이 0점을 관통하는 문제.

  • 공동 운반의 러버밴딩은 튜닝 문제가 아니라 이중 보정 구조 자체가 원인이었다. 되끌어오는 견인을 걷어내고 입력 단계에서 이탈 성분만 지우자 서버와 클라가 같은 결론에 도달했다.

  • 어떤 가구는 트레이스에 안 잡히고, 바닥에 1uu 박힌 가구는 조작을 얼렸다. 무엇보다 '서버는 원격 폰 속도에 손대지 않는다'는 원칙이 정작 견인을 무효로 만들고 있었다.

  • 가구를 들고 걸으면 캐릭터가 순간이동하듯 튀었다. 값을 아무리 조정해도 안 잡힌 이유는 캐릭터 무브먼트가 끝낸 예측 위에 서버가 한 번 더 손을 대는 구조였기 때문. 회전 기준도 몸으로 옮겼다.

  • 에디터에서 되는 것과 패키징된 빌드에서 되는 것은 다른 문제다. 같은 프로젝트를 세 번 패키징하며 실패 원인을 하나씩 걷어내고, 에러 억제 플래그 없이 클린 패키징에 도달한 기록.

  • 수식으로 그린 툰 하늘은 Unlit 이미시브 돔이라 레벨의 태양을 모른다. 그 사이에 다리를 놓아 낮→황혼→밤을 잇고, 팀원 파일을 한 줄도 고치지 않은 채 사운드·이펙트를 얹은 관찰 기반 설계.

  • 플레이 구역 밖으로 못 나가게 막으면서 그 너머가 비어 보이지 않아야 했다. 바리케이드와 원경 임포스터로 가장자리를 채우고, 아웃라인을 볼륨 안쪽에만 그려 배경에 선이 번지지 않게 했다.

  • '지금 뭘 잡을 수 있는지 안 보인다'는 피드백. 패스를 하나 더 얹는 대신 이미 있는 아웃라인 머티리얼 안에서 세피아 외곽선과 노란 링을 같이 그렸고, 화면 가장자리 점선 아티팩트도 잡았다.

  • 도시도 나무도 만화풍인데 하늘만 사실적인 볼류메트릭 구름이었고, 이 하늘은 포스트 프로세스 툰 셰이딩으로 잡히지 않는다. 그 이유와, 스카이돔을 대체한 8단계 노드 그래프.

  • 에디터 두 창에서 되던 멀티플레이가 PC 두 대에서는 하나도 되지 않았다. 방코드 생성부터 P2P 접속·로비 합류·게임 진입까지, 문제→로그→가설→수정 사이클을 일곱 번 돌린 기록.

  • 가짜 데이터로 잘 돌던 세션 UI를 실제 Steam 세션에 붙이자, 화면이 아니라 매칭 방식을 다시 봐야 했다. 방 코드 도입과, 원인을 추측하다 시간을 버린 빌드 경고 C4458.

  • 이미 올라간 커밋 메시지를 규칙에 맞게 고치려다 히스토리 재작성과 언리얼 에셋 참조가 한꺼번에 얽혔다. 커밋을 일괄로 다시 쓰는 대가와, 끊어진 레벨 에셋 참조를 되살린 과정.

  • 패키징 단계에서 처음으로 빌드가 멈췄고, 고쳐서 실행 파일을 뽑아도 Steam 세션이 붙지 않았다. 에디터에서 실행 파일까지 가는 길을 뚫고, 그 사이 어긋난 팀 브랜치를 되돌린 기록.

  • 여러 명이 가구 하나를 드는 게임에서 이동을 클라이언트가 계산하면 화면마다 가구 위치가 달라진다. 코드 전에 복제 표준부터 정한 이유와, 에디터를 막던 BuildId 불일치.

  • 각 문서는 멀쩡한데 합쳐 놓으면 서로 다른 말을 한다. 흩어진 기획안을 하나로 통합하며 드러난 충돌을 덮지 않고 표면에 올려 결정받고, 시안용 이미지와 구현 룩을 분리한 판단.

  • 언리얼은 바이너리 에셋이 많아 머지 충돌 하나가 파일을 통째로 못 쓰게 만든다. 첫 커밋 전에 .gitignore에서 무엇을 왜 빼는지 정하고, 도메인별 소유권과 develop 완충 브랜치까지 세웠다.

  • '아슬아슬하게 함께 든다'는 말로 적힌 채로는 구현자마다 다른 게임이 된다. 어느 각도에서 놓치는지, 속도가 얼마나 어긋나면 흔들리는지를 수식과 튜닝 표로 못 박고 수용 기준까지 정했다.

  • 무거운 가구를 둘이서 들고 계단을 내려가는 장면 하나로 게임이 성립할까. One Pager와 코어 루프로 범위를 닫고, 협동 운반을 어떤 규칙으로 만들지 인게임 시스템으로 푼 기획안.

  • 협동 게임 제안에서 출발했는데 결론은 서로를 의심하는 포렌식 추리 게임이었다. 논의를 붙잡은 기획 프레임워크와, 보상 설계를 현상금 표에서 이진 승패로 단순화한 근거.

  • Ch4 팀플 기획 브레인스토밍 — 튜터님 제안 협동+마피아에서 출발해 포렌식 소셜 추리 'TRACE' 컨셉에 도달한 과정과 스코프·리스크 정리.