오후 3시, 밸런스 테스트의 지루함

오후 3시, 밸런스 테스트의 지루함

오후 3시, 밸런스 테스트의 지루함 50번째 클리어 오후 3시. 같은 보스 앞에 섰다. 49번 잡았다. 한 번 더. 엑셀 시트에 숫자가 쌓인다. 클리어 시간, 남은 HP, 사용한 포션 개수. 49줄이 채워졌다. 마지막 한 줄이 남았다. "이번엔 3분 12초네." 혼잣말이다. 팀장이 요청했다. "보스 클리어 시간 3분 내외로 맞춰주세요. 너무 빠르거나 느리면 안 돼요." 기획 의도란다. 지금까지 평균 3분 8초. 최단 2분 54초, 최장 3분 26초. 범위 안이다. 문제없다. 근데 50번을 왜 하냐고? 표본 수래. 통계적 의미래. 기획자가 말했다. "최소 50회는 해야 신뢰할 수 있어요." 신뢰. 웃긴다. 나는 이 보스 패턴을 꿈에서도 본다.점심 먹고 졸리다 사실 졸음이 제일 큰 적이다. 점심 먹으면 무조건 온다. 회사 구내식당. 오늘은 제육볶음이었다. 맛있었다. 근데 먹고 나니까 눈이 감긴다. 커피 마셨다. 세 번째다. 오전에 두 잔, 점심 후 한 잔. 그래도 졸리다. 보스가 패턴 1번을 쓴다. 전방 범위 공격. 옆으로 피한다. 자동이다. 몸이 기억한다. 패턴 2번. 돌진. 뒤로 구른다. 역시 자동. 패턴 3번. 전체 광역기. 무적 스킬 쓴다. 타이밍 완벽하다. 정신은 딴 데 가 있다. 손만 움직인다. 이게 3년 차의 경지다. "아." 깜빡 졸았다. 캐릭터가 죽었다. 51번째 시도가 됐다. 엑셀 시트에 'FAIL - 졸음'이라고 적었다. 이것도 데이터다. 기록은 철저히.확률이 안 맞는 것 같은데 52번째 도전. 아니, 51번째 성공이다. 실패는 빼고. 근데 뭔가 이상하다. 레어 아이템 드롭률. 기획서에 '5% 확률로 전설 무기 드롭'이라고 적혀 있다. 51번 잡았다. 드롭 2번. 2/51 = 3.9%. 5%가 아니다. "이거 확률 이상한데." 팀장한테 말했다. "표본 수가 적어서 그래요. 더 해봐요." 더? 몇 번을 더? "100번 정도요." 100번. 웃긴다. 오늘 50번 하는 데 4시간 걸렸다. 100번 하려면 8시간이다. "오늘 못 끝내도 돼요. 내일 이어서 해요." 내일도. 이 보스를. 100번. 마우스를 쥔다. 53번째 시도. 시작 버튼을 누른다. 보스가 등장한다. 같은 대사를 한다. "네놈이 감히!" 52번 들었다. 패턴이 시작된다. 1번, 2번, 3번. 자동이다. 머리는 비어 있다. 손만 움직인다. 화면을 본다. 안 본다. 차이가 없다.3분 10초의 의미 60번째 성공. 드롭 3번. 5%. 아직도 안 맞는다. 팀장한테 또 말했다. "코드 확인해봤어요? 확률표 잘못 들어간 거 아니에요?" 팀장이 개발팀에 물어봤다. 답이 왔다. "확률 맞습니다. 난수 생성기 정상입니다." 정상. 그럼 나만 이상한 건가. "100번까지 채워봐요. 그때도 이상하면 재확인할게요." 결국 나다. 100번 채우는 건 결국 내 몫이다. 시계를 본다. 오후 5시. 퇴근까지 2시간. 40번 남았다. 못 끝낸다. 당연히. "내일 아침에 이어서 할게요." 팀장이 고맙다고 했다. "고생 많아요." 고생. 맞다. 고생이다. 근데 이게 내 일이다. 게임 QA. Quality Assurance. 품질 보증. 품질을 보증하려면 숫자가 필요하다. 데이터가 필요하다. 반복이 필요하다. 재미는 필요 없다. 61번째 시도. 마우스를 잡는다. 시작. "네놈이 감히!" 60번 들었다. 39번 더 들을 것이다. 정신이 어디 갔지 70번째쯤. 정확히는 모른다. 숫자를 세는 것도 귀찮다. 엑셀이 알아서 센다. 나는 그냥 한다. 클릭, 스킬, 회피, 공격. 반복. 보스 HP가 깎인다. 같은 속도로. 3분 5초. 3분 12초. 3분 8초. 다 비슷하다. 기획 의도에 맞다. 근데 재미가 없다. 당연하다. 70번 하면 재미없다. 유저들은 한 번 잡는다. 많아야 세 번. 그들에겐 재미있을 것이다. 나는 70번 잡는다. 나한텐 재미없다. 이게 직업의 차이다. 유저는 게임을 즐긴다. 나는 게임을 확인한다. 즐기는 게 아니다. 검증한다. 측정한다. 기록한다. 재미는 유저 몫이다. 나는 숫자만 보면 된다. 그래도 가끔 생각한다. 나도 예전엔 게임이 재미있었는데. 입사 전엔 RPG 광이었다. 보스 잡는 게 즐거웠다. 지금은? 보스가 그냥 데이터 샘플이다. "크리티컬 발동률 확인 부탁드려요." 오후 6시. 또 요청이 들어왔다. 크리티컬. 치명타. 기본 20% 확률. 이것도 100번 해야 하나? 팀장한테 물었다. "50번만 할게요." "30번만 해도 돼요. 크리티컬은 체감이 중요하니까." 30번. 감사합니다. 80번째 보스. 30번의 크리 확인. 110번. 오늘 못 끝낸다. 내일도 이 보스 퇴근 시간. 7시. 100번 중 82번 채웠다. 18번 남았다. 드롭은 4번. 4.87%. 여전히 5%보다 낮다. 내일 아침에 18번 더. 그럼 100번 완성. 그 다음엔? 크리티컬 30번. 그 다음엔? 또 다른 테스트. 이 보스는 한 달 내내 볼 것 같다. 집에 간다. 지하철에서 핸드폰을 본다. 친구가 메시지를 보냈다. "야, 이 게임 해봤어? 개꿀잼." 링크를 눌렀다. 우리 회사 게임이다. 내가 테스트하는 그 게임. "ㅋㅋ 내가 만드는 거." "헐 대박. 부럽다. 게임하면서 돈 벌잖아." 부럽다. 그래, 부러운 직업이다. 남들이 보기엔. 실제로는? 같은 보스 82번 잡는 직업이다. "ㅇㅇ 재밌게 해라." 답장을 보냈다. 말은 안 했다. 재미없다고. 유저는 재미있어야 한다. 그게 목표다. 내가 재미없어도 된다. 그들이 재미있으면. 이게 QA의 숙명이다. 집에 도착했다. 고시원 문을 연다. 침대에 눕는다. 눈을 감는다. 꿈에 보스가 나온다. "네놈이 감히!" 82번 들었다. 꿈에서도 듣는다. 내일 18번 더 들을 것이다.100번 채우면 끝일 줄 알았다. 팀장이 말했다. "200번으로 늘려주세요." 통계적 신뢰도래.

