본문 바로가기

개발기/플레이톡

6편: "대부분 지고 가끔 크게 이긴다"를 숫자로 만들기 — 차트 모델 삽질기

반응형

차트가 움직이는 모습

이 게임의 심장은 차트입니다. 플레이어는 이 차트를 보고 "지금이 바닥이다" 판단해서 매수하니까요. 그래서 차트가 어떻게 움직이느냐가 게임의 재미를 좌우했는데, 여기서 제법 삽질을 했습니다. 문제 → 원인 → 재설계 과정이 꽤 깔끔하게 나와서 정리해봅니다.

목표: 대부분 지고, 이길 땐 크게

1편에서 말했듯 이 게임의 감성은 "역발상으로 바닥 잡겠다고 덤비지만 대부분 죽는다"입니다. 이걸 차트로 옮기면 이런 요구사항이 됩니다.

  • 승률은 낮아야 한다 (대부분 크아악).
  • 대신 이길 때는 크게 올라야 한다 (하락분을 만회할 만큼).
  • 계속 우하향해서 0에 처박히면 안 된다 (차트가 깨짐).

말은 쉬운데, 이걸 숫자로 만드는 게 만만치 않았습니다.

1차 시도: 하락 편향 랜덤워크 → 실패

처음엔 단순하게 갔습니다. 매 순간 가격에 하락 쪽으로 살짝 치우친 랜덤값을 곱하는 방식이요. 이러면 전체적으로 우하향하니까 대부분 지겠지, 하는 생각이었습니다.

그런데 두 가지 문제가 터졌어요.

문제 1: 0으로 수렴한다. 곱셈 방식으로 계속 하락 편향을 주니까, 가격이 시간이 지날수록 0에 가까워집니다. 그리고 0 근처로 가면 차트의 세로축 자동 스케일이 뭉개지면서 그림이 이상해졌어요.

문제 2: 상승이 약하다. 하락은 추세로 쌓이는데 상승은 그냥 노이즈라, 이겨도 찔끔 오르고 말았습니다. "하락분을 만회할 만큼 크게"가 안 나온 거죠.

2차 시도: 평균회귀 + 상승 점프 → 또 다른 부작용

그래서 모델을 바꿨습니다. 평균회귀(mean-reversion) 방식으로요. 가격이 기준선(예: 100) 주위를 맴돌게 하되, 평소엔 완만히 하락하고 가끔 강한 상승 점프가 터지게 했습니다. 0으로 안 미끄러지고, 상승도 세게 만들 수 있으니 앞의 두 문제가 해결되는 듯했어요.

그런데 실제로 띄워보니 바닥에서 급등하는 새 문제가 생겼습니다. 가격이 바닥(10 근처)에 있으면 기준선(100)에서 너무 머니까, 되돌리는 힘이 확 세집니다. 거기에 상승 점프까지 겹치면 0.1초 만에 10에서 99까지 튀어버리는 거예요. 아무리 봐도 부자연스러웠습니다.

3차 시도: 매수 전과 후를 분리하다

여기서 발상을 바꿨습니다. 곰곰이 생각해보니, 문제의 뿌리는 "차트가 승패와 무관하게 혼자 요동치는데, 거기에 매수를 얹는" 구조 자체였어요.

그래서 매수 전과 후를 완전히 분리했습니다.

매수 전(관찰): 그냥 "시장 분위기"입니다. 평균회귀로 완만히 등락하되, 한 틱에 움직일 수 있는 최대 폭을 제한해서 급등·급락이 안 나오게 했어요. 이 흐름은 승패랑 아무 상관이 없습니다.

매수 순간: 버튼을 누르면 그 자리에서 먼저 승패를 확률로 결정합니다(승률 약 17%). 그리고 판정 기간의 목표 종가를 정해요. 이길 거면 매수가보다 확실히 위(1.3~1.6배), 질 거면 아래(0.55~0.8배)로요.

매수 후(판정): 정해진 목표 종가까지 여러 틱에 걸쳐 부드럽게 이어줍니다. 승리면 흔들리며 완만히 상승, 패배면 흔들리며 하락. 0.1초 급등이 아니라 판정 시간(약 3.6초) 내내 자연스럽게 움직이죠.

이렇게 하니 앞의 모든 문제가 한 번에 풀렸습니다.

  • 급등 사라짐 (목표까지 여러 틱에 분산)
  • 승률은 확률로 직접 조절 (원하는 값으로 딱)
  • 이길 때 상승 폭도 원하는 만큼 (목표 종가로 설정)
  • 매수 이후의 등락이 승패에 맞춰 의도적으로 자연스럽게 흐름

배운 것: 시뮬레이션과 절차를 흉내 내려 하지 마라

돌아보면 1·2차 시도의 실수는 "진짜 주식 차트처럼" 만들려고 한 것이었습니다. 실제 시장의 랜덤워크를 흉내 내려다 보니 통제가 안 됐어요.

그런데 이건 게임입니다. 플레이어가 원하는 경험(대부분 지고 가끔 크게 이김)이 먼저고, 차트는 그 경험을 연출하는 도구일 뿐이에요. "결과를 먼저 정하고 그 결과로 자연스럽게 수렴시킨다"는 3차 방식이, 시뮬레이션보다 훨씬 게임답고 통제하기 쉬웠습니다.

가끔은 현실을 정확히 시뮬레이션하는 것보다, 원하는 결과를 정해두고 그럴듯하게 보이게 만드는 게 정답이더군요.

시리즈를 마치며

여기까지가 "시장에 피가 낭자하고…" 게임의 전체 개발기였습니다. 밈 하나에서 출발해서 기획, AI 애셋 제작, 클로드코드 협업, 배포, 그리고 저작권과 차트 모델까지 — 작은 프로젝트치고 은근히 많은 판단이 오갔네요.

재미로 시작한 프로젝트지만, 이렇게 글로 정리하다 보니 각 단계에서 "왜 그렇게 결정했나"가 스스로도 더 선명해졌습니다. 혹시 비슷하게 밈 게임이나 사이드 프로젝트를 구상하는 분들께 조금이라도 도움이 됐으면 좋겠습니다.

👉 플레이톡 에서 직접 써보실 수 있습니다. 대부분 크아악하실 겁니다.

 

반응형