애드소프트 기술블로그

개발·서버 운영 실무 기록

애드소프트 박재호입니다. IIS·ASP.NET 웹 서비스와 메일서버를 직접 운영하고, Unity 게임과 데스크톱 앱을 만들며 겪은 문제와 해결 과정을 기록합니다.

최신 글

재미를 묻고 나서 플랫폼을 늘렸다 — 「호구마트」 웹 빌드, 그리고 멈춘 자리

「무슨 재미가 있는 건지 모르겠다」고 말한 바로 다음, 나는 「웹에서도 플레이 가능하도록 할 수 있어?」라고 물었다. □□□로 깨지는 한글, 가로로 누운 캔버스, 탭을 닫으면 사라지는 세이브를 고쳐 브라우저로 직접 해 본 날, 「호구마트」는 거기서 멈췄다. 연재의 마지막 편.

자리 비운 사이 번 돈 — 멈춘 게임에서 시작해 8시간을 공식 한 번으로 정산하기까지

다른 창을 클릭했더니 내 가게가 멈췄다. 손님도, 매출도, 시간도. 직접 플레이하다 찾은 이 버그는 "온라인도 오프라인도 아닌 죽은 시간"이었다. 방치형의 심장인 '자리 비운 사이 번 돈'을 공식 한 번으로 정산하는 코드, AI 가 짠 그 코드를 믿을 수 있게 해 준 규칙 한 줄과 테스트 이름, 그리고 '원자적'이라는 주석 뒤에 숨은 틈을 따라간다.

내가 한 말은 "에디터 닫았어"뿐이었다 — 컴파일러가 지킨 호구마트 시뮬레이션

구조에 대해 한 마디도 하지 않았는데, 「호구마트」의 코드 구조는 처음 모습 그대로 끝까지 버텼다. 규칙 파일의 한 줄이 컴파일러에게 넘어갔기 때문이다. Unity 없이 도는 시뮬레이션, 3600초를 한 번에 돌려도 같은 결과, 가상 30일을 1초에 끝내는 테스트, 그리고 그 초록불이 끝내 말해 주지 않은 것.

「상점은 미리 만들 수 있지 않나?」 — 답하지 않은 질문과 「호구마트」 인앱 상점

지나가듯 던진 한 마디에 광고와 인앱 상점이 생겼다. Claude Code 는 수익화는 재미를 확인한 뒤에도 늦지 않다며 멈추자고 했고, 나는 거기에 답하지 않았다. 그래도 코드는 단단했다. 규칙 한 줄이 지킨 구조, 미뤄 둔 골드를 잃지 않는 법, 그리고 세 경로 중 두 곳에서 빠진 1.25배.

바가지가 용사를 죽인다는 문장은 코드 어디에도 없었다 — 「호구마트」의 세계관 찾기

기획 문서에서 가장 좋아한 문장은 "싸구려 장비를 비싸게 팔면 용사가 죽는다"였다. 그 문장을 코드에서 찾아 나섰다가 손님 네 종류가 평균 한 명으로 녹아 있는 시뮬레이션, 가격표를 보지 않는 손님, 가격이 빠진 사망 확률 식을 만났다. 그리고 범인은 AI 가 아니었다.

「오늘 누가 쏘냐?」 정산 2.0 — 분담 방식 5가지, 송금 목록, 계좌·카카오페이 링크

「오늘 누가 쏘냐?」 1.7에 정산 기능을 넣었다. 등수대로·독박·꼴등 둘이 반반·N빵·1등만 면제 다섯 가지 분담 방식과 반올림 단위, 차수별 금액과 계산한 사람으로 송금 목록을 만드는 정산 화면, 기기에만 저장하는 계좌·카카오페이 송금 링크, 탭 3개짜리 기록 화면까지 코드와 계산 예로 정리했다.

검색 노출과 유입 정리 — 예전 주소에는 410, 봇은 더 걸러내고, 유입 경로는 따로 본다

같은 도메인에 남아 있던 예전 티스토리 블로그 주소에 410(영구 삭제)으로 응답하게 했다. 구글 서치 콘솔과 네이버 서치어드바이저에 사이트를 등록하고, 그 뒤 늘어난 수집기와 스캐너를 방문 통계에서 걸러냈다. 관리자 통계는 방문 통계와 유입 경로로 나누고, 유입 로그에는 출처 사이트 파비콘을 붙였다.