버그 제보에 가깝긴 한데.. 일단 제안 분류로 올려 봅니다.
은퇴 전후로 토너먼트 베팅 및 당첨이 진행될 때 유산 포인트 계산을 잘못하는 문제가 있습니다. 동일 베팅이 진행되던 중에 은퇴를 하면, 은퇴 시점에 투자금 내역이 초기화되어 은퇴 이후의 투자분만 가지고 수익률을 계산하는 문제입니다.
장수가 은퇴하면 RankColumn의 내용을 초기화하게 되어 있고, 따라서 베팅 투자금(betgold)도 0이 됩니다(General.php rebirth()). 베팅에 당첨되면 투자금(betgold)이 0이 아닐 때만 누적 수익(betwingold)에 이번 베팅의 수익(reward)을 합산하지만(Betting.php giveReward()), 은퇴 후 투자를 하면 betgold가 업데이트 됩니다(Betting.php bet()). 즉, 해당 베팅으로 거둔 수익 전부가 누적 수익에 잡히지만, 투자금은 은퇴 후의 투자금만 잡히게 됩니다. 이후 베팅 유산을 betWinRate = betwingold / max(1, betgold)에 따라 계산하면 문제가 될 거 같습니다(InheritancePointManager.php getInheritancePoint()).
제 생각으로는, 은퇴할 때 현재 열려있는 베팅의 기존 투자 내역을 DB에서 삭제하는 게 좋을 거 같습니다. gameStor에 LAST_BETTING_ID_KEY가 있으니 베팅 정보는 가져올 수 있을 거고, 해당 베팅이 열려있는지 여부는 별도로 기록해야 할 수도 있겠습니다. 투자 내역을 그냥 삭제하면 해당 자금은 증발하게 되니, 투자한 장수명만 더미 값으로 바꾸는 게 어떨까 싶습니다. 은퇴 시점에 기존 베팅 내역이 날아간다는 사실을 사람들이 인지만 하고 있으면 큰 문제는 아리리라 생각합니다.
여담으로 InheritancePointManager.php 는 왜 인덴트가 스페이스 두 칸일까요? .. 조금 무서웠습니다. 감사합니다.
댓글 달기