Skip to content

shubich/seawars

Repository files navigation

CI License: ISC React 16 TypeScript Webpack 4 Tailwind CSS 3

SeaWars

ΠšΠ»Π°ΡΡΠΈΡ‡Π΅ΡΠΊΠ°Ρ ΠΈΠ³Ρ€Π° Β«ΠœΠΎΡ€ΡΠΊΠΎΠΉ Π±ΠΎΠΉΒ» Π² Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π΅ Π½Π° React + TypeScript.

ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚:

  • соврСмСнный UI (Tailwind + SCSS),
  • нСсколько Ρ€Π΅ΠΆΠΈΠΌΠΎΠ² ΠΈΠ³Ρ€Ρ‹,
  • Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅ Π·Π²ΡƒΠΊΠΈ (Π±Π΅Π· CORS-зависимостСй),
  • CI-ΠΏΠ°ΠΉΠΏΠ»Π°ΠΉΠ½ (lint + test + build).

ВозмоТности

  • Π Π΅ΠΆΠΈΠΌΡ‹:
    • Player vs AI
    • AI vs AI
  • Π­ΠΊΡ€Π°Π½ настроСк:
    • имя ΠΈΠ³Ρ€ΠΎΠΊΠ°,
    • Π·Π°Π΄Π΅Ρ€ΠΆΠΊΠ° AI,
    • Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅/Π²Ρ‹ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ Π·Π²ΡƒΠΊΠ°.
  • Π—Π²ΡƒΠΊΠΎΠ²Ρ‹Π΅ эффСкты выстрСлов ΠΈ ΠΏΠΎΠ±Π΅Π΄Ρ‹/пораТСния (Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅ .ogg Π² Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ).
  • Адаптивный интСрфСйс.

Π‘ΠΊΡ€ΠΈΠ½ΡˆΠΎΡ‚Ρ‹

Π“Π»Π°Π²Π½ΠΎΠ΅ мСню

Main

Π˜Π³Ρ€Π°

Game

Настройки

Settings

Π’Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ

  • React 16
  • TypeScript
  • Webpack 4
  • Tailwind CSS 3
  • Sass
  • Jest
  • ESLint

Быстрый старт

ВрСбования

  • Node.js (рСкомСндуСтся Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹ΠΉ LTS)
  • npm

Установка

npm install

Запуск Π² dev-Ρ€Π΅ΠΆΠΈΠΌΠ΅

npm start

ПослС старта ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ доступно ΠΏΠΎ адрСсу:

  • http://localhost:8080

Π‘Π±ΠΎΡ€ΠΊΠ° production

npm run build

ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ качСства

npm run lint
npm test

Π‘ΠΊΡ€ΠΈΠΏΡ‚Ρ‹

  • npm start β€” запуск dev-сСрвСра webpack
  • npm run build β€” production-сборка
  • npm run lint β€” ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° ESLint
  • npm test β€” тСсты Jest + coverage

Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°

src/
  actions/          # action creators
  components/       # ΠΏΠ΅Ρ€Π΅ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ UI-ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹
  constants/        # константы (Π²ΠΊΠ»ΡŽΡ‡Π°Ρ sounds.ts)
  containers/       # ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Ρ‹ ΠΈΠ³Ρ€ΠΎΠ²Ρ‹Ρ… Ρ€Π΅ΠΆΠΈΠΌΠΎΠ²
  pages/            # страницы прилоТСния (Main, Game, Settings)
  reducers/         # игровая Π»ΠΎΠ³ΠΈΠΊΠ° reducer-ΠΎΠ²
  styles/           # ΠΎΠ±Ρ‰ΠΈΠ΅ SCSS-ΠΌΠΎΠ΄ΡƒΠ»ΠΈ
  utils/            # ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρ‹, AI, настройки
  assets/sound/     # Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅ Π·Π²ΡƒΠΊΠΈ .ogg

Π—Π²ΡƒΠΊΠΈ

Π—Π²ΡƒΠΊΠΈ Π»Π΅ΠΆΠ°Ρ‚ локально Π²:

  • src/assets/sound/*.ogg

На этапС сборки ΠΎΠ½ΠΈ ΠΊΠΎΠΏΠΈΡ€ΡƒΡŽΡ‚ΡΡ Π²:

  • dist/sound/*.ogg

Π­Ρ‚ΠΎ сдСлано ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ с CORS ΠΏΡ€ΠΈ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ΅ Π°ΡƒΠ΄ΠΈΠΎ.

Π ΠΎΡƒΡ‚ΠΈΠ½Π³ ΠΈ Π±Π°Π·ΠΎΠ²Ρ‹ΠΉ ΠΏΡƒΡ‚ΡŒ

ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ PUBLIC_PATH ΠΊΠ°ΠΊ Π±Π°Π·ΠΎΠ²Ρ‹ΠΉ ΠΏΡƒΡ‚ΡŒ (см. src/constants/url.ts).

Π­Ρ‚ΠΎ ΡƒΠ΄ΠΎΠ±Π½ΠΎ для GitHub Pages/ΠΏΠΎΠ΄ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΎΠ²:

  • Π² CI выставлСн PUBLIC_PATH=/seawars/.

CI

Workflow: .github/workflows/ci.yml

Pipeline:

  1. npm ci
  2. npm run lint
  3. npm test -- --watchman=false
  4. npm run build
  5. ΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ dist/index.html Π² dist/404.html для SPA fallback

Troubleshooting

Ошибка npm ci ΠΏΡ€ΠΎ рассинхрон package-lock.json

Если CI ΠΏΠ°Π΄Π°Π΅Ρ‚ с сообщСниСм Π²ΠΈΠ΄Π°: npm ci can only install packages when your package.json and package-lock.json are in sync

Π‘Π΄Π΅Π»Π°ΠΉΡ‚Π΅:

npm install

Если Π½ΡƒΠΆΠ½ΠΎ строго ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΠΈΡ‚ΡŒ ΠΎΠΊΡ€ΡƒΠΆΠ΅Π½ΠΈΠ΅ CI (npm 10), ΠΌΠΎΠΆΠ½ΠΎ:

npx npm@10 install --package-lock-only
npx npm@10 ci

ПослС этого Π·Π°ΠΊΠΎΠΌΠΌΠΈΡ‚ΡŒΡ‚Π΅ ΠΎΠ±Π½ΠΎΠ²Π»Ρ‘Π½Π½Ρ‹ΠΉ package-lock.json.

About

🚒 Browser game

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors