jidoc01 / RustyDO

A server emulator for Digimon Online v1.5.
GNU Affero General Public License v3.0
53 stars 12 forks source link

동글몬, 아이템 카드 드랍 #8

Closed Pocketwind closed 9 months ago

Pocketwind commented 1 year ago

러스트를 사용해본적이 없어서 문법에 맞는지는 모르겠습니다 일단 코드를 수정해봤더니 작동은 되어 글 남겨봅니다

jidoc01 commented 1 year ago

먼저 PR 감사합니다. 머지에 앞서 몇가지 논의점들이 있습니다.

첫번째 사항에 대해 조금 부연을 드리자면, 현재 이 프로젝트는 가능한 합리적인 선에서 게임 내 규칙을 결정하고자 합니다. 예를 들어, 동글몬이나 아이템이 드롭되는 것도, 어느 정도의 턴 간격으로, 어느 정도의 주기성을 띠게끔 할지 등을 적절한 논의를 통해 결정하려 합니다. 이런 사항들을 신중하게 결정하려는 게 현재 방향입니다. 두번째 사항의 경우, 작성자 분께서 러스트가 처음이라고 말씀하신만큼 해당 사항은 제가 도와드리면 좋을 것 같습니다. 그 외의 커밋 메시지나 writing 스타일의 경우에는 구현 논의가 끝나고 나서 이야기하겠습니다.

그리고 앞으로는 PR을 올리실 때 구현과 관련해 어떤 레퍼런스나 논리가 있었는지 설명을 함께 올려주시면 좀 더 수월한 진행이 가능할 것 같습니다!

Pocketwind commented 1 year ago

안녕하세요 답변이 늦어 죄송합니다

저도 매 턴마다 나와야 할거라고 생각했습니다 그런데 실제로 실행해보니 항상 나오는것은 아니고 확률적으로 동글몬이 나오더군요 위치에 대해서는 0을 줬을때 왼쪽 끝에서만 확률적으로 등장했습니다 하지만 맵 오른쪽 끝 값은 아직 테스트해보지 않아 검증이 필요합니다

두가지 정도 생각해본게 있는데 클라이언트 쪽에서 작동하는 다른 알고리즘이 있거나, 동글몬 좌표값이 0~65535가 아닌 다른 범위에 걸쳐져있어 실제 게임에서 표현 불가능한 값을 사용해 동글몬이 등장하지 않아 확률적으로 등장한게 아닌가 싶습니다

위치 분포에 대해선 아직 검증되진 않았지만 꽤 균일하게 등장하는것 같습니다 아직 플레이어분들이 많이 없어서 일일히 확인해볼순 없지만, 일단 위치값을 매번 기록해놓은 뒤에 유저분들에게 등장할 때마다 시간을 기록해달라고 부탁해볼 생각입니다

혹시 실제 동작이 궁금하시다면 깃허브 상에선 보여드리기 어려울것같고 152.70.251.143 이 주소로 24시간 열려있으니 한번 직접 보시는것도 좋을것 같습니다 소규모로 유지중인 서버인데 의외로 밤늦게까지 플레이하시는분이 많더라구요

jidoc01 commented 1 year ago

저도 매 턴마다 나와야 할거라고 생각했습니다 그런데 실제로 실행해보니 항상 나오는것은 아니고 확률적으로 동글몬이 나오더군요 위치에 대해서는 0을 줬을때 왼쪽 끝에서만 확률적으로 등장했습니다 하지만 맵 오른쪽 끝 값은 아직 테스트해보지 않아 검증이 필요합니다

제 환경에서 동글몬과 아이템 모두 확정적으로 나옵니다. 확률적이라는 게 어떤 의미인가요? 그리고 작성하신 알고리즘은 매 턴마다 작동하는 알고리즘입니다. 혹시 이 부분에 대한 레퍼런스가 어떻게 되나요? 제가 당시 플레이어들한테 듣기로는 매 턴마다 작동했던 건 아닌 것 같아서요. 설계에 대한 질문입니다.

위치 분포에 대해선 아직 검증되진 않았지만 꽤 균일하게 등장하는것 같습니다

작성하신 알고리즘은 균일한 분포를 나타낼 수 없습니다. 균일한 것과 균일해 보이는 건 다릅니다. 현재 구현에서는 여러 게임 방에서 동일한 난수생성기를 공유하며 각 코루틴이 교차 실행할 수 있기 때문에 애초에 균일할 수 없습니다. 그리고 난수생성기 자체가 현재의 방식으로는 균일한 생성을 담보해주지 않기 때문에 제가 말씀드린 것처럼 보정해줘야 합니다. 플레이어도 모르는 사이에 불공평한 게임이 될 수 있습니다.

혹시 실제 동작이 궁금하시다면 깃허브 상에선 보여드리기 어려울것같고

적어도 제가 코드 상에 남긴 코멘트들은 제가 직접 최소한의 동작을 확인한 부분들입니다. 작성자 분께서 수정하신 동글몬이나 아이템 파트도 마찬가지입니다. 구현을 마무리 안 한 건 아직 논의를 충분히 하지 못했기 때문입니다.

올려주신 PR은 감사하지만 현재로서는 어떤 식으로 설계할지 논의하거나 어떤 식으로 동작하는지 검증해보는 게 우선으로 보입니다. 저도 작성자 분처럼 당장에 구현해보고 싶은 마음이 굴뚝같지만, 위에서 말씀드렸던 것처럼 순서를 지키며 차근차근 해보는 게 어떨까요? 새롭게 이슈를 생성할 테니 해당 이슈에서 논의 이어가주시면 감사드리겠습니다. 그리고 이 글을 보신 다른 분들이나 아니면 해당 서버 분들도 자유롭게 의견을 나눠주시면 큰 힘이 될 것 같습니다.

jidoc01 commented 1 year ago

https://github.com/jidoc01/RustyDO/discussions/9

issue가 아닌 discussion을 한번 써보려 합니다. 위에서 논의 진행하면 좋겠습니다.

jidoc01 commented 1 year ago

@Pocketwind 여러 커밋들이 올라왔는데 커밋 메시지가 알아보기 어렵습니다. 커밋 메시지를 명료하게 남겨주시거나 어떤 목적의 구현인지 설명을 덧붙이셔야 제가 원활하게 리뷰해드릴 수 있습니다. 구현에 대해 드린 질문들도 답변이 아직 없으십니다.

위에서 말씀드린 사항들 이행해주시길 정중히 부탁드립니다.

jidoc01 commented 9 months ago

force push 하시고 네 달여 지났는데 아직까지 답변이 없으셔서 close 하겠습니다. 그리고 남기신 코멘트 중 서버 홍보 문구가 있어서 hide 처리 했습니다.