협동과 대결은 시작부터 다른 플레이예요
협동은 참가자가 하나의 문서를 같이 완성하는 방식입니다. 누군가 단어를 맞히면 팀의 같은 위치가 열리고, 힌트와 진행률도 방 전체가 공유합니다. 공용 추측 기록에는 그 단어를 처음 입력한 참가자가 표시되어 누가 어떤 단서를 보탰는지 자연스럽게 남습니다.
대결은 같은 문서를 각자 독립적으로 푸는 방식입니다. 플레이 중에는 상대가 입력한 단어와 열린 위치를 보여 주지 않습니다. 참가자 상태와 진행 정도는 확인할 수 있지만, 상대의 핵심 단서가 내 화면으로 넘어와 결과를 바꾸지 않게 합니다.
새로 시작할 때마다 새 플레이를 만들어요
친구와 예전에 같은 문제를 풀었더라도 새 협동이나 대결을 시작하면 별도의 플레이가 생성됩니다. 과거 방 기록에 새 사람을 억지로 합치거나, 이미 끝난 결과를 현재 진행처럼 다시 사용하지 않습니다. 같은 문제를 다른 조합으로 다시 즐길 수 있도록 방의 시간축을 분리합니다.
방을 만든 사람은 초대 링크를 공유하거나 서비스 안의 친구에게 초대를 보낼 수 있습니다. 일반 공개 문제의 초대 링크는 이름을 입력한 게스트도 참가할 수 있지만, 방 만들기와 친구 관계 변경은 Google 로그인이 필요합니다. 긴 가입 설명보다 지금 참여하는 데 필요한 선택을 먼저 보여 줍니다.
방은 정확히 한 문제와 버전에 묶여요
각 방은 영구 문제 ID와 내용 버전, 가림 규칙 버전, 선택한 언어 모드에 고정됩니다. 초대 주소의 값만 바꿔 다른 문제나 언어의 상태를 섞을 수 없고, 서버가 방 코드와 문제를 다시 대조한 뒤 참가를 허용합니다.
이 고정은 오래된 방을 다시 열 때 특히 중요합니다. 문제 자산이나 판정 규칙이 달라졌다면 예전 이벤트를 새 본문에 억지로 적용하지 않고 새 방을 만들도록 안내합니다. 같은 추측이 서로 다른 위치를 여는 상황을 막아 기록의 의미를 보존합니다.
보여 줄 상태와 숨길 단서를 구분해요
참가자 현황에는 서비스 이름, 고유 아이디, 시작 여부, 진행률과 완료 상태처럼 함께 플레이하는 데 필요한 정보를 표시합니다. 진행률은 숫자와 선을 함께 써 색만으로 상태를 판단하지 않게 하고, 참가자 순서는 새로고침이나 진행 변화 때문에 계속 바뀌지 않습니다.
반면 대결 상대의 실제 추측 단어, 공개 키, 본문 위치는 현황 데이터에 넣지 않습니다. 협동에서는 팀 문맥을 만드는 데 필요한 추측이 공유되지만, 대결에서는 완료 뒤에 기록을 비교하기 전까지 각자의 사고 과정을 보호합니다.
완료 사실과 방의 상세 기록은 다르게 보존해요
협동방이 해결되면 팀의 추측·힌트·시간을 방 결과로 남기고, 대결은 각 참가자의 결과를 따로 계산합니다. 두 방식의 수치를 하나의 평균으로 섞지 않아 팀 플레이와 개인 도전을 같은 기준으로 비교하지 않습니다.
방 안에서 일어난 상세 이벤트는 그 세션에 남지만, 문제를 해결했다는 사실은 참가자의 영구 문제 완료와 연결됩니다. 나중에 달력이나 다른 언어 모드에서 같은 문제를 열 때 완료 여부를 잃지 않으면서도, 과거 방의 상대 추측을 개인 진행에 덮어쓰지 않습니다.
공정성은 정보가 흐르는 방향을 정하는 일
협동에서는 한 사람의 발견이 모두의 다음 추측을 돕도록 정보를 넓게 공유합니다. 대결에서는 상대가 풀고 있다는 사실은 보여 주되 정답으로 가는 구체적인 단서는 닫아 둡니다. 같은 화면 틀을 사용해도 데이터가 흐르는 방향을 모드에 맞게 분리합니다.
결과를 공유할 때도 제목과 정답은 넣지 않고 문제 번호, 추측 수, 힌트 수, 시간과 링크만 담습니다. 아직 풀지 않은 친구가 초대를 받아도 스포일러 없이 같은 출발선에서 시작할 수 있게 하는 마지막 경계입니다.