야근 수당으로 버티는 3400만원

야근 수당으로 버티는 3400만원

3400만원의 진실 급여명세서를 봤다. 기본급 240만원. 야근수당 60만원. 세전 300만원이 찍힌다. 세후 260만원 정도. 이게 3년 차 QA의 현실이다. 작년에 입사한 신입 개발자는 4200만원 받는다고 들었다. 같은 회사, 비슷한 나이. 차이는 직무다. 그냥 QA라서 덜 받는다. "게임하면서 돈 버네 좋겠다." 친구들이 하는 말. 대답 안 한다. 설명해봤자 이해 못 한다. 게임이 일이 되면 게임이 아니라는 걸. 야근수당이라는 마약 이번 달 급여가 좋았다. 런칭 준비로 야근을 40시간 넘게 했다. 수당이 80만원 붙었다. 세전 320만원. 세후 270만원 정도. 고시원 월세 40만원 내고, 통신비 5만원, 식비 40만원, 교통비 10만원. 남는 돈이 175만원. 이 정도면 괜찮다. 저축도 할 수 있다. 문제는 다음 달이다. 런칭이 끝나면 야근이 줄어든다. 버그 픽스 단계로 넘어가면 정시퇴근도 가능하다. 좋은 일이다. 건강을 생각하면. 근데 급여명세서가 무섭다. 기본급만 나온다. 260만원에서 생활비 빼면 85만원. 저축은커녕 카드값 내기도 빡빡하다.야근을 바라게 되는 순간 3월이었다. 신규 콘텐츠 테스트가 밀렸다. 개발 일정이 늦어져서 QA도 덩달아 늦어졌다. 저녁 7시 퇴근은 상상도 못 했다. 매일 10시, 11시까지 남았다. 팀장이 말했다. "고생 많다. 다음 달 수당 기대해도 된다." 그 말이 위로가 됐다. 피곤했지만 버틸 수 있었다. 수당이 생각났다. 4월 급여명세서를 받았다. 야근수당 85만원. 세전 325만원. 역대급이었다. 그달은 부모님께 30만원 송금도 했다. 옷도 샀다. 치킨도 시켜먹었다. 5월이 문제였다. 런칭 후 안정기. 정시퇴근이 가능했다. 팀장이 말했다. "이번 달은 좀 쉬어." 좋은 말이다. 건강을 챙기라는 거다. 근데 마음 한편이 불안했다. 이번 달 급여가 걱정됐다. 기본급만 나오면 85만원밖에 안 남는다. 카드값 50만원, 통신비 5만원, 부모님 송금 20만원. 남는 돈 10만원. 저축은 무슨. 정시퇴근하면서 생각했다. '이러면 안 되는데.' 동시에 또 생각했다. '다음에 야근 많이 해야지.' 야근을 바라게 됐다. 이상했다.선배의 조언 점심 먹으면서 3년 차 선배한테 물어봤다. 선배는 7년 차다. "형, 야근수당 없으면 어떻게 살아요?" 선배가 웃었다. "그러니까 야근을 해야지." 농담이 아니었다. 진짜였다. "나도 기본급은 290만원이야. 7년 차가. 야근수당 없으면 생활 못 해. 그래서 바쁜 프로젝트 지원하는 거야." 선배는 런칭 프로젝트에 항상 투입된다. 자원해서 들어간다. 야근이 많은 프로젝트를 찾는다. "그럼 결혼은요?" "못 하지. 여자친구도 없어. 야근하면 만날 시간이 없으니까." 선배가 담배를 꺼냈다. "근데 야근 안 하면 돈이 없어. 그러면 결혼은 더 못 하지. 악순환이야." 그 말이 머릿속에 남았다. 나도 7년 차가 되면 저럴까. 야근으로 버티면서 결혼은 못 하는. 다른 회사도 비슷하다 이직을 알아봤다. QA 채용공고를 찾아봤다. 조건이 비슷했다. 대기업 계열사: 기본급 2800만원, 야근수당 별도중견사: 기본급 3000만원, 야근수당 포함 3600만원스타트업: 기본급 3200만원, 야근수당 없음 어디든 기본급은 낮다. 야근수당으로 맞추는 구조다. 스타트업은 아예 연봉에 포함시켜놨다. 야근을 전제로 한 급여다. 그것도 3200만원. 지금보다 낮다. QA 경력으로 다른 직무는 어렵다. 기획자로 가려면 포트폴리오가 필요하다. 개발자는 코딩을 못 한다. 데이터 분석도 SQL 정도만 안다. 결국 QA에서 QA로 가는 수밖에 없다. 그럼 급여는 비슷하다.기본급을 올려야 하는데 회사에 건의한 적 있다. 팀 회식 자리에서. 술 먹고 팀장한테 말했다. "팀장님, 기본급 좀 올려주면 안 될까요? 야근수당으로 버티는 게 힘들어요." 팀장이 한숨 쉬었다. "나도 알아. 근데 회사 방침이야. QA는 개발직군이 아니라서 기본급이 낮게 책정돼 있어. 대신 야근수당을 주는 거지." "그럼 개발직군으로 바꿀 수는 없나요?" "그건 인사팀 소관이야. 우리 팀에서 결정할 수 있는 게 아니야." 결국 안 된다는 얘기였다. 인사팀은 QA를 '지원부서'로 본다. 개발부서가 아니다. 그래서 급여체계가 다르다. 기본급은 낮고, 야근수당으로 보전하는 구조. 문제는 야근이 일정하지 않다는 거다. 런칭 전에는 많고, 런칭 후에는 없다. 급여가 들쑥날쑥하다. 월 260만원에서 320만원까지 변한다. 차이가 60만원. 생활비 계획을 못 세운다. 저축을 못 한다 통장을 확인했다. 잔액 120만원. 3년 일했는데 이게 전부다. 작년에 80만원 모았다. 야근을 많이 한 달에 20만원씩 저축했다. 4개월 모았다. 그러다 차가 고장 났다. 중고차 수리비 60만원. 저축한 돈에서 뺐다. 겨울에 감기 걸려서 병원 갔다. 약값 포함 15만원. 또 빠졌다. 친구 결혼식 축의금 10만원. 또 빠졌다. 결국 120만원 남았다. 3년 동안 이게 다다. 부모님은 "돈 모아서 전세 얻어라" 하신다. 서울 전세가 2억이다. 지금 속도로는 100년 걸린다. 동기들 만나면 이야기가 나온다. 대기업 다니는 친구는 2년 만에 5000만원 모았다. 공무원 친구는 3000만원 모았다. 나만 120만원이다. "야근 많이 하면 더 받지 않아?" 받는다. 근데 야근 많이 하면 건강이 나빠진다. 병원비 나간다. 결국 비슷하다. 이직을 고민한다 요즘 생각이 많다. 이대로 계속 할 수 있을까. 런칭 때마다 야근한다. 수당 받는다. 런칭 끝나면 정시퇴근한다. 기본급만 받는다. 생활비 빠듯하다. 저축 못 한다. 다음 런칭 때까지 버틴다. 이게 반복이다. 3년 했는데 연봉이 200만원 올랐다. 기본급 기준으로. 1년에 70만원씩. 이 속도면 4000만원 되는 데 10년 걸린다. 그때쯤엔 서른일곱이다. 결혼은 언제 하나. 집은 언제 사나. 개발자로 전환하는 것도 생각했다. 코딩 공부를 해야 한다. 퇴근하고 공부할 시간은 있다. 야근 없는 달에는. 근데 야근 많은 달에는 공부를 못 한다. 집 가면 씻고 잔다. 그게 다다. 다른 업종도 알아봤다. QA 경력으로 갈 수 있는 곳. IT 쪽 품질관리팀. 거기도 급여는 비슷하다. 3500만원에서 4000만원. 결국 어디 가도 비슷하다. QA는 이런 거다. 그래도 버틴다 오늘도 출근했다. 새 빌드를 받았다. 신규 던전 테스트다. 치트 켜고 들어갔다. 몹을 잡았다. 드랍률을 확인했다. 엑셀에 정리했다. 100번 반복했다. 버그를 찾았다. 보스 패턴이 꼬였다. 리포트 작성했다. 개발팀에 전달했다. 오후에 회의가 있다. 다음 프로젝트 일정 공유. 런칭이 두 달 남았다. 야근이 시작될 거다. 팀장이 물어봤다. "이번 프로젝트 투입 가능해?" "네, 가능합니다." 대답했다. 야근수당이 필요하다. 이번 달 카드값이 많이 나왔다. 게임을 좋아해서 시작했다. 지금은 야근수당 때문에 한다. 이게 3년 차의 현실이다.야근수당 없으면 못 산다. 그래서 오늘도 야근한다.

