Complete fishing minigame phase 1 #3

Merged
myong merged 1 commits from myong_dev into main 2026-03-31 09:49:57 +00:00
Collaborator

요약

이번 PR에서는 Kord에 낚시 미니게임 Phase 1을 구현했습니다.

주요 포함 내용:

  • /fishing enter, /fishing cast, /fishing end 명령 추가
  • 사용자 전용 낚시 스레드 생성 및 재사용 흐름 추가
  • 이모지 버튼 기반 낚시 플레이 루프 구현
  • 물고기 데이터 기반 확률/보상/난이도/약점 위치 시스템 추가
  • 성공 시 물고기 PNG 결과 메시지 출력
  • 관련 i18n, 문서, 테스트 반영

변경 사항

  • fishing 미니게임을 공용 미니게임 구조에 추가
  • /fishing enter
    • 낚시 전용 스레드 생성 또는 재진입
  • /fishing cast
    • 자신의 낚시 스레드 안에서만 세션 시작 가능
  • /fishing end
    • 진행 중 세션 정리 및 낚시 스레드 삭제
  • FishingService 추가
    • 사용자별 메모리 세션 관리
    • 입력 예약형 판정 구조
    • 거리 게이지 / 끊어짐 게이지 관리
    • 휴식 시 끊어짐 회복 + 거리 증가 처리
    • 성공/실패 후 재도전 가능한 스레드 유지 흐름
  • resource/data/fishing/fish_catalog.json 추가
    • 물고기별 출현 확률
    • 골드 보상 min/max
    • 반응 시간
    • 위치별 거리 감소폭 min/max
    • 아트 리소스 경로
  • resource/art/fishing 추가
    • 성공 결과용 물고기 PNG 리소스 연결
  • 성공 시 결과 메시지에서
    • 잡은 물고기 이름 표시
    • 보상 골드 표시
    • 해당 PNG 첨부 전송
  • 플레이 중에는
    • 대상 물고기
    • 정확한 판정 시간
      를 UI에 노출하지 않도록 조정
  • 메시지 갱신 빈도 축소 및 판정 유예 시간 추가로 반응성 개선
  • EN/KO 번역 키 추가 및 정리
  • Docs/Plans, Docs/WorkDone, Docs/index.md 업데이트

플레이 흐름

  1. 허용된 채널에서 /fishing enter
  2. UserName's Fishing Spot 스레드 생성 또는 재사용
  3. 해당 스레드 안에서 /fishing cast
  4. ⬅️, ⏺️, ➡️, 🛌 버튼으로 플레이
  5. 성공 시 물고기 결과 메시지와 PNG 출력
  6. 같은 스레드에서 다시 /fishing cast로 재도전 가능
  7. /fishing end로 스레드 삭제

데이터 기반 요소

  • 물고기 출현은 spawnRate 가중치 기반
  • 보상 골드는 rewardGold.min/max 범위 랜덤
  • 반응 시간은 reactionWindowSec 기반
  • 거리 감소량은 위치별 min/max 범위 랜덤
  • 물고기별 약점 위치 시스템 적용

검증

  • yarn build
  • yarn test --runInBand

두 명령 모두 정상 통과했습니다.

참고 사항

  • 낚시 세션은 메모리 기반이므로 봇 재시작 시 유지되지 않습니다.
  • 성공/실패 후 스레드는 바로 삭제되지 않으며, /fishing end에서만 정리됩니다.
  • 현재 낚시는 refinement 경제의 gold 보상과 연동됩니다.
## 요약 이번 PR에서는 Kord에 낚시 미니게임 Phase 1을 구현했습니다. 주요 포함 내용: - `/fishing enter`, `/fishing cast`, `/fishing end` 명령 추가 - 사용자 전용 낚시 스레드 생성 및 재사용 흐름 추가 - 이모지 버튼 기반 낚시 플레이 루프 구현 - 물고기 데이터 기반 확률/보상/난이도/약점 위치 시스템 추가 - 성공 시 물고기 PNG 결과 메시지 출력 - 관련 i18n, 문서, 테스트 반영 ## 변경 사항 - `fishing` 미니게임을 공용 미니게임 구조에 추가 - `/fishing enter` - 낚시 전용 스레드 생성 또는 재진입 - `/fishing cast` - 자신의 낚시 스레드 안에서만 세션 시작 가능 - `/fishing end` - 진행 중 세션 정리 및 낚시 스레드 삭제 - `FishingService` 추가 - 사용자별 메모리 세션 관리 - 입력 예약형 판정 구조 - 거리 게이지 / 끊어짐 게이지 관리 - 휴식 시 끊어짐 회복 + 거리 증가 처리 - 성공/실패 후 재도전 가능한 스레드 유지 흐름 - `resource/data/fishing/fish_catalog.json` 추가 - 물고기별 출현 확률 - 골드 보상 min/max - 반응 시간 - 위치별 거리 감소폭 min/max - 아트 리소스 경로 - `resource/art/fishing` 추가 - 성공 결과용 물고기 PNG 리소스 연결 - 성공 시 결과 메시지에서 - 잡은 물고기 이름 표시 - 보상 골드 표시 - 해당 PNG 첨부 전송 - 플레이 중에는 - 대상 물고기 - 정확한 판정 시간 를 UI에 노출하지 않도록 조정 - 메시지 갱신 빈도 축소 및 판정 유예 시간 추가로 반응성 개선 - EN/KO 번역 키 추가 및 정리 - `Docs/Plans`, `Docs/WorkDone`, `Docs/index.md` 업데이트 ## 플레이 흐름 1. 허용된 채널에서 `/fishing enter` 2. `UserName's Fishing Spot` 스레드 생성 또는 재사용 3. 해당 스레드 안에서 `/fishing cast` 4. `⬅️`, `⏺️`, `➡️`, `🛌` 버튼으로 플레이 5. 성공 시 물고기 결과 메시지와 PNG 출력 6. 같은 스레드에서 다시 `/fishing cast`로 재도전 가능 7. `/fishing end`로 스레드 삭제 ## 데이터 기반 요소 - 물고기 출현은 `spawnRate` 가중치 기반 - 보상 골드는 `rewardGold.min/max` 범위 랜덤 - 반응 시간은 `reactionWindowSec` 기반 - 거리 감소량은 위치별 `min/max` 범위 랜덤 - 물고기별 약점 위치 시스템 적용 ## 검증 - `yarn build` - `yarn test --runInBand` 두 명령 모두 정상 통과했습니다. ## 참고 사항 - 낚시 세션은 메모리 기반이므로 봇 재시작 시 유지되지 않습니다. - 성공/실패 후 스레드는 바로 삭제되지 않으며, `/fishing end`에서만 정리됩니다. - 현재 낚시는 refinement 경제의 `gold` 보상과 연동됩니다.
myong added 1 commit 2026-03-31 09:49:51 +00:00
myong merged commit e7d435d7ea into main 2026-03-31 09:49:57 +00:00
Sign in to join this conversation.
No reviewers
No Label
No Milestone
No project
No Assignees
1 Participants
Notifications
Due Date
The due date is invalid or out of range. Please use the format 'yyyy-mm-dd'.

No due date set.

Dependencies

No dependencies set.

Reference: art/Kord#3
No description provided.