Skip to content

Latest commit

ย 

History

8 Commits

Folders and files

NameName
Last commit message
Last commit date
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

๐ŸŽฎ Valorant Analytics

ํ˜„๋Œ€์ ์ธ Electron + React + C++ ๊ธฐ๋ฐ˜์˜ Valorant ๊ฒŒ์ž„ ๋ถ„์„ ๋„๊ตฌ์ž…๋‹ˆ๋‹ค.

โœจ ์ฃผ์š” ๊ธฐ๋Šฅ

  • ๐Ÿ” ํ”Œ๋ ˆ์ด์–ด ๊ฒ€์ƒ‰: Riot ID ๊ธฐ๋ฐ˜ ํ”Œ๋ ˆ์ด์–ด ์ •๋ณด ์กฐํšŒ
  • ๐Ÿ“Š ๋งค์น˜ ๋ถ„์„: ์ƒ์„ธํ•œ ๊ฒŒ์ž„ ๊ธฐ๋ก ๋ฐ ํ†ต๊ณ„ ๋ถ„์„
  • ๐Ÿ“ˆ ์„ฑ์žฅ ์ถ”์ : ์‹œ๊ฐ์  ์„ฑ๊ณผ ์ฐจํŠธ ๋ฐ ํŠธ๋ Œ๋“œ ๋ถ„์„
  • โšก ์‹ค์‹œ๊ฐ„ ๋ชจ๋‹ˆํ„ฐ๋ง: ํ˜„์žฌ ๊ฒŒ์ž„ ์ƒํƒœ ์ถ”์ 
  • ๐ŸŽจ ๋ชจ๋˜ UI: ๊ฒŒ์ด๋ฐ์— ์ตœ์ ํ™”๋œ ๋‹คํฌ ํ…Œ๋งˆ ์ธํ„ฐํŽ˜์ด์Šค

๐Ÿ—๏ธ ๊ธฐ์ˆ  ์Šคํƒ

Frontend

  • React 18: ์„ ์–ธํ˜• UI ์ปดํฌ๋„ŒํŠธ
  • Modern JavaScript: ES6+ ๋ฌธ๋ฒ• ํ™œ์šฉ
  • CSS-in-JS: ๋™์  ์Šคํƒ€์ผ๋ง

Backend

  • Electron: ํฌ๋กœ์Šคํ”Œ๋žซํผ ๋ฐ์Šคํฌํ†ฑ ์•ฑ
  • C++ Native Modules: ๊ณ ์„ฑ๋Šฅ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ
  • Node.js: API ํ†ต์‹  ๋ฐ ๋ฐ์ดํ„ฐ ๊ฐ€๊ณต

Data Sources

  • Riot Games API: ๊ณต์‹ ๊ฒŒ์ž„ ๋ฐ์ดํ„ฐ (์„ ํƒ์ )
  • Native Data Processing: ๋กœ์ปฌ ๋ฐ์ดํ„ฐ ๋ถ„์„
  • Smart Fallback: ๊ฐœ๋ฐœ์šฉ ๋”๋ฏธ ๋ฐ์ดํ„ฐ

๐Ÿš€ ๋น ๋ฅธ ์‹œ์ž‘

1. ์˜์กด์„ฑ ์„ค์น˜

# ๋ฃจํŠธ ํ”„๋กœ์ ํŠธ ์˜์กด์„ฑ
npm install

# React ์•ฑ ์˜์กด์„ฑ  
cd valorant-analytics && npm install && cd ..

# ๋„ค์ดํ‹ฐ๋ธŒ ๋ชจ๋“ˆ ์˜์กด์„ฑ
cd native && npm install && cd ..

2. ๋„ค์ดํ‹ฐ๋ธŒ ๋ชจ๋“ˆ ๋นŒ๋“œ

npm run rebuild-native

3. ๊ฐœ๋ฐœ ํ™˜๊ฒฝ ์‹คํ–‰

๋ฐฉ๋ฒ• 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 API ์—ฐ๋™ (๋‚˜์ค‘์— ์„ค์ •)

์‹ค์ œ ์„œ๋น„์Šค ๋ฐฐํฌ ์‹œ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์„ค์ •ํ•˜์„ธ์š”:

  1. Riot Developer Portal์—์„œ API ํ‚ค ๋ฐœ๊ธ‰
  2. valorant-analytics/src/config/settings.js ํŒŒ์ผ์—์„œ ์„ค์ • ๋ณ€๊ฒฝ:
