Skip to content

lovida8254/stardew_autofish

Repository files navigation

Stardew Valley 자동 낚시 봇 (보조 모드)

스타듀밸리 낚시 미니게임을 화면 인식 + 마우스 제어로 자동 플레이하는 봇입니다.

운용 방식은 "보조 모드"입니다. 캐스팅과 후킹("!")은 사용자가 직접 하고, 미니게임이 뜨면 봇이 초록 캐치 바만 물고기에 맞춰 제어합니다. (완전 자동은 지원하지만 안정성 문제로 현재 권장하지 않습니다.)

작은 창의 [시작]/[종료] 버튼 하나로 켜고 끕니다. 자동 종료 없이 버튼으로만 정지합니다.


빠른 시작 (exe)

  1. StardewAutoFishing.execonfig.json같은 폴더에 둡니다.
  2. 스타듀밸리를 실행합니다(1920×1080).
  3. StardewAutoFishing.exe 실행 → 좌상단에 작은 창이 뜹니다.
  4. [시작] 클릭 → 버튼이 [종료] 로 바뀝니다.
  5. 평소처럼 낚시하세요. 미니게임이 뜨면 봇이 바를 제어합니다.
  6. 그만할 땐 창의 [종료] 클릭. (창이 게임 뒤로 가면 Alt+Tab으로 불러오세요.)

exe가 무거우면(용량/실행) 아래 "소스로 실행"을 사용해도 동일하게 동작합니다.

소스로 실행

pip install -r requirements.txt
python assist_gui.py

또는 start_assist.bat 더블클릭(콘솔 없이 pythonw로 GUI 실행).


사용법

  • [시작]: 화면 감시 시작. 버튼이 [종료]로 바뀝니다.
  • 미니게임 진입 시 창에 미니게임 제어중 bar=.. fish=.. 표시.
  • [종료]: 정지. 마우스 버튼을 놓고 다시 [시작] 상태로.
  • 자동 종료 없음: ESC나 다른 작업으로 절대 꺼지지 않습니다. 오직 [종료] 버튼(또는 창 닫기)으로만 멈춥니다.

어디까지 되나 (중요)

라이브 검증 + 바 물리 실측 결과입니다.

물고기 결과
일반 ~ 빠른 물고기 잘 잡습니다 (바가 물고기를 바짝 추적)
매우 빠른 / 급진동(erratic) 물고기 물리적 한계로 놓칠 수 있습니다

매우 빠른 물고기를 놓치는 것은 튜닝 문제가 아니라 게임 낚시 바 자체의 물리 한계입니다. calib_bar.py로 실제 바의 가속도(약 780 px/s²)와 최고속도(약 920 px/s)를 측정했는데, 물고기가 바의 최고속도보다 빠르게 급반전하면 바가 물리적으로 따라갈 수 없습니다. 이런 극단적으로 빠른 물고기는 수동 플레이가 정답입니다.


동작 원리

  1. mss로 미니게임 트랙 영역(ROI)만 초당 60회 캡처합니다.
  2. OpenCV(HSV)로 초록 캐치 바(H≈43)와 물고기 표식(청록 H≈96)의 세로 위치를 찾습니다.
    • 물고기는 색상(Hue)으로 트랙 바닥의 파란 물과 구분합니다.
    • 물고기가 바를 가로질러 초록이 두 조각으로 갈라져도, 조각들을 합쳐 바 중심을 안정적으로 잡습니다.
  3. 속도 예측 제어(BarController): 바 중심 + (최근 속도 × lookahead)가 물고기보다 아래면 눌러서 올리고, 위로 지나칠 것 같으면 미리 뗍니다. 관성 오버슈트를 막고 물고기를 바 안에 유지합니다.
  4. pydirectinput으로 마우스 좌클릭을 눌렀다/뗐다 하며 바를 올리고 내립니다.
  5. 검출이 순간 끊겨도(bar_grace) 직전 동작을 유지해 제어 연속성을 지킵니다.

보조 모드는 사용자가 게임을 직접 플레이 중이라 게임 창이 이미 포그라운드입니다. 그래서 봇은 창 포커스를 건드리지 않습니다(과거 매 프레임 재포커스가 게임을 멈추게 한 문제를 제거).


설정 (config.json)

좌표는 1920×1080 기준입니다. 해상도/창 위치나 낚시터가 다르면 아래로 다시 잡으세요.

의미
roi 초록 바가 오르내리는 세로 트랙 영역
bar_hsv_lower/upper 초록 캐치 바 색 범위
fish_hsv_lower/upper 물고기 표식(청록) 색 범위
lookahead 예측 시간(초, 현재 0.20). 위로 튀면 ↑, 못 따라가면 ↓
vel_window 속도 추정 구간(초). 검출 떨림에 강하게
min_pulse 최소 클릭 유지(초). 안 올라가면 ↓, 덜덜 떨면 ↑
bar_grace 바 순간 끊김 무시 시간(초)
fps 초당 처리 횟수

lookahead=0.20은 실측한 바 물리(가속이 완만함)에 맞춰 튜닝한 값입니다.

캘리브레이션 / 색상 확인 (다른 해상도·낚시터)

python main.py calibrate    # 미니게임 트랙(ROI) 영역 다시 선택
python main.py tune         # 초록바/물고기 마스크 실시간 확인

바 물리 재측정 / 파라미터 튜닝 (선택, 고급)

python calib_bar.py         # 흔한 물고기 미니게임에서 사각파 입력 → 바 가속도 G, 최고속도 VMAX 측정
python sim_tune.py          # 오프라인 시뮬레이터로 lookahead 등 파라미터 스윕(게임 불필요)

sim_tune.py는 측정한 바 물리에 앵커링된 시뮬레이터로, 빠른 물고기 대응 파라미터를 실험합니다.


파일 구성

파일 설명
assist_gui.py 보조 모드 GUI (시작/종료 버튼). 메인 실행 파일
start_assist.bat GUI를 콘솔 없이 실행하는 런처(pythonw)
build_exe.bat PyInstaller로 exe 빌드
main.py 검출·제어(BarController)·설정·마우스 입력 등 핵심 로직
calib_bar.py 바 물리(G, VMAX) 실측기
sim_tune.py 오프라인 미니게임 시뮬레이터 + 파라미터 튜너
assist_run.py 구 콘솔 버전 보조 모드(ESC 종료). GUI로 대체됨
gui.py 완전자동용 구 GUI (현재 미사용)
config.json 튜닝된 설정값

주의사항

  • 개인 싱글플레이 편의용으로만 사용하세요.
  • 실행 중에는 마우스 좌클릭을 자동 조작합니다.
  • 비 오는 날은 피하세요: 초록 빗방울이 캐치 바로 오검출될 수 있습니다.
  • exe만 옮길 때는 config.json을 같은 폴더에 함께 두세요(없으면 내장 기본값 사용).
  • 게임을 관리자 권한으로 실행했다면 봇도 관리자 권한이 필요할 수 있습니다(Windows 입력 제한).

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors