NTs: Tower Protocol은 서버가 없습니다. 진행은 브라우저에만 저장되고 밖으로 나가지 않습니다. 기록 슬롯이 셋 있고, 레벨과 강화 단계와 크레딧이 거기 들어갑니다.
서버가 없다는 건 저장 파일을 아무나 고칠 수 있다는 뜻이기도 합니다. 그래서 저장 파일을 내가 쓴 파일이 아니라 외부에서 들어온 입력으로 취급하기로 했습니다.
못 읽으면 거절합니다
흔한 처리는 이렇습니다. 저장 파일을 읽어 보고, 실패하면 기본값으로 새로 시작한다.
이게 최악입니다. 파일이 살짝 깨졌을 뿐이고 손으로 고치면 되살릴 수 있었던 경우에도, 조용히 새 기록으로 갈아 끼우면서 원본까지 지워 버립니다. 사용자는 무슨 일이 있었는지도 모릅니다.
그래서 읽을 수 없으면 거절합니다. 그리고 왜 못 읽었는지를 화면에 그대로 보여 줍니다. 지울지 말지는 사람이 정합니다.
거절하는 경우를 다 적으면 이렇습니다.
- JSON이 깨짐
- 최상위가 객체가 아님
- 버전 표시가 없음
- 이 빌드보다 미래의 형식
- 변환기가 없는 옛 형식
- 필드 누락, 타입 불일치
- 범위 초과 — 레벨, 크레딧, 강화 단계, 슬롯 번호
- 체크포인트가 최고 도달 층보다 높음
마지막 항목이 조작을 잡는 자리입니다.
체크포인트는 파일에서 읽지 않습니다
5층마다 안전 연결실이 있고, 죽으면 거기로 돌아옵니다. 그 층 번호를 저장 파일에서 읽으면 가 본 적 없는 층으로 복귀할 수 있습니다. 파일만 고치면 되니까요.
그래서 저장된 값을 쓰지 않고 규칙으로 계산합니다. 최고 도달 층에서 체크포인트를 구하고, 복귀 대상은 현재 층을 절대 넘지 않습니다. 파일이 무슨 말을 하든 계산 결과만 씁니다.
성장 다음에 환경 기믹
전투 수치를 적용하는 순서도 정해 두었습니다. 레벨과 강화 같은 성장 수치를 먼저 적용하고, 환경 기믹의 배율을 나중에 곱합니다.
뒤집으면 이상해집니다. "쿨다운 25% 감소" 같은 비율 보정이 강화 단계에 따라 다른 값이 됩니다. 같은 기믹이 사람마다 다르게 작동하는데, 그건 알아채기가 굉장히 어렵습니다.
성장 수치는 이렇습니다. 레벨 1~50이고 누적 경험치가 2차식이라 50레벨이 98,980입니다. 레벨당 최대 체력 +8, 공격력 +2. 무기·방어구 강화는 0~10단계로 단계당 공격력 +3, 최대 체력 +14이고, 비용은 80에서 3,725까지 가팔라집니다.
직업은 서로 상쇄시킵니다
일곱 직업이 있습니다. 인간 기사, 엘프 마도사, 묘족 도적, 견족 치유사, 드워프 기술병, 수인 순찰자, 고대인 마검사.
다른 것은 다섯 가지뿐입니다. 체력, 공격력, 이동 속도, 사거리, 쿨다운 배율. 그리고 한 직업이 다섯 항목에서 전부 우위가 되지 않게 서로 상쇄시켰습니다. 하나라도 그런 직업이 생기면 나머지 여섯은 고를 이유가 없어집니다.
콘텐츠 편집기가 게임 안에 있습니다
층과 이벤트와 보상 표는 JSON입니다. 그걸 게임 안에서 편집할 수 있게 해 뒀고, 저장하기 전에 유효성 검사를 통과해야 합니다. 층을 늘리는 일이 코드 수정이 아니라 데이터 편집이 되면, 만드는 속도가 검사 속도에 맞춰집니다.
이어서 읽을 것
같은 "믿지 않는다" 원칙을 화면 쪽에 적용한 것이 시뮬레이션을 화면에서 떼어 놓았습니다입니다. 층이 다 똑같아 보이던 문제는 방 하나로 120층에 있습니다.