app: {
  useDummyData: false, // ์‹ค์ œ API ์‚ฌ์šฉ
  showDataSource: false // ํ”„๋กœ๋•์…˜์—์„œ๋Š” ์ˆจ๊น€
},
riot: {
  apiKey: 'YOUR_RIOT_API_KEY_HERE'
}

์ฐธ๊ณ : ๊ฐœ๋ฐœ ๋‹จ๊ณ„์—์„œ๋Š” ๋”๋ฏธ ๋ฐ์ดํ„ฐ๋กœ๋„ ์ถฉ๋ถ„ํžˆ ๋ชจ๋“  ๊ธฐ๋Šฅ์„ ๊ฒ€์ฆํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ฐœ๋ฐœ ๋ชจ๋“œ ์„ค์ •

  • ์ž๋™ ๋ฆฌ๋กœ๋“œ: ์ฝ”๋“œ ๋ณ€๊ฒฝ ์‹œ ์ž๋™ ์ƒˆ๋กœ๊ณ ์นจ
  • ๊ฐœ๋ฐœ์ž ๋„๊ตฌ: Electron ์•ฑ์—์„œ ์ž๋™ ์—ด๋ฆผ
  • ๋”๋ฏธ ๋ฐ์ดํ„ฐ: API ํ‚ค ์—†์ด๋„ ๋ชจ๋“  ๊ธฐ๋Šฅ ํ…Œ์ŠคํŠธ ๊ฐ€๋Šฅ

๐Ÿ“ฑ ์‚ฌ์šฉ๋ฒ•

ํ”Œ๋ ˆ์ด์–ด ๊ฒ€์ƒ‰

  1. ์•ฑ ์ƒ๋‹จ์˜ ๊ฒ€์ƒ‰์ฐฝ์— ํ”Œ๋ ˆ์ด์–ด ์ •๋ณด ์ž…๋ ฅ
  2. ํ˜•์‹: PlayerName#TAG (์˜ˆ: Hide on bush#KR1)
  3. ํƒœ๊ทธ ์ƒ๋žต ์‹œ ๊ธฐ๋ณธ๊ฐ’ 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

๐Ÿ“‹ ๋กœ๋“œ๋งต

Phase 1: ๊ธฐ๋Šฅ ์™„์„ฑ โœ…

  • Electron + React ํ†ตํ•ฉ
  • C++ ๋„ค์ดํ‹ฐ๋ธŒ ๋ชจ๋“ˆ
  • IPC ํ†ต์‹  ์‹œ์Šคํ…œ
  • UI/UX ๊ฐœ์„ 
  • Riot API ์—ฐ๋™ ์ค€๋น„

Phase 2: ๊ณ ๊ธ‰ ๊ธฐ๋Šฅ

  • ์‹ค์ œ Riot API ๋ฐ์ดํ„ฐ ์—ฐ๋™
  • ๋กœ์ปฌ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค (SQLite)
  • ์‚ฌ์šฉ์ž ์„ค์ • ์ €์žฅ
  • ๊ณ ๊ธ‰ ๋ถ„์„ ์•Œ๊ณ ๋ฆฌ์ฆ˜

Phase 3: ์ƒ์šฉํ™”

  • ์ž๋™ ์—…๋ฐ์ดํŠธ ์‹œ์Šคํ…œ
  • ์˜ค๋ฅ˜ ๋ฆฌํฌํŒ…
  • ์‚ฌ์šฉ์ž ์ธ์ฆ
  • ์•ฑ ์Šคํ† ์–ด ๋ฐฐํฌ

๐Ÿ“„ ๋ผ์ด์„ ์Šค

์ด ํ”„๋กœ์ ํŠธ๋Š” MIT ๋ผ์ด์„ ์Šค ํ•˜์— ๋ฐฐํฌ๋ฉ๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ LICENSE ํŒŒ์ผ์„ ์ฐธ์กฐํ•˜์„ธ์š”.

โš ๏ธ ๋ฉด์ฑ… ์กฐํ•ญ

์ด ํ”„๋กœ์ ํŠธ๋Š” Riot Games์™€ ๊ณต์‹์ ์œผ๋กœ ์—ฐ๊ด€๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. Valorant๋Š” Riot Games, Inc.์˜ ์ƒํ‘œ์ž…๋‹ˆ๋‹ค.


๐Ÿ’ก ๋ฌธ์˜์‚ฌํ•ญ์ด๋‚˜ ๋ฒ„๊ทธ ๋ฆฌํฌํŠธ๋Š” Issues ํƒญ์„ ์ด์šฉํ•ด์ฃผ์„ธ์š”!

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages