Cod sursă joc ritmic: partituri de note, sincronizare și melodii noi
Cum stochează Riffvolt 12 piese și 48 de partituri, unde se decid sincronizarea și scorul și ce înseamnă să adaugi o melodie proprie.

Codul sursă al unui joc ritmic înseamnă de fapt două lucruri: codul care judecă sincronizarea și datele care spun când sosește fiecare notă. Cumpărătorii vor aproape întotdeauna să schimbe al doilea, pentru că melodiile noi sunt ce face un joc ritmic al tău. Riffvolt, șablonul nostru de ritm rock cu patru benzi, ține lista de melodii într-un singur fișier manifest, iar fiecare partitură de note în fișierul ei, așa că adăugarea unei melodii este o lucrare de date, cu o listă de verificare clară.
Ghidul parcurge pachetul: ce redă, unde trăiesc sincronizarea și scorul, cum adaugi o melodie, cum recompilezi și găzduiești jocul, ce permite licența și ce lasă în afară ediția. Numele fișierelor vin din ghidul pentru cumpărător care însoțește jocul.
Un lucru de reținut de la început: spre deosebire de unele dintre șabloanele noastre, Riffvolt are nevoie de recompilare după ce schimbi sursa sau adaugi melodii. Găzduirea dosarului de joc livrat nu cere nimic altceva decât un server web static.
Ce redă acest cod sursă de joc ritmic
Riffvolt este un joc ritmic rock finalizat, cu patru benzi, pentru browser. Jucătorii lovesc notele la timp, țin apăsate notele lungi până la capăt, le îndoaie cu whammy și umplu un indicator ROCK care pornește overdrive, un spectacol de lumini care nu adaugă puncte și se termină la orice ratare. Precizia sincronizării adună scor și combo.
- 12 piese complete, fiecare cu partituri Easy (ușor), Normal (normal) și Hard (greu), plus Rock God (zeul rockului), care se deschide după turneu: 48 de partituri de note în total.
- Un turneu prin patru locuri (Garage (garaj), The road (drumul), Festival (festivalul) și Arena (arena)), câte trei melodii fiecare. Stelele din primele două deschid bisul, iar terminarea bisului deschide următorul loc, cu scene de poveste și recompense cosmetice precum urme și rame.
- Joc liber: orice melodie la orice dificultate, cu înregistrări personale salvate melodie cu melodie în browser.
- Comenzi: D, F, J și K implicit, atingerea benzilor pe ecran tactil sau un gamepad. Asignările tastelor sunt în Setări.
- Confort: calibrarea audio pentru decalaj, care ajută la căștile Bluetooth, mișcare redusă și un mod pentru fotosensibilitate care atenuează bliț-urile și fulgerele.
- 14 limbi de interfață.
Vezi pagina Riffvolt, demo-ul și manualele
Cum sunt organizate fișierele
Descărcarea conține game/ (fișierele pentru publicare), source/ (proiectul TypeScript), documentation/ (manuale ilustrate în engleză și portugheză) și licenses/ (notele componentelor terțe). În source/, separarea dintre datele melodiilor și logica jocului este curată.
- public/manifest.json: catalogul melodiilor, cu durata fiecăreia, versiunea audio și căile partiturilor.
- public/charts/: cele 48 de partituri de note.
- public/audio/: înregistrările pieselor.
- src/core/chartValidate.ts: schema partiturilor și validarea sincronizării.
- src/core/judge.ts: judecarea sincronizării.
- src/core/scoring.ts: regulile scorului și ale combo-ului.
- src/game/campaign.ts: progresul turneului.
- src/game/session.ts: ciclul de viață al unei melodii și calculul rezultatului.
- src/i18n/locales.ts: cele 14 dicționare de interfață.
- src/net/localRecords.js: înregistrările personale locale.
- src/ui/style.css: interfața și layout-ul responsiv.
Pentru că judecătorul și scorul sunt fișiere separate, poți face ferestrele de sincronizare mai stricte sau mai indulgente fără să atingi felul în care se adună punctele, și invers. Asta este separarea de căutat în orice cod ritmic.
Cum adaugi propria melodie, pas cu pas
Aceasta este schimbarea despre care întreabă primii cumpărătorii de jocuri ritmice. Pachetul nu are editor de partituri, deci partiturile sunt scrise ca date, iar manualul enumeră exact ce cere fiecare fișier.
- Pune înregistrarea în public/audio/. Folosește doar audio pentru care ai drepturile pentru produsul tău final.
- Creează câte o partitură pentru fiecare dificultate suportată, în public/charts/. Fiecare partitură are nevoie de songId-ul potrivit, de difficulty, audioVersion, offset și notele în ordine.
- Adaugă melodia în public/manifest.json, cu un id unic, durată, BPM, temă, audioVersion și căile partiturilor.
- Verifică fiecare partitură cu validatorul din chartValidate.ts.
- Joacă întreaga piesă la fiecare dificultate ca să confirmi sincronizarea. Validatorul verifică structura și regulile de sincronizare, nu dacă o notă se simte bine.
- Recompilează, apoi încarcă noul build.
Dacă vrei un întreg nou sunet, nu o melodie în plus, planifică lucrul pe partitură: 12 melodii la patru dificultăți înseamnă 48 de partituri, iar fiecare merită o parcurgere completă înainte de lansare.
Recompilarea și ce altceva poți schimba
Se recomandă Node.js 24 LTS. În source/, rulează npm ci, apoi npm run typecheck și npm run build, și publică doar conținutul dosarului dist/. npm run preview servește build-ul local pentru verificare. Nu încărca node_modules/. Vite folosește o bază relativă, deci build-ul funcționează într-un subdosar. Build-ul livrat este formatat pentru citire; manualul cere să păstrezi minify:false și cssMinify:false când recompilezi, ca următorul om să poată citi în continuare codul.
- Brandingul: culorile și layout-ul din src/ui/style.css, plus logo-ul tău. Marca albă este permisă, deci brandul tău poate înlocui pe al nostru.
- Texte: src/i18n/locales.ts, pentru limbile pe care le livrezi.
- Turneul: ordinea locurilor și ce deblochează ce, în campaign.ts.
- Dificultatea: ferestrele de sincronizare din judge.ts, apoi regulile de scor și combo din scoring.ts.
- Melodiile: ultimele, pentru că fiecare partitură nouă cere o parcurgere completă.
Fă o copie de rezervă înainte să editezi, schimbă câte o funcție o dată și testează meniul, o melodie, pauza, ecranul rezultatului și o reîncărcare după fiecare schimbare. Păstrează stabile ID-urile elementelor și cheile de salvare, ca jucătorii existenți să își păstreze înregistrările.
Găzduirea sau integrarea într-un portal
Încarcă conținutul dosarului game/ într-un dosar de pe gazda ta HTTP(S), păstrează căile relative și deschide adresa. Nu este nevoie de PHP, bază de date sau cont. Nu deschide index.html prin file://; pentru un test local, rulează python -m http.server 8765 în dosarul game/.
- Browserul are nevoie de JavaScript, module ES, Canvas 2D și Web Audio.
- Browserele deblochează audio abia după prima atingere sau click, deci un prim ecran mut este normal.
- Într-un iframe, permite ecranul complet și redarea automată.
- Servește fișierele .js cu un tip MIME JavaScript, niciodată ca text/plain.
- Toate activele, fonturile și bibliotecile necesare rulării sunt în build. Nu există un CDN obligatoriu, dar nu este o aplicație offline instalabilă.
Salvările aparțin originii browserului, deci mutarea jocului pe alt domeniu îi face pe jucători să înceapă de la zero. Această ediție își folosește propriile chei de salvare, separate de edițiile noastre pentru portal. Proiectele de aplicație nativă nu sunt incluse; lansarea într-un magazin este lucrare separată.
Ce nu include ediția
Riffvolt este ediția locală pentru browser. Nu are camere online sau multiplayer, nu are clasament online sau clasament comun, nu are SDK de publicitate sau cont, nu are editor de partituri, nu are aplicații native și nu are găzduire. Înregistrările personale și progresul turneului rămân în browserul jucătorului.
Dacă un joc muzical se potrivește catalogului tău, alte două șabloane ale noastre bazate pe sincronizare pot merge alături.
Pinloop: un arcade cu un singur buton, bazat pe sincronizare, cu 30 de ținte
Ricopop: un arcade cu ricoșeuri, cu 50 de niveluri
Licență și preț
Riffvolt are prețul de listă de 49 USD. Până pe 30 noiembrie 2026 promoția Black Friday scade cu 15%, deci costă 41,65 USD, iar cumpărarea a două sau mai multor șabloane în aceeași comandă adaugă o reducere de pachet de 5% până la 20%. Licența este perpetuă și neexclusivă, pentru un produs final, al tău sau al unui client. Poți modifica codul, grafica și audio, să înlocuiești brandul nostru cu al tău și să oferi jocul gratuit sau cu reclame. Folosește melodiile incluse ca parte a acelui produs final; nu poți revinde șablonul, codul lui sau activele lui separat. Șase luni de suport sunt incluse, sau douăsprezece cu extensia; melodiile noi, integrările și găzduirea se cotează separat.
Citește termenii complet ai licenței
Întrebări frecvente
Pot adăuga propriile melodii în codul sursă al jocului ritmic?
Da. Adaugi audio, câte o partitură pentru fiecare dificultate și o intrare în public/manifest.json, validezi partiturile, le parcurgi și apoi recompilezi. Un editor de partituri nu este inclus.
Am nevoie de Node.js ca să folosesc Riffvolt?
Nu ca să găzduiești dosarul de joc livrat. Node.js 24 LTS este recomandat doar ca să recompilezi după ce schimbi TypeScript-ul sau adaugi melodii.
Funcționează cu ecrane tactile și gamepad-uri?
Da. Jucătorii pot atinge benzile sau pot folosi un gamepad, iar comenzile se setează în Setări. Performanța depinde de dispozitiv, deci testează pe cele pe care le vizezi.
Ce este cu căștile Bluetooth și latența?
Setările includ calibrarea audio, care stabilește decalajul audio și ajută la căștile Bluetooth.
Există un clasament online?
Nu. Înregistrările personale se salvează pe melodie și dificultate, în browserul jucătorului. Nu există adversari la distanță sau clasamente comune.
Cui să-i fie destinat
Riffvolt se potrivește unui portal sau unui site care vrea un joc muzical în catalog, unui studio care livrează un joc ritmic cu brand unui singur client și unui dezvoltator care vrea să citească în TypeScript cum judecă un joc Canvas 2D și Web Audio sincronizarea. Se potrivește mai slab dacă ai nevoie de un editor vizual de partituri pentru nedezvoltatori sau de competiție online; amândouă sunt lucrări personalizate.
