당신에게 꽃을

2023년 회고록 본문

회고

2023년 회고록

이지안 2023. 12. 29. 21:48

안녕하세요, 이지안입니다.

개발자로는 4년차(만 3년) 회고입니다.

 

2022년 회고와 비슷한 순서로 진행하겠습니다.

* 주요 이벤트

* 기억에 남는 업무

* 독서 목록

* 익힌 기술

* 나의 무엇이 문제였을까? 회고와 느낀점

* 2024년에는


* 주요 이벤트

1) 8월 중순에 회사를 퇴사했습니다. 게임업계에서 두번째 퇴사입니다. 첫 직장은 1년 8개월, 두번째 직장은 1년 3개월 정도를 재직하였네요.

퇴사 사유는 두가지입니다. 기술 공부를 더 하며 스택 바운더리를 늘리고 싶었고, 후술할 재발성 질병 때문이었습니다.

 

2) 특정 질병 치료 목적으로 21년도 하반기부터 지속적인 약물치료를 받았었습니다. 해당 질병은 약까지 끊어야 완치 상태로 보는데, 치료약이 호르몬 조절 약물이었기에 단약 과정이 정말 힘들었습니다. 반년정도 시도 끝에 단약을 성공했고 글을 작성하고 있는 현재는 완치 판정을 받았습니다.

 

 

* 기억에 남는 업무

올해는 신규 타이틀을 개발하는 업무는 없었고, 신규 컨텐츠 개발, 라이브 이슈 대응, 최적화 등의 업무를 주로 진행했습니다. 그 중 가장 주요한 업무가 '최적화'였습니다.

23년 업무 내용을 요약하자면 "1ms라도 빠르게"였습니다.

 

제가 개발해왔던 "인스턴트(HTML5) 게임"은 웹브라우저 환경에서 구동되는 무설치 게임입니다.

게임 리소스가 유저가 사용하는 브라우저에 캐싱되어 있지 않다면, 항상 서버로부터 리소스를 새로 받아와야합니다.

 

페이스북 인스턴트 게임 출시 가이드라인에는 이런 내용이 명시되어 있습니다.

https://developers.facebook.com/docs/games/build/instant-games/game-performance

 

만약 게임 메인화면에 진입하는데 대충 1MB정도의 리소스 로드가 필요하다고 하면

제 환경 기준으로 단순 계산하면 0.01초 내외가 걸리는데요,

인도(약 35.74Mbps)는 0.2초, 필리핀(약 25Mbps)은 0.32초가 걸립니다.

몇 초 차이나지 않지만 리소스 로드 시간이 늘어날수록 더 많은 유저가 이탈합니다.

제 X회사들은 글로벌 원빌드로 게임을 서비스했었습니다.

한국의 빠른 인터넷 환경을 상정하고 고용량 리소스를 많이많이 넣어서 개발하게 되면 글로벌 NRU(신규유저) 수치가 아주 처참해집니다.

플랫폼에서 피쳐드를 받게 되더라도, 게임 진입이 오래 걸리는 순간 유저가 이탈합니다.

 

서론이 길었으나 중요한 점은 "리소스 이슈를 최대한 줄여 초기 유저 이탈과 손실을 막아야 한다"가 인스턴트 게임 플랫폼에서의 핵심이었습니다.

 

이를 위해 택한 방법은 다음과 같습니다.

1) 아틀라스 묶기

: 드로우콜을 줄이려고 하는 목적도 있지만, 뒤에 나올 2번을 하기 위해 필수적입니다.

게임의 지면이 '게임 로비', '메인 플레이 스테이지'로 나눠져 있다고 가정하겠습니다. 단순하게 '게임 로비'에서 쓰는 그래픽 리소스 끼리는 같은 아틀라스에 묶어두면 됩니다. '메인 플레이 스테이지'에 쓰는 그래픽 리소스는 또 다른 아틀라스에 묶습니다. 그러면 이론적으로는 지면마다 1장의 아틀라스를 사용합니다. (여담, 모바일 환경에서는 아틀라스 크기가 1024*1024를 넘으면 렌더링 되지 않는 기기가 있습니다. 유의해야합니다.)

2) 지연로딩(Lazy loading)

: 특정 리소스를 사용하는 지면에 유저가 접속하려 할 때, 필요한 리소스를 로드합니다. 또는 '게임 로비'에 접속이 완료되어 컨텐츠가 모두 렌더링 된 이후에 다른 지면에서 쓰일 리소스들을 추가 로드합니다. 상황에 따라 두 가지를 섞어서 사용했습니다. 만약 '게임 로비', '메인 플레이 스테이지' 두 지면 모두에 등장해야 하는 공통 리소스가 있다면, 그 공통 리소스들끼리 하나의 아틀라스를 만듭니다.

 

매 컨텐츠가 추가될 때마다 빌드 나가기 전에 위 작업을 열심히 합니다.

기술적 스킬이라기보단 단순한 분류작업에 가깝지만 저 작업만으로도 속도 이득을 굉장히 많이 봅니다.

사실 클라이언트 개발자의 메인 잡은 리소스 폴더 정리가 아닐까 하는 생각도 들었습니다.

 

