연구한 이야기/맡은 업무 이야기

    게임 서버 로그 처리하기

    게임 서버 로그 처리하기

    어떤 로그? 어디에서 로그를 수집할까 게임 클라이언트 로그 클라이언트의 데이터는 믿지 않는 것이 원칙 디버깅용 (크래시 위치 등) 재현 스텝 파악용 게임 서버 로그 추적되어야 하는 모든 이벤트를 기록 재화의 증감 액션 히스토리 이벤트 처리 결과 어떤 형태의 로그를 수집할까 로그 형태를 직접 정의하여 사용하는것이 일반적 공통 헤더를 정의 후, 사용하는 것이 일반적이다. 일반적으로 탭으로 구분되는 TSV 형태를 주로 사용한다. JSON 형태로 저장하는 경우도 더러 존재한다. 텍스트 파일로 로컬 저장하는 것이 일반적 바로 DB나 네트워크 저장소에 넣기에는 부하와 안정성 문제 로컬 텍스트 파일로 저장하여 서버가 크래시나도 보존되도록 한다 신경써야 하는 점? 누락이 존재하여서는 안된다. 게임 서버가 크래시가 나더..

    conan 패키지 관리자 도입하기 : 개론

    conan 패키지 관리자 도입하기 : 개론

    회사에서 기존 CMake기반의 개발 환경에, conan을 도입해보는 업무를 맡았다 부끄럽지만 기존에 CMake를 써본 경험도, XCode IDE를 써본 경험도 없어서, 꽤나 많은 시행착오들이 있었는데, 이러한 과정을 간단하게 글로 포스팅해보고자 한다. Conan이 뭔가요? conan은 C/C++을 위한 패키지 관리자입니다. 외부 라이브러리나 의존성을 효과적으로 관리하고 프로젝트에 포함하는 것이 가능해집니다. 코난을 사용하면 어떤 점이 있는지, 정리해 보겠습니다. 기존 C/C++ 라이브러리 추가 플로우 필요한 라이브러리를 수동으로 다운로드받고, 빌드 환경에 맞게 수동으로 설정해주어야 했습니다. 헤더 위치를 지정해주고, 빌드에 포함할 디렉터리나, 라이브러리 파일을 직접 입력해주어야 합니다. 또한, 플랫폼이나..

    ASTC 포맷, 어떤 점이 왜 좋을까?

    ASTC 포맷, 어떤 점이 왜 좋을까?

    Arm에서 ASTC를 상세하게 설명해주는 문서가 있다. https://github.com/ARM-software/astc-encoder/blob/main/Docs/FormatOverview.md 위 글을 천천히 읽어 보며, 정리해 보는 포스팅을 해보려고 한다. ASTC는 분명 ETC2보다 개선된 압축방식이고, 같은 용량의 결과물이더라도 품질은 극명하게 차이가 난다. 왜 그런걸까? 그 몇년 사이에 압축 알고리즘이 비약적으로 상승한 것 때문일까? 이에 대한 답변이 확실히 될 수 있도록, 문서를 같이 읽어보자. ASTC format overview 특징 포맷 유연성 ASTC는 1~4채널의 데이터 압축을 지원합니다. RGB+A에서의 A채널과 같이, 상관관계가 없는 독립된 채널도 포함입니다. 비트레이트 유연성 A..

    Prometheus + Grafana 패키징

    Prometheus + Grafana 패키징

    개발 환경 모니터링용으로 구축해놓은 prometheus + grafana 시스템을, 퍼블리싱 회사로 패키징하여 전달해주는 업무를 맡았다. 문제는..! grafana에 설정한 datasource와 dashboard 가 그대로 문제없이 패키징되어야 했다. 상호간에 참조가 깨지지 않게 패키징하려면 어떤 방법을 써야 할지 좀 알아 보았다. 그 전에, 간단히 설명부터. Prometheus 다양한 메트릭 지표를 수집하는 중앙 시스템이다. 임계점을 설정하면 알림을 전송해주는 시스템 또한 가지고 있다. Pushgateway prometheus는 다양한 메트릭 지표를 직접 pull하는데, 다양한 시스템들이 능동적으로 pushgateway 로 메트릭을 push 하게끔 할 수도 있다. 그렇다면 prometheus는 push..

    텍스처 압축과 ASTC

    텍스처 압축과 ASTC

    이번에 회사에서 사용중인 게임엔진에 ASTC 텍스처가 지원되게끔 개선하는 작업을 맡았다! 그래서 이 업무 완료 이후 내용을 공유하고자 작성한 자료를, 공개용으로 간단히 요약해 보았다. 텍스처 압축 텍스처가 무엇인가요? 물체의 시각적인 모든 특성을, 텍스처라고 부른다. 물체의 질감, 모양, 색상, 패턴 등등이 모두 텍스처를 설명하는 단어들이다. 조금 더 게임엔진 쪽으로 설명하자면, UV매핑할 때 사용되는, 메모리에 로드된 이미지 라고도 표현할 수 있겠다. 위 이미지에서 보이다시피, 마인크래프트의 '텍스처 팩'은 물체가 보이는 모든 특성에 관여하게 된다. 또한, 게임에서 사용중인 2D 이미지들 또한, 모두 다 텍스처라고 말할 수 있을 것이다. 텍스처 압축을 왜 하나요? 이는 텍스처를 떠나, 압축이 가져다 주..