Mobile-first ritmo žaidimas su gyvu C# taisyklių redagavimu naršyklėje.
Pirminis taikinys: iPhone Safari. Taip pat veikia desktop naršyklėse.
- 4 juostų ritmo trasa su rodyklių valdymu (
← ↓ ↑ →) - C# studija žaidimo taisyklėms keisti realiu laiku
- Keičiamo aukščio C# redaktorius (apatinis dešinys kampas, tempimas aukštyn/žemyn)
- Mokymosi misijos (
0/5->5/5) su nuolat išsaugomu šablonų atrakinimo atlygiu - Šokantis arklys (
canvas) su spalvų, kepurių ir oro efektų valdymu per C# - Gyvi našumo rodikliai poraštėje (lietuviški:
kadr./s,ms, atmintis, garso balsai, dalelės) - Garso vizualizatorius poraštėje (veikia ir kai garsas nutildytas)
- Lietuviška UI ir dedikacija:
Skirta Nidai – nuo Roberto. Su gimtadieniu! 🎉- rodoma iškart po pagrindiniu pavadinimu
- TypeScript (
strictįjungtas) - Vite
- Vitest + Coverage (
@vitest/coverage-v8) - Playwright (desktop + iPhone profiliai)
- Monaco Editor
- Canvas renderinimas
- C# taisyklių vykdymas per
.NET WASMbandymą su saugiu fallback parseriu
npm install
npm run devAtidaryk adresą iš terminalo (vite output), dažniausiai http://127.0.0.1:5173.
- Atidaryk žaidimą, jis startuoja iškart (be splash/start ekranų).
- Spausk rodyklių mygtukus apačioje (
← ↓ ↑ →) kai nata kertahitliniją. - Atverk
C# studija: keisk žaidimo taisykles. - Keisk C# laukus, pvz.:
tobulasLangas,gerasLangastobuliTaskai,geriTaskaiserijaIkiUzsivedimoarklioSpalva,karciuSpalvasuKepure,kepuresTipas,oroEfektas
- Pakeitimai pritaikomi automatiškai po trumpos akimirkos.
- Misijų kortelė visada rodoma virš C# redaktoriaus.
- Įvykdžius visas 5 misijas, atrakini C# šablonų mygtukus.
- Atrakinta būsena išsaugoma naršyklės
localStorageraktenida2026bday:puzzlesUnlocked:v1, todėl šablonai lieka atrakinti ir po puslapio perkrovimo. - Garso nutildymo būsena (
Garsas: ĮJUNGTAS/IŠJUNGTAS) išsaugoma raktenida2026bday:soundMuted:v1, todėl po perkrovimo išlieka paskutinis pasirinkimas.
Jei matai klaidą po redagavimo:
- Patikrink, ar neužmiršai kabliataškio
;. - Patikrink, ar visi skliaustai
{ }uždaryti poromis. - Redaguok tik pažymėtą
GALI KEISTIsritį. - Po pakeitimo palauk trumpai (apie
0.1-0.2 s), kol taisyklės persikompiliuos.
npm run testnpx playwright install chromium webkit
npm run test:e2eE2E projektai:
iphone-12-pro-max(WebKit, iPhone 12 Pro Max profilis)iphone-15-pro(WebKit, iPhone 15 Pro profilis)desktop-chromium(Chromium, Desktop Chrome profilis)
npm run test:allnpm run lint
npm run format
npm run build
npm run previewWorkflow failai:
.github/workflows/deploy-pages.yml- build + deploy į GitHub Pages.github/workflows/e2e.yml- atskiras E2E pipeline (Chromium + WebKit)
Deploy modelis:
- Push į
mainpaleidžiadeploy-pagesworkflow. - Statinis build (
dist/) publikuojamas per GitHub Pages Actions. - E2E workflow yra atskiras ir neužblokuoja deploy artefakto generavimo.
- Pridėtas
site.webmanifestir iOSapple-touch-icon. - Home Screen pavadinimas:
Arklio Ritmas. - Naudojama brandinta ikona iš
public/icons/.
- Poraštėje rodoma papildoma informacija apie žaidimą ir našumą (lietuviškai, po vieną rodiklį eilutėje, kad išdėstymas nešokinėtų).
- Rodomas build numeris pagal Lietuvos laiką.
- Jei atminties API naršyklėje neprieinama, rodomas tekstas
neprieinama. localStoragediagnostikoje rodoma:- ar saugykla prieinama,
- bendras raktų kiekis,
- mūsų raktų (
nida2026bday:puzzlesUnlocked:v1,nida2026bday:soundMuted:v1) būsena ir reikšmė, - apytikslis saugyklos užimtumas,
- naršyklės
storage estimate(usage/quota), jei API prieinama.
src/core/- deterministinė ritmo/scoring/timing logikasrc/services/- C# compile/runtime/fallback sluoksnissrc/render/- arklio animatorius ir efektaisrc/ui/- editorius, šablonai, misijos, redagavimo UXspecs/- spec-driven modulio kontraktaitests/- Vitest testaie2e/- Playwright scenarijai
- Touch-first UI, be hover priklausomybės
- Safe-area palaikymas (
viewport-fit=cover,env(safe-area-inset-*)) - iPhone fokusavimo zoom prevencija redaktoriuje (no-zoom viewport + mobile editor font sizing)
- Optimizuotas iPhone landscape išdėstymas (safe-area + sumažinti aukščiai, kad viskas tilptų patogiai)
- Adaptyvus vizualinis FPS mobiliuose:
- autoplay: ~36 kadr./s
- manual: ~45 kadr./s
- desktop: ~60 kadr./s
requestAnimationFramerenderis ir lengvos animacijos
- Pirmiausia bandoma
.NET WASMaplinka naršyklėje. - Jei nepavyksta, įjungiamas suderinamas fallback režimas.
- Abiem režimais žaidimo taisyklės atsinaujina gyvai.
- Runtime režimo detalės žaidimo UI nebenerodomos (palikta kaip techninė informacija README faile).