CBT 첫날, 버그 리포트 폭주

CBT 첫날, 버그 리포트 폭주

CBT 첫날, 버그 리포트 폭주 월요일 오전 9시 출근했다. 빌드 받았다. 12.3GB. 설치하는 동안 커피 마셨다. 첫 잔. CBT 첫날이다. 클로즈 베타 테스트. 유저 500명이 접속한다. 팀장이 말했다. "오늘은 크리티컬 버그만 올려." 크리티컬이 뭔지 안다. 게임 못 하게 되는 것. 돈 날리는 것. 욕먹는 것. 빌드 설치 완료. 9시 23분. 게임 켰다. 로딩 화면 나왔다. 새 캐릭터 만들었다. 튜토리얼부터 시작한다.10분 만에 첫 버그 튜토리얼 5번째 스텝. "검을 장착하세요" 라고 나온다. 검을 장착했다. 화면이 멈췄다. 10초 기다렸다. 안 돌아온다. 로그 확인했다. Null Reference Exception. 만티스 켰다. 버그 리포트 작성. 제목: [크리티컬] 튜토리얼 5단계 검 장착 시 클라이언트 프리징 재현율: 5/5 심각도: Critical 담당자: 이재훈 클라이언트 개발자 스크린샷 3장 첨부. 로그 파일 첨부. 등록 완료. 9시 47분. 슬랙에 올렸다. "튜토리얼 막혔어요." 1분 만에 답장 왔다. "확인 중." 게임 재시작했다. 다시 캐릭터 만들었다. 이번엔 검 장착 스킵했다. 넘어갔다. 튜토리얼 끝났다. 마을 나왔다. 2시간에 10개 10시 30분. 버그 리포트 4개 더 올렸다.NPC 대화창 텍스트 깨짐 상점 아이템 구매 시 골드 2배 차감 퀘스트 완료 보상 안 들어옴 스킬 쿨타임 UI 안 돌아감개발자들 슬랙이 난리다. 기획자가 물었다. "골드 2배 차감 재현율이요?" 답했다. "10/10. 무조건 나옵니다." 기획자: "헐..." 이재훈 개발자가 말했다. "튜토리얼 버그 핫픽스 올립니다." 10시 52분. 새 빌드 나왔다. 1.2GB. 설치했다. 커피 마셨다. 두 번째.필드 테스트 새 빌드 설치 완료. 11시 10분. 튜토리얼 다시 돌렸다. 검 장착 됐다. 고쳐졌다. 만티스에 코멘트 달았다. "수정 확인. Close 해도 됩니다." 필드로 나갔다. 초원 지역. 몬스터 잡았다. 슬라임. 경험치 들어왔다. 10마리 잡았다. 레벨업 됐다. 스탯 찍었다. 힘 5 올렸다. 공격력 확인했다. 안 올라갔다. 버그다. 만티스 켰다. 제목: [Major] 스탯 투자 시 능력치 미반영 재현율: 3/3 심각도: Major 힘, 민첩, 지능 전부 안 된다. 체력만 된다. 스크린샷 찍었다. 스탯 찍기 전 공격력 52. 찍고 나서도 52. 로그 파일 확인했다. 스탯 적용 함수 호출 안 됨. 등록했다. 11시 34분. 슬랙에 올렸다. "스탯 버그 크리티컬급입니다." 기획자가 답했다. "CBT 중인데..." 김수진 서버 개발자: "확인할게요." 유저들이 이미 접속 중이다. 500명. 스탯 찍고 있을 거다. 안 올라가는 거 모르고. 점심 시간 없음 12시. 점심 먹으러 가려고 했다. 팀장이 말했다. "겜큐님, 파티 시스템 테스트 부탁해요." 점심은 나중에. 파티 만들었다. 초대했다. 수락했다. 파티 UI 떴다. 멤버 목록 나왔다. 던전 입장했다. 로딩 화면. 들어갔다. 파티원이 안 보인다. 맵에는 있다고 나온다. 화면에는 없다. 버그다. 채팅 쳤다. "보여요?" 답 없다. 아니다. 나한테도 안 보인다. 파티 채팅이 안 간다. 던전 나갔다. 로비로 돌아왔다. 파티원 보인다. 다시 입장했다. 또 안 보인다. 만티스 켰다. 제목: [크리티컬] 던전 입장 시 파티원 렌더링 실패 및 파티 채팅 불통 재현율: 5/5 심각도: Critical 파티 플레이가 CBT 핵심 콘텐츠다. 이거 안 되면 큰일이다. 영상 녹화했다. 3분짜리. 첨부했다. 등록했다. 12시 28분. 슬랙 올렸다. "@channel 파티 던전 막혔어요." 30초 만에 답장 폭주. 기획자: "뭐?" 클라 개발자: "로그 주세요." 서버 개발자: "재현율이요?" 답했다. "5/5입니다. 로그 첨부했어요." QA팀 동료 재민이가 말했다. "나도 같은 거 발견." 재현율 확실하다.오후 1시 점심 먹었다. 편의점 삼각김밥. 2개. 책상에서 먹었다. 게임 돌리면서. 김수진 개발자가 슬랙에 올렸다. "스탯 버그 원인 찾았어요." 나: "수정 언제 나와요?" 김수진: "30분 안에 핫픽스 올릴게요." 기획자가 말했다. "유저들한테 공지 올려야겠네요." 운영팀이 공지 올렸다. "현재 스탯 적용 오류 확인, 긴급 수정 중" 커뮤니티 확인했다. 유저들 난리다. "스탯이 안 올라가요" "버그 아니에요?" "CBT 첫날부터 이래?" 욕은 아직 없다. 다행이다. 오후 1시 40분. 새 빌드 나왔다. 설치했다. 커피 마셨다. 세 번째. 빌드 6개 오후 3시. 총 빌드 6개 받았다. 버그 리포트 15개 올렸다. 크리티컬 4개. Major 6개. Minor 5개. 목이 아프다. 말을 안 했는데. 손목도 아프다. 마우스 클릭 몇 번 했는지. 재민이가 말했다. "에너지 드링크 줄까?" 받아 마셨다. 고맙다. 파티 던전 버그는 아직 안 고쳐졌다. 클라 개발자 이재훈이 말했다. "렌더링 레이어 문제예요. 시간 좀 걸려요." 기획자: "오늘 안에 되나요?" 이재훈: "최선 다하겠습니다." 개발자도 힘들다. 안다. 하지만 유저는 기다려주지 않는다. 오후 5시 정규 퇴근 시간. 안 간다. 당연히. CBT 첫날은 원래 이렇다. 저녁 도시락 시켰다. 회사 카드로. 불고기 덮밥. 먹으면서 테스트했다. 오후 5시 30분. 새 빌드 나왔다. 7번째. 파티 던전 수정 빌드다. 설치했다. 기다렸다. 던전 들어갔다. 파티원 보인다. 됐다. 채팅 쳤다. "테스트." 간다. 만티스에 코멘트 달았다. "수정 확인. Close." 슬랙에 올렸다. "파티 던전 수정 확인했습니다." 기획자: "오 감사합니다." 이재훈: "휴..." 모두 지쳤다. 밤 9시 아직 있다. 유저 피드백 확인 중이다. 커뮤니티, 디스코드, 공식 카페. "재미있어요" "그래픽 좋네요" "근데 버그 좀 많아요" 버그 리포트 더 들어온다. 유저들이 찾은 것.특정 지역에서 땅 빠짐 아이템 중복 획득 길드 생성 오류받아 적었다. 만티스에 올렸다. 재현 테스트 해야 한다. 내일. 밤 10시. 퇴근한다. 13시간 일했다. 야근 수당 나온다. 다행이다. 집에 와서 고시원 도착. 10시 50분. 씻었다. 누웠다. 핸드폰 켰다. 회사 슬랙 확인. 새 버그 리포트 3개 더 올라왔다. 내일 아침에 봐야지. 눈 감았다. 그런데 잠이 안 온다. 머릿속에 버그 리포트가 돈다. 튜토리얼 프리징. 스탯 미적용. 파티 렌더링. 골드 2배 차감. 숫자도 돈다. 15개. 7번. 5/5. 13시간. 이게 QA의 일상이다. 화요일 아침 출근했다. 9시 50분. 늦었다. 10분. 팀장이 말했다. "어제 고생했어요. 괜찮아요." 고맙다. 자리 앉았다. 모니터 켰다. 슬랙 확인했다. 밤사이 메시지 47개. 만티스 확인했다. 새 버그 12개. 커피 마셨다. 첫 잔. 오늘도 길다. CBT는 일주일 남았다. 버그는 계속 나올 거다. 우리는 계속 찾을 거다. 고치고, 테스트하고, 확인하고. 반복이다. 그래도. 게임이 좋아진다. 유저가 좋아한다. 그걸로 된다.CBT 첫날, 버그 15개. 빌드 7번. 내일도 똑같다.

