CS2 Practice Host TIL 2
헷갈리는 단축키를 없애기로 했다
앞선 TIL 1 끝에 적어 둔 얘기다. 함께 플레이한 사람이 게임 안 단축키 두 개를 헷갈린다고 했다. 둘 다 「맵을 새로 연다」로 보이는데, 하나는 들어와 있는 친구가 그대로 남고 하나는 주소가 바뀌어 전부 끊긴다.
그때는 적어만 두고 판단을 미뤘다. 없애면 단순해지지만 「판을 완전히 새로 열기」를 게임 안에서 못 하게 되기 때문이다.
없애면 뭐가 없어지냐고 물으니, 그 키가 하는 일은 앱의 버튼으로도 된다고 했다. 기능이 사라지는 게 아니라 같은 일을 하는 두 입구 중 위험한 쪽이 사라지는 것이었다. 그래서 없애기로 했다.
비슷하게 생겼는데 결과가 정반대인 선택지는 설명으로 막을 수 없다. 화면에 안내를 적어 둬도 게임 중에는 그 화면이 안 보인다. 둘 중 하나가 거의 안 쓰이면서 잘못 누르면 판이 깨지는 쪽이라면, 고르게 하지 말고 없애는 게 맞다.
릴리스 저장소를 따로 안 만들기로 했다
배포 계획에 「릴리스 전용 저장소를 하나 더 만든다」가 적혀 있었다. 다른 앱이 그렇게 하고 있어서 같은 모양으로 적어 둔 것이었다.
Claude에게 물었다. 이건 소스가 공개인데 왜 또 만드냐고.
그 앱은 소스가 비공개여서 그랬다고 했다. 비공개 저장소는 받는 사람이 열 수 없으니 받을 파일만 둘 공개 자리가 따로 필요했던 것이다. 이쪽은 소스가 이미 공개라 그 이유가 통째로 사라진다.
오히려 같은 자리에 두는 게 낫다. 서명이 없는 프로그램이라 「이 코드로 만든 파일이다」가 받는 사람에게 보이는 게 중요한데, 소스와 파일이 한자리에 있으면 그게 저절로 보인다.
따라 할 때는 모양이 아니라 그 모양이 나온 이유를 가져와야 한다. 이유가 내 쪽에 없으면 모양도 필요 없다.
복사 실패를 실패라고 말하게 했다
서버가 열리면 친구에게 보낼 링크가 자동으로 복사된다고 적혀 있었다. 그런데 붙여넣어 보면 아무것도 안 나왔다. 복사 버튼을 손으로 누르면 붙는다.
원인은 클립보드를 한 번에 한 프로그램만 잡을 수 있다는 것이었다. 서버가 열리는 순간은 게임이 화면 앞에 있어서, 뒤에 있는 앱이 쓰려 하면 거부당한다. 버튼이 되는 이유는 그때는 앱이 앞에 와 있어서다.
고칠 수 있는 문제라고 했다. 잠깐 다시 시도하면 대부분 잡힌다고.
그런데 진짜 문제는 따로 있었다. 거부당한 뒤에도 앱이 「복사됐어요」라고 말하고 있었다. 실패를 그냥 넘기도록 짜여 있었던 것이다. 내가 쓸 때는 안 붙는 걸 바로 알아채지만, 받아서 쓰는 사람은 복사된 줄 알고 친구에게 엉뚱한 걸 보낸다.
앞선 TIL 1에서 「고를 수 있는데 안 되는 상태가 제일 나쁘다」고 썼다. 이건 그보다 한 걸음 더 나쁘다. 그때는 적어도 결과가 눈에 보였지만, 이번엔 성공했다고 말해 버려서 확인할 생각조차 안 하게 만든다.
실패를 조용히 넘기는 것은 아무 일도 안 하는 게 아니다. 거짓말을 하는 것이다. 되면 됐다고, 안 되면 안 됐다고 말하게 만들어야 한다.
사용법을 앱 밖으로 꺼냈다
앱 안에 사용법을 볼 데가 없었다. 물음표 버튼을 달고 누르면 안내가 뜨게 하기로 했다.
올라온 것은 앱 창에 글을 띄우는 방식이었다. 내용은 맞았다. 그런데 보자마자 걸렸다. 내가 생각한 건 설명 페이지로 보내는 것이었다.
차이가 있다. 설명을 앱 안에 넣으면, 문구 한 줄을 고칠 때마다 실행 파일을 새로 만들어 받는 사람에게 다시 받으라고 해야 한다. 웹에 두면 고치는 즉시 모두에게 반영된다. 설명은 앞으로 계속 손볼 것이고 프로그램은 그렇지 않다.
바꾸면서 하나 더 정했다. 그 주소를 어디로 할 것인가다. 소개 페이지는 다른 손이 만들고 있어 주소가 아직 확정이 아니었다. 실행 파일에 박히는 주소는 깨지면 새 버전을 내는 수밖에 없으므로, 우리가 직접 관리하는 쪽으로 정했다.
프로그램에 박아 넣는 것과 바깥에 두는 것의 기준은 「어느 쪽이 더 자주 바뀌느냐」다. 자주 바뀌는 것을 안에 넣으면, 바꿀 때마다 가장 비싼 방법으로 바꾸게 된다.