백엔드 설계 2

정답은 서버에 두고, 플레이는 자연스럽게 만들기

이전 글에서는 랭킹이 있는 스도쿠 게임에서 정답을 브라우저에 보내면 왜 문제가 되는지 이야기했습니다. 이번 글에서는 Sudoku nodi가 이 문제를 어떻게 해결했는지 조금 더 구체적으로 정리해보려 합니다.핵심은 역할을 나누는 것입니다. 브라우저는 사용자가 편하게 플레이하도록 돕고, 서버는 기록을 믿을 수 있는지 판단합니다. 브라우저는 화면을 보여주고, 숫자 입력을 처리하고, 타이머를 표시합니다. 서버는 정답을 보관하고, 사용자가 제출한 풀이를 검증하고, 완료 시간과 점수를 계산합니다. 사용자가 오늘의 스도쿠를 열면 서버는 문제판만 보내줍니다. 여기에는 처음부터 채워져 있는 숫자와 빈칸 정보가 들어 있습니다. 하지만 완성된 정답판은 보내지 않습니다. 정답은 서버 안에 저장해둡니다. 그리고 사용자가 실제로..

스도쿠 정답을 브라우저에 보내면 안 되는 이유

스도쿠 게임을 만들 때 가장 쉬운 방법은 문제와 정답을 함께 준비해두는 것입니다. 사용자가 숫자를 입력하면, 화면 안에서 정답과 바로 비교하면 됩니다. 맞으면 넘어가고, 틀리면 표시해주면 됩니다. 혼자 즐기는 게임이라면 이런 방식도 크게 문제가 되지 않습니다.하지만 대부분 스도쿠 게임에는 오늘의 스도쿠와 일일 랭킹 기능이 있습니다. 여러 사람이 같은 퍼즐을 풀고, 누가 더 빠르게 풀었는지 기록으로 비교합니다. 이때부터는 단순히 “게임이 잘 작동하는가”보다 “그 기록을 믿을 수 있는가”가 더 중요해집니다.여기서 말하는 브라우저는 사용자가 실제로 보는 화면입니다. 스도쿠 판, 숫자 버튼, 타이머, 힌트 버튼처럼 눈에 보이는 부분이 브라우저에서 실행됩니다. 반대로 서버는 사용자 눈에 보이지 않는 뒤쪽 시스템입..