오늘도 혹독한 노동을 담당할 로네를 데려왔다. 현재 스트레스 지수는 28



첫번째 알바로 2등급 술래숨바꼭질을 지정하면 스트레스 지수가 0이 됨



그리고 2등급 요정 왕국 마을 보수를 선택하면 스트레스 지수가 11이 된다.

여기서 문제는 이 알바의 실제 스트레스 지수는 16이라는 것임.

즉, 계산이 28 - 33 + 16 = 11 이 되는 것. 스트레스 지수가 음수까지 내려간다.



마지막으로 적당히 하나 지정함 애는 스트레스 지수가 10

현재까지 계산식 : 28 - 33 + 16 + 10 = 21



아르바이트 종료 누르기 전에 스트레스 지수가 21인걸 볼 수 있음.



하지만 돌아오면 실제로 스트레스 지수는 26이 되어 있다.

실질적으로 음수는 계산되지 않는다는 것임.

표기와 달리 실제로는 28 - 33 부분에서 최소값 0으로 고정되고 0 + 16 + 10 = 26이 됨.



여기서부터는 추측글이다.


결론적인 내 추측은 이건 단순한 표기 오류고 실제 스트레스 지수는 최소 값이 0인 것이 맞다.


서버 개발할 때 가슴 깊히 새겨둬야하는 제 1 원칙

 - 클라이언트의 값을 신뢰하지 않는다.


서버에 이미 로네의 스트레스 지수를 포함해 여러 아르바이트 데이터들이 있을것이고

실제로 아르바이트를 시작하면 단순히 어떤 아르바이트가 선택되었는 지만 전달이 될 것임.

그 후에 서버에서 시뮬레이팅을 해서 성공 실패, 보상, 최종 스트레스 지수를 반영하는 방식일 것이다.

메모리 변조, DLL 인젝션 등등 뭐든 간에 클라이언트 값은 신뢰하지 않기 때문에 모조리 서버에서 처리하기 때문임.


그러니 스트레스 지수가 26이 나오는 것이 정상이고 실제 처리할 때 음수까지 가지 않도록 최소값이 설정되어있을 거임.

28 - 33 부분에서 -5가 아닌 0이 되는 게 정상이란 거다.


그럼 왜 이런 찐빠가 일어났는가?

UI 표기 오류임. 유니티에서 제공되는 Slider의 경우에는 최소, 최대값이 있다. 분명 0 ~ 100으로 설정해뒀겠지만,

코딩할 때 사용하는 변수는 음수가 될 수 있기 때문에 -5 값을 슬라이더에 쳐박아도 0으로 보이는 것이다.

해당 변수를 기준으로 로컬에서 이리저리 계산해서 화면에 보여주지만, 실제로 적용되는 값이 아니라는 것임.

그 근거로, 아르바이트가 끝난 후에는 다시 서버에서 데이터를 가져와서 26으로 정상적으로 보임.


결론 : 표기 오류다. 실제 스트레스 지수는 최소 값이 0이다.