2024/04/23 16:48 KST
지난 월요일(2024/04/22), 기획자님이 가족 여행 관계로 휴가를 가 계시는 와중에 업데이트를 진행할 일이 생겼습니다.
업데이트 내용은 대략 다음과 같았습니다:
새로 만든 펫들 추가
게임 내 오브젝트들의 배치 변경
UI에서 기타등등 편의성 기능들 작업
코드상 특별히 민감한 부분이 바뀐 점은 없었고 단순 데이터 변경, 오브젝트 배치 변경 등이 주된 내용이어서 가벼운 마음으로 라이브에 배포를 하고 왔습니다.
10분 뒤, 제주도에서 기획자님이 버그가 생긴 것 같다며 급하게 연락을 하셨습니다.
갑자기 모바일 환경에서 UI 텍스트들이 깨지기 시작했습니다. 그것도 특정 UI만 깨지는 게 아니라 모든 월드 좌표 UI들에 대해 이 현상이 발생하기 시작했습니다. (테스트를 PC로 진행했던 탓에 전혀 확인하지 못했습니다.)
팀장님이 PC 접속을 끊고 본인 휴대전화로 테스트한 결과 같은 현상을 확인할 수 있었고, 갑자기 발등에 불이 떨어진 저는 버그 발생 원인을 급하게 확인해야 했습니다.
이쯤에서 로블록스 프로젝트들의 툴체인에 대해 설명해야 할 것 같습니다.
로블록스는 기본적으로 외부 코드 에디터를 지원하지 않고 파일 시스템을 사용하지도 않습니다. 프로젝트 내 모든 변경사항은 로블록스 클라우드에 저장되며 파일 형태로 나오지 않아 Git 등 버전 관리 시스템으로 추적할 수 없습니다. 대신 로블록스 클라우드가 자체적으로 버전 관리를 하긴 하는데, Ctrl+S를 누른 시점을 기준으로 버전이 나눠져서 예전 버전을 불러올 수 있는 기능이 있습니다.
일단 버그가 UI쪽에서 생겼으니 당연히 UI에 생겼던 변경사항들을 제일 먼저 의심할 수밖에 없고, 일단 해당 코드들만 모두 롤백한 상태에서 테스트를 해 봤지만 버그는 여전했습니다.
전혀 감이 잡히지 않아 이 회사에서 제일 오래 로블록스 개발을 한 선배님께 질문을 드렸지만 본인도 처음 보는 버그라는 답변만 들을 수 있었습니다.
결국 '어디서 문제가 생겼는지 모르겠다. 예전부터 있었던 문제인지를 확인하기 위해 개발 서버를 지난 주 금요일 버전의 빌드로 롤백하겠다' 선언을 했습니다.
버그는 없었습니다. 일단 지난 주 금요일 ~ 이번 월요일 사이에 생긴 버그인 것은 확실해 보입니다. 하지만 무엇이 문제인지는 전혀 알 수 없는 상황이었습니다. (하필이면 제 휴대폰으로는 버그 재현이 안 됐던 탓에) 팀장님께 양해를 구하고 지금부터 어느 버전에서 버그가 생겼는지 업다운으로 알아내야 한다고 말씀을 드렸습니다.
지난 금요일부터 월요일까지 Ctrl+S가 눌린 횟수는 총 39번입니다. 업다운 게임 하는 식으로 절반씩 경우의 수를 줄이면 대략 5번의 테스트 안에 어느 버전에서 버그가 생겼는지를 알아낼 수 있습니다. 그렇게 저는 그 날 총 4번의 업다운을 진행하게 되었습니다...
문제가 생긴 버전은 #2457이었습니다. 게임 내 로비 공간에 있는 오브젝트들의 배치를 변경한 버전이었는데, 쌈박하게 오브젝트들을 하나씩 예전 버전으로 돌리고 테스트를 진행하며 어느 시점에 버그가 사라지는지 지켜봤습니다.
그다지 오래 걸리지 않았습니다. 게임 내 플레이어들의 랭킹을 표시해주는 빌보드를 예전 위치로 옮기자마자 버그가 사라졌습니다.
중요한 점은, 이 버전과 이전 버전의 랭킹 빌보드의 다른 점이 위치와 크기밖에 없었다는 것입니다.
진짜로 Scale 늘리고 Position 옮긴 게 다였습니다. 코드는 건드린 적도 없고 하이어라키 같은 게 특별히 바뀐 것도 아니었습니다.
그런데 버그가 사라졌습니다...
오브젝트 배치를 바꾼 것만으로 버그가 사라졌다니 정말 말도 안 되는 상황이지만, 말이 안 되고 자시고 일단 버그가 사라진 것은 저도 확인하고 팀장님도 확인한 사실이니 원인규명은 미뤄두고 일단 저 빌보드만 교체한 상태로 라이브에 올리기로 했습니다.
빌보드를 교체한 버전의 라이브는 신기하리만치 멀쩡했습니다.
버그가 사라져서 일단 기쁘기는 한데, 대체 왜 오브젝트 크기, 위치가 바뀌었다는 이유만으로 이런 버그가 발생한 걸까요? 내부 구조가 전혀 공개되지 않는 플랫폼 특성상 그 원인을 정확히 규명하기는 어려울 것입니다.
이런 '블랙 박스'가 존재하는 환경에선 유독 프로그래머들 사이에서 이런저런 샤머니즘, 토테미즘적 미신이 생기곤 하는데, 저는 사실 이런 주술적인 행위를 별로 신뢰하지 않았습니다.
하지만 이제부터 이 녀석이 저의 싸이버 디버그 신사이며, 누구라도 이 디버그 신사를 건드리거나 위치를 옮기려고 하는 자가 있다면 저는 풍수지리든 사주명리학이든 암흑부두주술이든 뭔가 초자연적인 힘을 사용해서 아무도 디버그 신사를 건드리지 못하게끔 할 것입니다.
-끝-