로그 분석 - QA만 아는 게임의 속내

로그 분석 - QA만 아는 게임의 속내

오전 10시, 로그부터 열었다 출근했다. 책상에 앉자마자 로그 폴더를 열었다. 어제 밤 CBT 빌드에서 보스전 버그 리포트가 3건 올라왔다. "보스 체력이 안 깎여요", "스킬이 안 나가요", "갑자기 튕겨요". 기획자는 "재현이 안 돼요"라고 했다. 재현이 안 되면? 로그를 본다. 서버 로그 12GB, 클라이언트 로그 3.5GB. 압축 풀었다. 메모장으로는 못 열어서 로그 뷰어 켰다. 회사에서 자체 제작한 툴이다. 이거 없으면 일 못 한다. 유저 ID로 필터링. 버그 발생 시간대로 좁혔다. 14:23:47. 이 순간의 로그만 봤다. [14:23:47.123] BossAttack_Start [14:23:47.145] DamageCalc: Expected 15000, Result 0 [14:23:47.147] ERROR: DivideByZero in DefenseModifier찾았다. 방어력 계산식에서 0으로 나눴다. 특정 장비 조합일 때만 방어력이 0이 됐다. 그래서 재현이 안 됐던 거다.로그는 거짓말을 안 한다 QA 3년 하면서 배운 게 있다. 기획자는 틀릴 수 있다. 개발자도 틀릴 수 있다. 유저 리포트도 부정확할 수 있다. 근데 로그는 안 그렇다. 로그는 그 순간 게임 안에서 무슨 일이 일어났는지 정확히 기록한다. 타임스탬프, 함수 호출, 변수 값, 에러 메시지. 전부 다. "이 아이템 확률 이상한 것 같은데요?" 유저가 그렇게 말하면, 나는 로그를 본다. [Gacha_Result] ItemID: 1205, Probability: 0.5%, Roll: 0.00347 [Gacha_Result] ItemID: 1205, Probability: 0.5%, Roll: 0.00891 [Gacha_Result] ItemID: 1103, Probability: 3%, Roll: 0.01234100번 뽑았을 때 결과를 전부 로그에서 추출한다. 엑셀로 정리한다. 통계 내서 확률표와 대조한다. 정상이면 "확률은 정상입니다"라고 보고한다. 비정상이면? 개발자 불러서 난리 난다. 작년에 한 번 있었다. 신규 이벤트 가챠 확률이 표기와 다르게 설정됐다. 로그 분석으로 잡았다. 런칭 전에 고쳤다. 로그 안 봤으면 큰일 날 뻔했다. 클라이언트 로그 vs 서버 로그 둘 다 봐야 한다. 클라이언트 로그는 유저가 본 화면이다. 버튼 눌렀을 때, 스킬 사용했을 때, 에러 팝업 떴을 때. 유저 관점의 진실이다. 서버 로그는 실제로 처리된 결과다. 데미지 계산, 아이템 지급, 퀘스트 완료. 시스템 관점의 진실이다. 둘이 다를 때가 있다. 예를 들어 어제. "아이템을 받았는데 인벤토리에 없어요" 리포트가 있었다. 클라이언트 로그: [UI_Reward] ItemID: 3401, Count: 10, Display: OK화면에는 보상이 표시됐다. 서버 로그: [Inventory_Add] ItemID: 3401, Count: 10, Result: FULL인벤토리가 꽉 찼다. 서버는 지급 실패했다. 근데 클라이언트는 그걸 몰랐다. 그래서 화면에는 "받았습니다"가 떴다. 두 로그를 대조 안 하면 못 잡는다.로그 뷰어가 없으면 못 살아 텍스트 로그 12GB를 메모장으로 열면? 컴퓨터가 죽는다. 그래서 회사에서 자체 로그 뷰어를 만들었다. 선배 개발자가 만든 거다. QA팀 최고의 도구다. 기능:시간대 필터링 키워드 검색 로그 레벨 필터 (ERROR, WARNING, INFO) 유저 ID 추적 함수 호출 트리 통계 추출이게 없으면 하루에 1개 버그 분석한다. 이게 있으면 하루에 10개 분석한다. 특히 '유저 ID 추적' 기능이 미쳤다. 한 유저의 플레이를 처음부터 끝까지 시간 순으로 볼 수 있다. 영화 보듯이. 10:05:23 - 로그인 10:05:45 - 던전 입장 (ID: 2301) 10:08:12 - 보스전 시작 10:08:47 - 스킬 사용 (SkillID: 401) 10:08:48 - ERROR: NullReference in BuffSystem 10:08:48 - 클라이언트 크래시이 유저가 뭘 했는지 다 보인다. 버그 재현 조건을 찾는다. 지난주에 크래시 버그 있었다. 재현율 5%. 랜덤처럼 보였다. 로그 뷰어로 크래시 난 유저 50명 추적했다. 공통점 찾았다. 전부 '특정 버프를 3개 이상 받은 상태에서 특정 스킬을 쓸 때' 크래시 났다. 조건이 까다로워서 재현이 어려웠던 거다. 로그 없으면 못 잡았다. 에러 로그의 심각도 모든 에러가 똑같지 않다. 로그 보면 에러가 엄청 많다. 하루에 수천 개. 전부 리포트하면 개발자가 죽는다. 그래서 심각도를 판단한다. 크리티컬:크래시, 서버 다운, 데이터 손실 즉시 보고, 최우선 수정높음:핵심 기능 동작 안 함, 결제 오류, 진행 불가 당일 보고, 빠른 수정중간:일부 기능 오류, UI 버그, 밸런스 문제 다음 날 보고, 다음 패치낮음:텍스트 오타, 사소한 연출, 드문 경우 리스트업만, 여유 있을 때어제 본 로그: [ERROR] TextureLoadFailed: ui_icon_empty.png이건 낮음. 아이콘 하나 안 나오는 거다. 게임은 된다. [CRITICAL] DatabaseConnectionLost: Retry failed after 3 attempts이건 크리티컬. DB 연결 끊기면 게임 전체가 멈춘다. 심각도 판단을 잘못하면 큰일 난다. 작년에 신입이 크리티컬 버그를 '낮음'으로 분류했다. 런칭 직전에 터졌다. 3시간 지연됐다.로그로 보는 유저 행동 로그는 버그만 알려주지 않는다. 유저가 게임을 어떻게 플레이하는지도 보인다. 던전 클리어 로그를 보면:평균 클리어 시간 어느 구간에서 죽는지 어떤 스킬을 많이 쓰는지 어떤 몬스터가 킬 타임을 늘리는지이런 데이터를 정리해서 기획팀에 넘긴다. "보스 2페이즈에서 유저 50%가 죽습니다. 난이도 조정이 필요해 보입니다." 데이터로 말한다. 기획자가 "느낌상 괜찮은데?"라고 해도, 로그는 거짓말 안 한다. 작년에 신규 던전 테스트했다. 기획자는 "30분 컨텐츠"로 만들었다. 로그 분석 결과: 평균 클리어 타임 52분. 80명 테스터 중 30분 안에 깬 사람 5명. 나머지는 40분 이상. 기획자: "에이, 숙련되면 30분 될 거예요." 나: "로그상 3페이즈 보스 체력이 너무 높습니다. DPS 최대로 해도 35분은 걸립니다." 결국 체력 30% 감소. 평균 38분으로 줄었다. 그래도 길지만 기획 의도보단 가까워졌다. 런칭 전날 밤, 로그와의 전쟁 CBT 마지막 날. 오후 9시. "내일 오전 10시 정식 런칭입니다. 오늘 밤 안에 주요 버그 다 잡아야 합니다." QA팀 전원 야근. 개발자들도 대기. 나는 로그 분석 담당이다. 오후 9시부터 새벽 6시까지. 9시간 동안 로그만 봤다. 총 3개 빌드 나왔다. 빌드마다 테스트하고 로그 확인하고 버그 리포트하고. 새벽 2시쯤. 로그에서 이상한 패턴 발견했다. [Shop_Purchase] ItemID: 5001, Price: 1000, Result: SUCCESS [Inventory_Add] ItemID: 5001, Count: 1 [Shop_Purchase] ItemID: 5001, Price: 1000, Result: SUCCESS [Inventory_Add] ItemID: 5001, Count: 2아이템을 2번 샀다. 근데 재화는 1번만 차감됐다. 더블 클릭 버그다. 네트워크 딜레이 있을 때 빠르게 두 번 누르면 중복 결제된다. 돈은 한 번만 나간다. 이거 런칭하면? 유저가 악용한다. 과금 아이템이면 회사 손해다. 즉시 보고. 크리티컬 버그. 개발자가 30분 만에 고쳤다. 다음 빌드에서 확인했다. [Shop_Purchase] ItemID: 5001, Price: 1000, Result: SUCCESS [Shop_Purchase] ItemID: 5001, Price: 1000, Result: LOCKED두 번째 요청은 막혔다. 정상. 새벽 6시. 최종 빌드 통과. 집에 갔다. 오전 10시 런칭. 나는 집에서 잤다. 로그 덕분에 큰 사고는 없었다. 로그 분석이 어려운 이유 로그 보는 게 쉬워 보이지만, 실제론 어렵다. 1. 양이 너무 많다 하루 로그가 수십 GB다. 런칭 후엔 테라바이트 단위다. 필요한 정보만 찾아야 한다. 검색 키워드를 잘못 잡으면 헛수고다. 2. 맥락을 알아야 한다 로그 한 줄만 보면 이해 안 된다. [BuffExpired] BuffID: 203이게 뭔지 알려면 기획서를 봐야 한다. BuffID 203이 뭔지, 만료되면 뭐가 문제인지. 게임 시스템을 다 알아야 로그를 읽을 수 있다. 3. 타이밍이 중요하다 버그가 10:30:45에 발생했다. 근데 원인은 10:28:12에 있다. 2분 전 로그를 봐야 원인을 찾는다. 언제부터 봐야 할지 감을 잡는 게 어렵다. 4. 서버와 클라이언트의 시간차 클라이언트 시간: 10:30:45.123 서버 시간: 10:30:45.567 0.4초 차이. 이게 순서를 헷갈리게 한다. "클라이언트가 먼저 요청했는데 서버가 나중에 받았네?" 이런 일이 생긴다. 5. 로그가 안 찍힐 때 제일 최악이다. 크래시가 나면? 로그 파일이 저장 안 될 때가 있다. 서버가 죽으면? 마지막 몇 초 로그가 날아간다. 로그가 없으면 분석을 못 한다. 재현할 수밖에 없다. 로그 분석하면서 배운 것들 게임은 생각보다 복잡하다 유저가 보는 건 화면뿐이다. 버튼 누르면 뭔가 된다. 근데 로그를 보면? 뒤에서 50개 함수가 호출된다. 10개 서버와 통신한다. 100개 변수가 바뀐다. 간단해 보이는 액션 하나에 엄청난 처리가 숨어있다. 숫자는 거짓말 안 한다 "이 던전 쉬운 것 같은데요?" 로그: 평균 사망 횟수 4.7회 "이 확률 높은 것 같은데요?" 로그: 실제 확률 0.3% 느낌이 아니라 데이터로 본다. 버그는 항상 조건이 있다 "가끔 튕겨요" 리포트. 가끔이 아니다. 특정 조건에서 100% 튕긴다. 조건을 모르면 가끔처럼 보일 뿐이다. 로그를 보면 조건이 보인다. 오후 7시, 오늘도 로그를 닫았다 퇴근 시간이다. 오늘 본 로그: 8.5GB 찾은 버그: 7개 작성한 리포트: 7건 마신 커피: 4잔 내일도 로그를 볼 거다. 출근하면 제일 먼저 로그 폴더를 열 거다. 게임 QA는 게임하는 직업이 아니다. 숫자 읽는 직업이다. 로그로 게임의 진실을 읽는다. 유저는 모르는, 개발자도 놓친, 게임 안의 숨겨진 이야기들. 오늘도 로그 덕분에 하나 잡았다. 내일은 뭐가 나올까. 로그 뷰어를 닫았다. 모니터가 어두워졌다. 집에 가서도 게임할 거다. 근데 이제는 로그가 보인다. 화면 뒤의 숫자들이. 이게 직업병인가.로그는 게임의 블랙박스다. 사고 나면 제일 먼저 확인하는 거.

