GN⁺: 10년 된 스팀 버그
(blog.freudenjmp.com)Valve의 10년 된 Steam 문제, 모두가 Valve보다 너무 빠른가?
- Valve는 때때로 커뮤니티 피드백과 버그 보고에 대응하지 않는 것으로 보임.
- 10년 된 버그에 관한 이야기.
tl;dr
- 10년 이상 지속된 Counter-Strike의
No user logon
문제를 해결하기 위한 몇 가지 대중적인 해결책들이 실제로는 근본 원인을 해결하지 못함. - 이 글을 구글을 통해 찾았다면, 다음 해결책들을 시도하지 말 것:
- 게임 재설치
- 게임 파일 검증
- Steam 재시작
- 컴퓨터 재시작
- WiFi 비활성화
Introduction
- Counter-Strike는 Valve에 의해 개발된 유명한 게임임.
- 최근에 Counter-Strike 2(CS2)가 출시되어 Counter-Strike: Global Offensive(CS:GO)를 대체함.
- CS2는 많은 버그를 포함하고 있으며, 이로 인해 게임 경험이 좋지 않음.
- Valve는 CS2를 HackerOne 버그 바운티 프로그램에 포함시키지 않아 CS2와 관련된 버그 보고에 대해 보상을 지급하지 않음.
No user logon
- 커뮤니티가 수년간 보고한 버그들이 여전히 해결되지 않고 CS2에도 존재함.
-
No user logon
오류는 게임 중 무작위로 발생함. - 이 문제는 여러 포럼과 Valve의 공식 지원 포럼에서 여러 차례 보고됨.
- 제안된 해결책들은 실제로 문제를 해결하지 못함.
Esportal specific
- Esportal에서도 이 문제를 여러 해 동안 겪었으며, 실제로 문제를 해결하지는 못하고 발생 빈도를 줄이는 데 그쳤음.
- CS2에서는 처음에는 문제가 해결된 것처럼 보였으나 2024년 1월 첫 주에 문제 보고가 다시 증가함.
The symptoms
-
No user logon
오류는 플레이어가 게임에 연결된 후 2-3분 후에 발생함. - 스킨이 게임 시작 몇 분 후에야 나타나는 현상과 관련이 있을 수 있음.
Validation of the hypothesis
- Steam 인증과 관련된 문제일 가능성이 높음.
-
STEAM USERID validated
가 성공적으로 완료되기까지의 시간이 1월 3일 이전에는 2-3초였으나, 그 이후에는 약 1분 20초로 증가함.
NETWORK_DISCONNECT_STEAM_LOGON
- Steam 인증과 관련된 버그로 보임.
-
STEAMAUTH: Client Bob received failure code 8
이라는 로그가 발견됨.
Steam3 validation
- Steam3 서버는 사용자 인증을 담당함.
- 게임서버는 Steam3 서버에게 Steam ID의 유효성을 확인하도록 요청함.
- Steam3 서버가 유효성을 확인하는 동안 플레이어는 게임을 계속할 수 있으나 스킨은 할당되지 않음.
Making it trustable
-
CS2.exe
가 신뢰할 수 있는지 확인하는 과정이 필요함. -
Steam.exe
는 현재 로그인된 계정을 알고 있으며,CS2.exe
에서 보낸 Steam ID와 일치하는지 확인함.
NETWORK_DISCONNECT_LOOPSHUTDOWN
-
NETWORK_DISCONNECT_LOOPSHUTDOWN
이라는 또 다른 연결 해제 이유가 있음. - 이는 게임 자체에 의해 자동으로 재연결 시도가 발생함을 의미함.
Loops in the Source engine
- Source 엔진은 특정 목표가 달성될 때까지 실행되는 루프를 가짐.
-
CS2.exe
는 여러 루프를 실행하며, 최종적으로game
루프가 실행됨.
The disconnection
- 루프가 종료되면
NETWORK_DISCONNECT_LOOPSHUTDOWN
으로 인해 연결이 해제될 수 있음.
CS2 startup procedure
-
CS2.exe
가 시작될 때 여러 루프를 실행하며,levelload
루프가game
루프로 전환하기 전에 Steam ID 검증을 시작함.
GN⁺의 의견:
- 이 글은 Valve의 게임인 Counter-Strike 시리즈에서 오랫동안 해결되지 않은
No user logon
버그에 대한 깊이 있는 분석을 제공함. 이는 게임 개발과 유지보수의 어려움을 이해하는 데 도움이 됨. - Valve가 커뮤니티의 피드백과 버그 보고에 적절히 대응하지 않는다는 점은 게임 개발사와 사용자 간의 소통의 중요성을 강조함.
- 이 글은 소프트웨어 엔지니어링의 복잡성과 버그 추적 및 해결 과정에서의 도전을 잘 보여줌. 이는 버그를 해결하기 위한 체계적인 접근 방식의 필요성을 강조함.
Hacker News 의견
-
첫 번째 댓글은 Steam의 세션 티켓 시스템에 대한 설명으로, 게임 클라이언트가 Steam 서버로부터 세션 티켓을 요청하고, 이를 게임 서버에 제공하여 Steam ID를 증명한다고 언급함. 게임 서버는 이 티켓을 Steam의 웹 API를 통해 검증해야 하며, CS2 클라이언트가 세션 티켓을 얻는 데 지연이 발생할 때 이를 처리하지 못하는 것 같다고 지적함.
"Steam의 세션 티켓 시스템에 대한 설명과 CS2 클라이언트의 지연 처리 문제 지적"
-
두 번째 댓글은 기사의 결론이 명확하지 않다고 지적하며, Counter-Strike 시작 방식의 문제점과 워싱턴에서의 유지보수 작업으로 인한 전 세계 플레이어의 문제 발생 가능성을 언급함. 또한, Steam ID 검증이 게임 루프 시작 전 마지막 단계로 이루어지기 때문에 유지보수 중 서버가 느려질 때 게임 시작을 방해할 수 있다고 설명함.
"Counter-Strike 시작 방식과 유지보수 작업이 문제 발생에 미치는 영향에 대한 분석"
-
세 번째 댓글은 멀티플레이어 게임을 시작하기 전에 인증을 완료하는 것이 필수가 아니라는 버그를 지적함.
"멀티플레이어 게임 시작 전 인증 완료의 필수성 부족 지적"
-
네 번째 댓글은 게임 클라이언트가 예기치 않게 충돌하는 원인을 동일한 방식으로 조사할 수 있는지 궁금해하며, GTA V의 로딩 시간 단축에 대한 연구를 언급함.
"게임 클라이언트 충돌 원인 조사와 GTA V 로딩 시간 단축 연구 언급"
-
다섯 번째 댓글은 기사의 문체가 너무 과장되었다고 지적하며, 핵심 내용으로 빠르게 진입할 것을 제안함.
"기사 문체의 과장과 핵심 내용 전달의 중요성 강조"
-
여섯 번째 댓글은 기사의 시작 부분에 문제 해결을 위한 간단한 요약을 추가할 것을 제안함.
"문제 해결을 위한 간단한 요약 추가 제안"
-
일곱 번째 댓글은 게임이 시작될 때만 levelloadloop가 실행되는지, 서버에 접속하고 맵을 로딩할 때도 실행되는지에 대한 질문을 함.
"levelloadloop 실행 시점에 대한 질문"
-
여덟 번째 댓글은 macOS에서 Steam 앱의 성능 개선을 바람.
"macOS에서의 Steam 앱 성능 개선 요구"
-
아홉 번째 댓글은 Valve의 보안 문제를 지적하며, CS:GO가 새로운 보고서에 대해 범위에서 제외되었다는 사실을 언급함.
"Valve의 보안 문제와 CS:GO 범위 제외 언급"
-
마지막 댓글은 과거에 서버 리스트와 활동 중인 플레이어 점수를 표시하는 도구를 만든 경험을 공유하며, 오래된 버그가 여전히 존재할 수 있다는 가능성을 제기함.
"과거 서버 리스트 표시 도구 개발 경험과 오래된 버그의 지속 가능성 언급"