ํ๋์ ์ธ Electron + React + C++ ๊ธฐ๋ฐ์ Valorant ๊ฒ์ ๋ถ์ ๋๊ตฌ์ ๋๋ค.
- ๐ ํ๋ ์ด์ด ๊ฒ์: Riot ID ๊ธฐ๋ฐ ํ๋ ์ด์ด ์ ๋ณด ์กฐํ
- ๐ ๋งค์น ๋ถ์: ์์ธํ ๊ฒ์ ๊ธฐ๋ก ๋ฐ ํต๊ณ ๋ถ์
- ๐ ์ฑ์ฅ ์ถ์ : ์๊ฐ์ ์ฑ๊ณผ ์ฐจํธ ๋ฐ ํธ๋ ๋ ๋ถ์
- โก ์ค์๊ฐ ๋ชจ๋ํฐ๋ง: ํ์ฌ ๊ฒ์ ์ํ ์ถ์
- ๐จ ๋ชจ๋ UI: ๊ฒ์ด๋ฐ์ ์ต์ ํ๋ ๋คํฌ ํ ๋ง ์ธํฐํ์ด์ค
- React 18: ์ ์ธํ UI ์ปดํฌ๋ํธ
- Modern JavaScript: ES6+ ๋ฌธ๋ฒ ํ์ฉ
- CSS-in-JS: ๋์ ์คํ์ผ๋ง
- Electron: ํฌ๋ก์คํ๋ซํผ ๋ฐ์คํฌํฑ ์ฑ
- C++ Native Modules: ๊ณ ์ฑ๋ฅ ๋ฐ์ดํฐ ์ฒ๋ฆฌ
- Node.js: API ํต์ ๋ฐ ๋ฐ์ดํฐ ๊ฐ๊ณต
- Riot Games API: ๊ณต์ ๊ฒ์ ๋ฐ์ดํฐ (์ ํ์ )
- Native Data Processing: ๋ก์ปฌ ๋ฐ์ดํฐ ๋ถ์
- Smart Fallback: ๊ฐ๋ฐ์ฉ ๋๋ฏธ ๋ฐ์ดํฐ
# ๋ฃจํธ ํ๋ก์ ํธ ์์กด์ฑ
npm install
# React ์ฑ ์์กด์ฑ
cd valorant-analytics && npm install && cd ..
# ๋ค์ดํฐ๋ธ ๋ชจ๋ ์์กด์ฑ
cd native && npm install && cd ..npm run rebuild-native๋ฐฉ๋ฒ 1: ์คํฌ๋ฆฝํธ ์ฌ์ฉ (๊ถ์ฅ)
./start-dev.sh๋ฐฉ๋ฒ 2: npm ๋ช ๋ น์ด
npm run dev๋ฐฉ๋ฒ 3: ์๋ ์คํ
# ํฐ๋ฏธ๋ 1: React ๊ฐ๋ฐ ์๋ฒ
cd valorant-analytics && npm start
# ํฐ๋ฏธ๋ 2: Electron ์ฑ (React ์๋ฒ ์์ ํ)
npm run electronํ์ฌ ๋๋ฏธ ๋ฐ์ดํฐ ๋ชจ๋๋ก ์ค์ ๋์ด ์์ด API ํค ์์ด๋ ๋ชจ๋ ๊ธฐ๋ฅ์ ์๋ฒฝํ๊ฒ ํ ์คํธํ ์ ์์ต๋๋ค:
- โ ํ์ค์ ์ธ ๋งค์น ๋ฐ์ดํฐ: ์ค์ ๊ฒ์๊ณผ ์ ์ฌํ KDA, ์์ด์ ํธ, ๋งต ์ ๋ณด
- โ ์ฑ์ฅ ํธ๋ ๋ ์๋ฎฌ๋ ์ด์ : ์๊ฐ์ ๋ฐ๋ฅธ ์ค๋ ฅ ๋ณํ ๋ฐ์
- โ ์ค์๊ฐ ๊ฒ์ ์ํ: 30% ํ๋ฅ ๋ก ๊ฒ์ ์ค ์ํ ์๋ฎฌ๋ ์ด์
- โ ์์ ํ ํต๊ณ ๋ถ์: ์น๋ฅ , ์ ํธ ์์ด์ ํธ/๋งต, ์ต๊ทผ ํผ ๋ฑ
- โ 25๊ฐ ์์ด์ ํธ ์ง์: ์ต์ Valorant ์์ด์ ํธ ํฌํจ
- โ 10๊ฐ ๋งต ์ง์: Sunset๊น์ง ์ต์ ๋งต ํฌํจ
์ค์ ์๋น์ค ๋ฐฐํฌ ์ ๋ค์๊ณผ ๊ฐ์ด ์ค์ ํ์ธ์:
- Riot Developer Portal์์ API ํค ๋ฐ๊ธ
valorant-analytics/src/config/settings.jsํ์ผ์์ ์ค์ ๋ณ๊ฒฝ:
app: {
useDummyData: false, // ์ค์ API ์ฌ์ฉ
showDataSource: false // ํ๋ก๋์
์์๋ ์จ๊น
},
riot: {
apiKey: 'YOUR_RIOT_API_KEY_HERE'
}์ฐธ๊ณ : ๊ฐ๋ฐ ๋จ๊ณ์์๋ ๋๋ฏธ ๋ฐ์ดํฐ๋ก๋ ์ถฉ๋ถํ ๋ชจ๋ ๊ธฐ๋ฅ์ ๊ฒ์ฆํ ์ ์์ต๋๋ค.
- ์๋ ๋ฆฌ๋ก๋: ์ฝ๋ ๋ณ๊ฒฝ ์ ์๋ ์๋ก๊ณ ์นจ
- ๊ฐ๋ฐ์ ๋๊ตฌ: Electron ์ฑ์์ ์๋ ์ด๋ฆผ
- ๋๋ฏธ ๋ฐ์ดํฐ: API ํค ์์ด๋ ๋ชจ๋ ๊ธฐ๋ฅ ํ ์คํธ ๊ฐ๋ฅ
- ์ฑ ์๋จ์ ๊ฒ์์ฐฝ์ ํ๋ ์ด์ด ์ ๋ณด ์ ๋ ฅ
- ํ์:
PlayerName#TAG(์:Hide on bush#KR1) - ํ๊ทธ ์๋ต ์ ๊ธฐ๋ณธ๊ฐ
KR1์ฌ์ฉ
- ํ๋ ์ด์ด ํต๊ณ: ์น๋ฅ , ํ๊ท KDA, ํค๋์ท ๋น์จ ๋ฑ
- ๋งค์น ํ์คํ ๋ฆฌ: ์ต๊ทผ ๊ฒ์ ๊ธฐ๋ก ๋ฐ ์์ธ ์ ๋ณด
- ์ฑ์ฅ ์ฐจํธ: ์๊ฐ์ ์ฑ๊ณผ ํธ๋ ๋
- ์ค์๊ฐ ์ํ: ํ์ฌ ๊ฒ์ ์งํ ์ํฉ (5์ด๋ง๋ค ์ ๋ฐ์ดํธ)
valo/
โโโ main.js # Electron ๋ฉ์ธ ํ๋ก์ธ์ค
โโโ preload.js # Electron ํ๋ฆฌ๋ก๋ ์คํฌ๋ฆฝํธ
โโโ native/ # C++ ๋ค์ดํฐ๋ธ ๋ชจ๋
โ โโโ binding.gyp # ๋น๋ ์ค์
โ โโโ tracker.cpp # ๋ค์ดํฐ๋ธ ์ฝ๋
โ โโโ package.json # ๋ค์ดํฐ๋ธ ์์กด์ฑ
โโโ valorant-analytics/ # React ์ฑ
โ โโโ src/
โ โ โโโ api/ # API ํด๋ผ์ด์ธํธ
โ โ โโโ components/ # React ์ปดํฌ๋ํธ
โ โ โโโ config/ # ์ฑ ์ค์
โ โ โโโ ipc.js # IPC ํต์ ๋ํผ
โ โโโ package.json # React ์์กด์ฑ
โโโ package.json # ๋ฃจํธ ์์กด์ฑ
npm run dev # ๊ฐ๋ฐ ๋ชจ๋ ์คํ
npm run build # ํ๋ก๋์
๋น๋
npm run rebuild-native # ๋ค์ดํฐ๋ธ ๋ชจ๋ ์ฌ๋น๋
npm run test # ํ
์คํธ ์คํ- React DevTools: ๋ธ๋ผ์ฐ์ ํ์ฅ ํ๋ก๊ทธ๋จ ์ฌ์ฉ
- Electron DevTools: ์ฑ์์ ์๋์ผ๋ก ์ด๋ฆผ (๊ฐ๋ฐ ๋ชจ๋)
- Console Logs: ํฐ๋ฏธ๋๊ณผ DevTools์์ ๋ก๊ทธ ํ์ธ
1. net::ERR_FILE_NOT_FOUND ์ค๋ฅ
- ์์ธ: React ๊ฐ๋ฐ ์๋ฒ๊ฐ ์คํ๋์ง ์์
- ํด๊ฒฐ:
cd valorant-analytics && npm start์คํ ํ Electron ์์
2. ๋ค์ดํฐ๋ธ ๋ชจ๋ ๋น๋ ์คํจ
- ์์ธ: C++ ์ปดํ์ผ๋ฌ ๋๋ node-gyp ๋ฌธ์
- ํด๊ฒฐ:
npm run rebuild-native์คํ
3. API ํธ์ถ ์คํจ
- ์์ธ: Riot API ํค ๋ฌธ์ ๋๋ ๋คํธ์ํฌ ์ค๋ฅ
- ํด๊ฒฐ: ๋๋ฏธ ๋ฐ์ดํฐ ๋ชจ๋๋ก ํ
์คํธ (
useDummyData: true)
# Electron ๋ฉ์ธ ํ๋ก์ธ์ค ๋ก๊ทธ
npm run electron
# React ๊ฐ๋ฐ ์๋ฒ ๋ก๊ทธ
cd valorant-analytics && npm start- Electron + React ํตํฉ
- C++ ๋ค์ดํฐ๋ธ ๋ชจ๋
- IPC ํต์ ์์คํ
- UI/UX ๊ฐ์
- Riot API ์ฐ๋ ์ค๋น
- ์ค์ Riot API ๋ฐ์ดํฐ ์ฐ๋
- ๋ก์ปฌ ๋ฐ์ดํฐ๋ฒ ์ด์ค (SQLite)
- ์ฌ์ฉ์ ์ค์ ์ ์ฅ
- ๊ณ ๊ธ ๋ถ์ ์๊ณ ๋ฆฌ์ฆ
- ์๋ ์ ๋ฐ์ดํธ ์์คํ
- ์ค๋ฅ ๋ฆฌํฌํ
- ์ฌ์ฉ์ ์ธ์ฆ
- ์ฑ ์คํ ์ด ๋ฐฐํฌ
์ด ํ๋ก์ ํธ๋ MIT ๋ผ์ด์ ์ค ํ์ ๋ฐฐํฌ๋ฉ๋๋ค. ์์ธํ ๋ด์ฉ์ LICENSE ํ์ผ์ ์ฐธ์กฐํ์ธ์.
์ด ํ๋ก์ ํธ๋ Riot Games์ ๊ณต์์ ์ผ๋ก ์ฐ๊ด๋์ง ์์ต๋๋ค. Valorant๋ Riot Games, Inc.์ ์ํ์ ๋๋ค.
๐ก ๋ฌธ์์ฌํญ์ด๋ ๋ฒ๊ทธ ๋ฆฌํฌํธ๋ Issues ํญ์ ์ด์ฉํด์ฃผ์ธ์!