레알팜 모바일 게임의 두레 가공품 계산 도우미 앱입니다. GitHub Pages에서 동작하는 정적 Vue.js 애플리케이션입니다.
- 두레 가공품 이름과 개수를 입력하면 필요한 작물과 중간 가공품을 자동으로 계산
- 체인 형식 의존성 자동 해결 (A → B → C 구조)
- 건물별 가공품 그룹화 표시
- 의존성 체인 시각화
- 블루스택 연동: PC에서 블루스택으로 실행 중인 게임 화면에서 데이터 자동 추출
이 프로젝트는 uv를 사용하여 백엔드와 프론트엔드를 통합 관리합니다.
# 1. 초기 설정 (의존성 설치 포함)
uv run setup
# 2. 개발 서버 실행 (백엔드 + 프론트엔드 동시 실행)
uv run dev이 명령어로 백엔드(http://localhost:5000)와 프론트엔드(http://localhost:8080)가 동시에 실행됩니다.
자세한 내용은 UV_INTEGRATION_GUIDE.md를 참고하세요.
uv run frontend
# 또는
npm run serveuv run backend
# 또는
uv run python bluestack_integration.py- 의존성 설치:
npm install- 개발 서버 실행:
npm run serve- 빌드:
npm run build이 프로젝트는 uv를 사용하여 Python 패키지를 관리합니다.
빠른 시작:
# uv 설치 (아직 설치하지 않은 경우)
curl -LsSf https://astral.sh/uv/install.sh | sh
# 의존성 설치
uv sync
# 서버 실행
uv run python bluestack_integration.py자세한 내용은 UV_SETUP.md를 참고하세요.
# 개발
uv run dev # 백엔드 + 프론트엔드 동시 실행
uv run backend # 백엔드만 실행
uv run frontend # 프론트엔드만 실행
# 설치
uv run install # 모든 의존성 설치
uv run install-backend # 백엔드 의존성만 설치
uv run install-frontend # 프론트엔드 의존성만 설치
# 빌드
uv run build # 전체 빌드
uv run build-frontend # 프론트엔드만 빌드
uv run build-backend # 백엔드만 빌드
# 테스트
uv run test # 전체 테스트
uv run test-frontend # 프론트엔드만 테스트
uv run test-backend # 백엔드만 테스트
# 초기 설정
uv run setup # 프로젝트 초기 설정Windows에서 바로 시작하려면:
- 연결 테스트:
test_connection.bat실행 (ADB 연결 확인) - 서버 시작:
start_server.bat실행 (백엔드 서버 시작) - 앱 실행:
npm run serve(프론트엔드 실행)
또는 uv 사용:
uv run dev # 백엔드 + 프론트엔드 동시 실행자세한 내용은 BLUESTACK_SETUP.md를 참고하세요.
PC에서 블루스택으로 레알팜 게임을 실행 중인 경우, 게임 화면에서 데이터를 자동으로 추출하여 앱에 연동할 수 있습니다.
-
ADB 설치
- Windows: Android SDK Platform Tools 다운로드 및 설치
- ADB가 시스템 PATH에 등록되어 있어야 합니다
- 터미널에서
adb version명령어로 확인
-
블루스택 설정
- 블루스택 실행
- 블루스택 설정 > 고급 > Android Debug Bridge 활성화
- 터미널에서
adb devices명령어로 연결 확인
-
Python 백엔드 서버 의존성 설치
uv 사용 (권장):
# uv 설치 (아직 설치하지 않은 경우)
# Windows/Linux/macOS: curl -LsSf https://astral.sh/uv/install.sh | sh
# 또는: pip install uv
# 의존성 설치
uv sync또는 pip 사용:
pip install -r requirements.txt- 백엔드 서버 실행
uv 사용:
uv run python bluestack_integration.py또는 일반 Python:
python bluestack_integration.py서버가 http://localhost:5000에서 실행됩니다.
- 프론트엔드 실행
npm run serve- 블루스택 연동 탭 사용
- 앱에서 "블루스택 연동" 탭(5번 키) 선택
- "연결 확인" 버튼으로 ADB 연결 상태 확인
- 게임 화면에서 데이터를 확인할 수 있는 화면으로 이동
- "스크린샷 캡처 및 데이터 추출" 버튼 클릭
- 추출된 아이템 목록 확인 후 "검색에 적용" 버튼 클릭
백엔드 서버는 다음 API를 제공합니다:
GET /api/bluestack/status- ADB 연결 상태 확인POST /api/bluestack/screenshot- 스크린샷 캡처POST /api/bluestack/extract- 스크린샷에서 데이터 추출 (OCR)POST /api/bluestack/click- 화면 특정 위치 클릭POST /api/bluestack/swipe- 화면 스와이프
- OCR 정확도는 게임 화면의 텍스트 품질에 따라 달라질 수 있습니다
- 게임 화면이 명확하게 보이는 상태에서 캡처하는 것이 좋습니다
- 추출된 데이터는 수동으로 확인 및 수정이 필요할 수 있습니다
이 프로젝트는 hawksung1.github.io 레포지토리에 배포됩니다.
GitHub Actions가 자동으로 배포합니다:
main브랜치에 푸시하면 자동으로 빌드 및 배포됩니다.- GitHub Pages 설정에서 소스를
gh-pages브랜치로 설정하세요.
npm run deploysrc/
├── components/ # Vue 컴포넌트
│ ├── SearchForm.vue # 검색 입력 폼
│ ├── ResultDisplay.vue # 결과 표시
│ └── RecipeChain.vue # 의존성 체인 시각화
├── data/ # 데이터 파일
│ ├── products.json # 가공품 데이터
│ └── buildings.json # 건물 데이터
├── utils/ # 유틸리티 함수
│ ├── calculator.js # 계산 로직
│ └── chainResolver.js # 체인 의존성 해결
├── App.vue # 메인 앱 컴포넌트
└── main.js # 엔트리 포인트
src/data/products.json 파일에 가공품 정보를 추가하면 됩니다:
{
"id": "product_id",
"name": "가공품 이름",
"building": "건물 이름",
"ingredients": [
{ "type": "crop", "name": "작물명", "count": 10 },
{ "type": "product", "name": "다른 가공품", "count": 1 }
]
}MIT License