RoySRose/Monster

mineral 예측해서 드론 미리 출발하기

Opened this issue · 8 comments

앞마당 먹을시에 300미네랄이 되면 드론이 출발하는것이 아니고
미네랄이 300이 될때 앞마당 해처리를 짓기 시작할수 있게 미리 가서 드론 대기 로직

이것 첫 앞마당만 하면되나요. 아님 3rd와 그이상까지 고려해서 짜는게 더좋을까요?

if(판단로직1-일단은앞마당일경우만)
if(판단로직2- 적유무..길목 및 확장)
if(판단로직3-고정미네랄판단 or 초당미네랄수급량도 계산?)

@snogada 빌드큐에 넣을때부터(buildorderitem에) 옵션을 주어서. 해당 옵션이 true 일때는 적용되게 하는 것은 어떨까요? 그렇게 되면 초반에 딱딱 맞게 빌드 들어가야되는 경우에 다 적용할수 있지 않을까 싶습니다.

초당 미네랄 수급량 계산하는 놈을 작성할때는 클래스 하나 따로 빼서(아마 predictor 클래스쪽이 좋겠네요) 하시면 다른쪽에서도 이거를 사용하고 좋을것 같습니다.

@RoySRose
넹 그건 buildorderitem 에 하나넣어서 하면될것같네요.

미네랄수급량은 PlayerInfoCollector 에 getMineralPerSecond(); 함수생성(변수는 대충 10초평균할 list10개정도?)
update(); 함수에서 1초에 한번씩 update.

이런식으로 할까생각했는데요, 그쪽으로 빼는게 더 나을까요?

@snogada

미네랄 수급과 관련되서는 10초 평균으로 처리가 될까 라는 생각이 있습니다.
예를 들어 첫 더블 해처리때만 고민해 보면
드론이 계속 늘어나고 있다고 가정했을 시에

60 ~ 70 초의 수급량의 평균을 내서. 120초때쯤 미네랄이 300이 모일거라고 예측을 하게 되면 실제와는 다를 것 같습니다.

사실상 어떻게 보면 미네랄 증가율의 증가율을 평균 내서. 미네랄의 증가율을 변경시키며 예측이 들어가야 맞을 것으로 보입니다. (미네랄의 증가율의 증가율은 오타가 아닙니다 ㅎㅎ)

실제 제가 이번 대회때 작성해 놓은 상대 미네랄과 가스 예측 로직이 위를 기반으로 작성을 하였고 매우 정확하게 상대 자원을 예측하였던 것으로 보아. 조금 더 복잡해지게 되지 않을까 싶습니다.

또한 실제 호출을 할때는 특정 프레임에 예측되는 미네랄을 구해야 할지. 특정 미네랄의 양을 도달하는 프레임을 구해야할지 등, 어떤 식으로 사용되는지도 고민해 볼 필요가 있기 때문에 해당 부분의 연산하는 클래스를 분리해 놓고. 연산 + 호출 +@ 의 구조가 나오는게 좋지 않을까 하는 의견이 있습니다.

@RoySRose
(10초는 대충예를든거고 계속 테스트하면서 변경될값)
어차피 정확하게는 구할수없을거에요.

드론->해처리지을곳의거리, 드론의속도, 미네랄수급속도 이세가지로 할건데 다른건 거의정확하게 나오는데요. 미네랄수급속도는 차라리 해처리수 미네랄수 드론수(해처리당) 가지고계산하는게 더정확하죠.

(그리고 저그는 프토 테란과는다르게 해처리짓기전에는 드론생산거의 정지된상태일경우가많죠

드론계속뽑으면서 -> 해처리짓는다보다
해처리지을돈모일때까지 라바모으고-> 해처리 짓고-> 남은라바 한번에 드론으로 뽑는게더이득이니.)

저걸쓸지 평균으로할지는아직고민중이고요.

그냥 간단하게 평균(혹은 말씀하신 증가량의평균으로예측)정도로 할까했었는데(테스트하면서 좀더정확히 예측하는 모델은 구할거고요.)

제대로 사용할예정이면 해당부분 따로 떼어내서 하나만들어놓도록할께요. 그럼 다른거 일단 제껴두고 미네랄 미래예측 클래스 하나 만들어놓겠습니다.

xx frame 이후 미네랄,가스양은?
xx 미네랄,가스가 되는것은 몇frame이후?
이거두개정도 함수가 생기겠네요.

기본 가정했던 개념이 저그는 중요한 업글, 확장 등을할때는 (위험적인상황이아니면)
공격유닛생산, 드론생산, 오버생산등 돈드는작업전체 all stop 하고, 일단 확장에돈쓰고 그동안모인 라바로 그다음작업해도 유닛이모이는속도에 전혀 차이가없기때문에 일단평균 미네랄 수급량으로 간단히 해놓을 생각이였네요ㅋ

가정1.해처리를 지을차례에는 돈을사용하지않는다.(미래미네랄 예측이 필요한경우는 중요한경우이니 아마 비슷할것이다)

가정2. 그동안 드론도 증가하지않는다.-> 미네랄 수급량도 일정하다.

결론 . 따라서 현재돈100이고, 10초에 돈100을 캘수있는 능력이 된다면 20초후에 300이 될것이다

@snogada 두번째 글을 보니 그럴수도 있긴하겠네요.

해처리 지을 차례에 일꾼 안 뽑는거는 플토랑 테란도 사실상 마찬가지이긴 할것 같아요(후반 제외)
드론의 증가량을 반영하는 것에 대해서는 앞서 말씀드린대로 상대 자원을 예측하는데 정확도를 높여주였기에 말씀드렸던건데.

가정1.해처리를 지을차례에는 돈을사용하지않는다.(미래미네랄 예측이 필요한경우는 중요한경우이니 아마 비슷할것이다)

을 보니. 단기간이라 가장 최근의 미네랄 증가율만 반영하면 사실상 별 차이가 없을 수 있겠네요.
말씀하신대로 간단하게 시작해 보는게 더 좋을 것 같습니다. 미세 조정이 필요하면 그때 추가하구요^^

넹 일단 간단하게 하고, 모듈별로 나눠놓아서 나중에 수정쉽게해놓을께요.