게임을 좋아했는데, 왜 지겨워졌을까

게임을 좋아했는데, 왜 지겨워졌을까

새벽 2시, RPG 게임을 한다 새벽 2시다. 모니터 앞에 앉아서 RPG 게임을 한다. 던전에 들어간다. 몬스터를 잡는다. 아이템을 먹는다. 재미없다. 아니, 재미있어야 하는데 재미없다. 이 게임, 원래 좋아하던 장르다. 중학교 때부터 RPG 덕후였다. 지금은 그냥 일이다.화면을 본다. '이 스킬 이펙트 짤리는 거 아냐?' '이 몬스터 AI 패턴 이상한데?' '파티 버프 중첩 확인해야지.' 게임을 즐기는 게 아니다. 버그를 찾고 있다. 좋아하던 것이 일이 되면 3년 전, 게임 회사에 입사했다. "게임하면서 돈 벌 수 있어요?" 면접관이 웃었다. "네, 하루 10시간은 해야죠." 처음엔 좋았다. 회사에서 게임 한다. 월급 받는다. 친구들이 부러워했다. "너 꿈의 직장이네." 6개월 지나니까 달라졌다. 같은 던전을 100번 돈다. 확률 검증이라고. 드랍률 0.5% 차이 찾으려고 3일 동안 똑같은 보스만 잡는다. 재미는 50번째에 사라진다.월요일, 신규 콘텐츠 테스트 오늘은 신규 레이드 던전 테스트다. 개발팀이 3개월 걸려 만들었다. 나는 오늘 하루 안에 깨야 한다. 10시에 시작했다. 보스 패턴을 익힌다. 공략법을 찾는다. 12시에 첫 클리어. "재밌는데요?" 옆자리 민수가 말한다. "응, 근데 11페이즈에서 카메라 버그 있어." 재미를 느낄 틈이 없다. 머리는 버그를 찾는다. '이 타이밍에 스킬 쓰면 끊기나?' '파티원 4명일 때 밸런스는?' '극한 딜 넣으면 보스 체력 음수 가능성은?' 저녁 7시, 레이드 5번 클리어했다. 버그 리포트 23건 작성했다. 재밌었나? 모르겠다. 엑셀과 확률 QA의 본업은 버그 찾기다. 그런데 절반은 확률 검증이다. '신규 가챠 SSR 등급 확률 1.5% 맞나요?' 기획자가 물어본다. "확인해볼게요." 앉는다. 엑셀 연다. 매크로 돌린다. 10,000회 뽑기. 결과 정리한다. 그래프 그린다. 1.47%. 오차범위 내. "맞습니다." 4시간 걸렸다.이게 게임인가? 통계학인가? 친구가 말한다. "너 게임 회사 다니잖아. 재밌겠다." 대답 못 한다. 재밌다는 게 뭔지 모르겠다. CBT 때의 기억 작년 6월, CBT(클로즈 베타 테스트) 기간이었다. 2주 동안 회사에서 살았다. 집에 못 간다. 샤워는 회사 샤워실에서. 잠은 회의실 소파에서. 밥은 배달음식. 게임한다. 24시간. 유저들이 신고한 버그 확인한다. 재현한다. 리포트 쓴다. 개발팀 패치한다. 다시 테스트한다. 새벽 4시, 던전에서 떨어져 죽는 버그를 찾았다. 치명적이다. 바로 보고했다. 7시에 패치됐다. 다시 테스트했다. 9시에 확인 완료. 침낭에 들어갔다. 30분 자고 일어났다. 신규 버그 10건 들어와 있었다. 그때 생각했다. '나 게임 좋아했었나?' 퇴근 후 게임을 못 한다 집에 간다. 고시원이다. 책상 위에 개인 PC가 있다. 스팀 라이브러리 87개 게임. 최근 1년, 플레이 시간 0시간. 켜보려고 한다. 마우스 잡는다. 게임 아이콘 본다. 끈다. '이거 하면 또 버그 찾겠지.' 'UI 이상한 거 신경 쓰이겠지.' '밸런스 이상하면 짜증나겠지.' 못 한다. 유튜브 본다. 게임 방송 본다. '저 구간 프레임 드랍 있을 텐데.' '저 스킬 설명 오타네.' 끈다. 넷플릭스 본다. 아무 생각 없이 볼 수 있는 거. 예능. 다큐. 게임 아닌 거. 동료들의 이야기 팀에 7명 있다. QA 경력 평균 4년. 다들 게임 좋아해서 왔다. 이제는 아무도 게임 안 한다. 점심시간, 민수가 말한다. "너희 요즘 게임 해?" 다들 고개 젓는다. "나 엘든링 샀는데 한 시간 하고 접었어." "왜?" "프레임 체크하고 있더라. 재미없어." 지훈이가 웃는다. "나도. 발더스 게이트 샀는데 퀘스트 버그 찾고 있었어." 다들 웃는다. 웃프다. 게임 좋아하는 사람들이 모여서 게임 안 하는 이야기를 한다. 어릴 적 RPG의 기억 초등학교 5학년 때. 첫 RPG 게임을 했다. 제목은 기억 안 난다. 마을-던전-보스 구조. 단순했다. 재밌었다. 방과 후 집에 오면 숙제보다 게임 먼저 켰다. 엄마한테 혼났다. 그래도 했다. 주말엔 12시간 했다. 밤새도록 레벨업했다. 보스 잡으면 소리 질렀다. 친구한테 자랑했다. '나중에 게임 만드는 사람 되고 싶다.' 중학교 때도, 고등학교 때도 RPG만 했다. 온라인 RPG, 싱글 RPG, 액션 RPG. 다 좋았다. '게임 회사 가고 싶다.' 대학교 4학년 때. 게임 회사 QA 공고 봤다. '학력 무관, 게임 좋아하면 됨' 바로 지원했다. 합격했다. 꿈을 이뤘다. 지금은 어떤가? 월급날, 통장을 본다 25일이다. 월급날이다. 283만원 들어왔다. 세후다. 야근수당 포함. 계산한다. 한 달 야근 60시간. 시급으로 나누면 얼마지. 계산 멈춘다. 우울해진다. 게임 좋아해서 왔다. 돈은 기대 안 했다. 그래도 이 정도일 줄은. 같은 학교 친구. 프론트엔드 개발자. 연봉 5천만원. 나보다 1600만원 많다. 경력 똑같다. 부럽나? 부럽다. 그런데 개발자 되고 싶나? 모르겠다. 코딩은 못 한다. 배우고 싶지도 않다. 그냥 게임이 좋았을 뿐이다. 좋았을 뿐이다. 과거형이다. 이직을 고민한다 커리어넷 켠다. QA 경력으로 뭘 할 수 있나. 검색한다.다른 게임사 QA: 연봉 비슷함 QA 리드: 경력 7년 필요 게임 기획자: 포트폴리오 필요 CS팀: 연봉 더 낮음갈 곳이 없다. QA 경력은 QA로밖에 안 쳐준다. 개발은 못 한다. 기획은 경험 없다. 3년이 쌓였는데 갈 곳이 없다. 그냥 여기 있는다. 5년 채우면 뭐라도 다르려나. 모르겠다. 이력서 쓴다가 지운다. 쓴다가 지운다. 반복한다. 피곤하다. 런칭 D-7 다음 주 목요일, 신작 런칭이다. 2년 개발한 RPG. 회사 운명 걸렸다. 투자금 50억. 이번 주는 지옥이다. 매일 밤샘. 최종 빌드 테스트. 버그 하나라도 놓치면 안 된다. 출시하고 터지면 QA 책임이다. 월요일부터 회사 산다. 침낭 챙겼다. 샤워 도구 챙겼다. 옷 3벌 챙겼다. 게임 좋아해서 왔는데. 지금 이게 맞나. 팀장이 말한다. "고생하는 거 안다. 런칭 보너스 있으니까 힘내자." 보너스 50만원이다. 세전. 웃긴다. 게임을 켜본다 금요일 밤이다. 일 끝나고 집에 왔다. 11시다. 일찍 온 거다. 씻는다. 편의점 도시락 먹는다. 침대에 눕는다. 핸드폰 본다. 유튜브 본다. 지루하다. 일어난다. PC 앞에 앉는다. 스팀을 켠다. 라이브러리를 본다. RPG 게임 하나 선택한다. 평가 '압도적으로 긍정적'. 친구가 추천했던 거. 설치한다. 30분 걸린다. 기다린다. 설치 완료. 실행한다. 로딩 화면. 메인 메뉴. New Game. 클릭한다. 인트로 영상이 나온다. 3분짜리. 스킵 가능. 스킵 안 한다. 본다. 음악이 좋다. 그래픽이 좋다. 분위기가 좋다. 게임 시작한다. 캐릭터를 움직인다. 마을을 걷는다. NPC와 대화한다. '그래픽 텍스처 로딩 괜찮네.' '대화창 UI 직관적이야.' 'NPC 립싱크 자연스러운데.' 또 시작이다. 분석하고 있다. 그만한다. 끈다. 안 되는구나. 지금의 나 게임을 좋아했다. 어릴 때부터. 하루 종일 해도 안 질렸다. 일이 됐다. 좋아하는 게 일이 됐다. 재미는 사라졌다. 왜 지겨워졌을까. 답은 안다. 같은 걸 100번 반복하면 질린다. 분석하면서 플레이하면 재미없다. 버그 찾는 게 목적이 되면 게임이 아니다. 알지만 바꿀 수 없다. 이게 내 일이다. 3년 했다. 그만두면 뭐 하지. 계속한다. 게임을 한다. 재미는 없다. 익숙하다. 동료가 말했다. "게임 업계 10년 차들 보면 다 그래. 게임 안 해. 못 해." 나도 그렇게 되는구나. 그래도 가끔 생각한다. 다시 재밌어질까. 이직하면? 다른 업종 가면? 1년 쉬면? 모르겠다. 일단 다음 주 런칭 끝내고. 보너스 받고. 생각해보자. 어쩌면 이게 어른이 되는 거다. 좋아하던 걸 잃는 것. 혹은 다른 걸 찾는 것. 아직은 모르겠다. 그냥 월요일이 온다. 출근한다. 게임한다. 재미는 없지만 익숙하다.좋아하는 걸 일로 만들면, 둘 다 잃을 수도 있다는 걸 배웠다.