그 외에 사용한 기타 꼼수도 있는데, 게임개발에 관련된 얘기보다는 웹브라우저에 관련된 얘기에 가깝습니다.

 

- SPA 프레임워크와 HTML5 게임 엔진을 같이 사용: 브라우저에 게임 엔진이 로드되어 게임 씬 하나가 렌더링 완료되는 시간보다는 SPA 렌더링 완료가 더 빠릅니다. '게임 로비'같이 단순한 레이아웃의 화면을 빠르게 보여줄 때에는 SPA나 단순 HTML/CSS/JS를 사용해도 좋습니다. HTML5 게임이라서 꼭 하나의 >>게임 엔진<<만 사용해서 빌드해야 한다는 편견은 없는 편이 성능에 더 이롭습니다. (그러나 프레임웤을 추가할수록 빌드 과정은 번거롭습니다...)

- HTML link 태그 사용: 모든 HTML5 게임은 루트가 되는 html 파일을 가지고 있습니다. 예를 들면 index.html입니다. 해당 파일에 <link rel=” dns-prefetch” href=”게임서버도메인”>과 같이 게임 서버 도메인을 미리 알립니다. DNS 조회와 캐싱에 약간의 레이턴시 절약 효과를 기대할 수 있습니다. 시험삼아 사용해보았는데, 유저 수에 유의미한 변동이 있지는 않지만 아주 미세한 성능 이득을 보긴 했습니다. 필수로 사용되는 리소스에도 적절한 태그를 걸어 프리로드하면 약간의 이득이 있습니다. 하지만 라이브 테스트 결과 모바일 환경에서는 최대 3개까지 사용하는 것이 적절하고, 더 사용하면 오히려 웹페이지의 초기 리소스 다운로드 속도가 느려집니다.

 

돌이켜보면 제 업무 루틴은 상당히 단순했네요.

신규 컨텐츠 개발 -> 리소스 정리 -> 빌드 취합 -> 라이브 퍼널 모니터링 -> 이슈 대응 및 최적화

위 과정을 보통 1~2주 단위로 반복했습니다.

 

 

* 독서 목록

- 프론트엔드 성능 최적화 가이드

- 개발자의 글쓰기

- 학교에서 알려주지 않는 17가지 실무 개발 기술

- 이토록 쉬운 유니티 게임 프로그래밍

-> 올해는 주로 가볍게 읽을 수 있는 책들만 골라서 완독했습니다. 다 재미있고 유익한 내용이에요.

 

 

* 익힌 기술

1) 라이브 데이터 관련된 업무를 볼일이 종종 있었기에 SQL 쿼리 실력이 약간 상승했습니다. 더불어 구글 스프레드시트/앱스 스크립트/빅쿼리 활용 능력이 늘었네요.

2) 개인적으로 유니티와 C# 공부중입니다. 저는 3년간 타입스크립트를 썼는데, C#을 배우려니 비슷하면서도 헷갈리는 부분이 많아서 흥미로워요. '아니 C#은 이게 돼?/안돼?'가 매 순간의 연속이에요.

 

 

* 나의 무엇이 문제였을까? 회고와 느낀점

"중요한 것은 꺾이지 않는 마음"이라는 말이 생각이 나요.

회사에 소속되어 있을 때, 업무를 볼 때의 내가 어땠나 생각해보면 후회되는 일이 많아요.

'프로젝트 팀을 옮기고 랜딩이 잘 안 된다고 느꼈을때, 내가 그 프로젝트의 전체 골조와 코드를 더 자세히 보고 파악했더라면 랜딩 이슈가 없지 않았을까?'

'이런 기초적인 게임 개발 스킬도 모르고 있었다니, 나는 게임 업계에 있을 자격이 없는거 아닐까?'

'내가 퍼포먼스 요구사항을 상기하고 지켰더라면 터지지 않았을 라이브 이슈가 아닐까?'

그런 생각이 반복되다가, '아, 나는 공부가 부족한가봐.'하고 기가 꺾였습니다.

'좀 쉬면서 공부도 다시 하고, 병도 완치 판정을 받자'라는 생각이 들면서 회사를 관두었는데,

돌이켜보면 회사에서 배울수 있는 것도 분명 많이 있을 텐데 하는 생각이 들어서 아쉬운 결정입니다.

진득하고 완결성있게 일을 수행할 수 있도록 자기효능감을 높여야 할 것 같습니다.

지레 겁 먹고 아예 시도하지 않거나, 사소한 부분을 신경쓰느라 전체를 보지 못했던 일들이 정말 아쉬웠던 한 해였습니다.

 

 

* 2024년에는

1) 사 둔 강의와 책을 다 보자

2) 프로젝트를 완성하고 문서화하자

 


 

언제나 동료분들, 선후배분들께 감사하는 마음입니다.

어떤 사건이 있던 배울 점이 있다고 느낍니다.

 

항상 소원하시는 바 이루셨으면 좋겠습니다.

새해 복 많이 받으세요!

'회고' 카테고리의 다른 글

2022년 회고록  (2) 2022.12.27
2020년 0년차 회고록  (0) 2021.01.09
Comments