Kildekode til rytmespill: nototabeller, timing og nye låter
Hvordan Riffvolt lagrer 12 spor og 48 nototabeller, hvor timing og poeng bestemmes, og hva det krever å legge til en egen låt.

Kildekode til rytmespill er egentlig to ting: koden som dømmer timingen, og dataene som sier når hver note kommer. Kjøpere vil nesten alltid endre det andre, fordi nye låter er det som gjør et rytmespill til ditt eget. Riffvolt, vår firebanes rock-rytmemal, holder låtlisten i én manifestfil og hver nototabell i sin egen fil, så det å legge til en låt er en dataoppgave med en tydelig sjekkliste.
Denne guiden går gjennom pakken: hva den spiller, hvor timing og poeng ligger, hvordan du legger til en låt, bygger på nytt og hoster spillet, hva lisensen tillater, og hva utgaven ikke inkluderer. Filnavnene kommer fra kjøpsguiden som følger med spillet.
Ett faktum å ha i tankene fra starten: i motsetning til noen av malene våre må Riffvolt bygges på nytt etter at du endrer kildekoden eller legger til låter. Å være vert for den leverte spillmappen krever bare en statisk webhost.
Hva denne kildekoden til rytmespill spiller
Riffvolt er et ferdig firebanes rock-rytmespill for nettleseren. Spillerne treffer noter i takt, holder lange noter til slutten, bøyer dem med whammy-spaken og fyller en ROCK-måler som starter overdrive, en lysshow (light show) som ikke gir poeng og avsluttes ved første bom. Timingnøyaktighet bygger poeng og combo.
- 12 hele spor, hver med Easy, Normal og Hard (vanskelighetsgrader), pluss Rock God, som åpnes etter turneen: 48 nototabeller totalt.
- En turné gjennom fire arenaer (Garage, The road, Festival og Arena), tre låter i hver. Stjerner fra de to første åpner ekstranummeret, og å fullføre ekstranummeret (encore) åpner neste arena, med historiescener og kosmetiske belønninger som spor og rammer.
- Fri spilling: hvilken som helst låt på hvilken som helst vanskelighetsgrad, med personlige rekorder lagret låt for låt i nettleseren.
- Kontroller: D, F, J og K som standard, trykk på banene på en berøringsskjerm, eller en gamepad. Tastebindingene ligger under Settings.
- Komfort: lydkalibrering for forskyvningen (offset), som hjelper med Bluetooth-hodetelefoner, redusert bevegelse og en fotosensitiv modus som demper blink og lyn.
- 14 språk i grensesnittet.
Se Riffvolt-produktsiden, demoen og manualene
Hvordan filene er organisert
Nedlastingen inneholder game/ (de klare filene), source/ (TypeScript-prosjektet), documentation/ (illustrerte manualer på engelsk og portugisisk) og licenses/ (merknader for tredjepart). Inne i source/ er skillet mellom låtdata og spilllogikk ryddig.
- public/manifest.json: låtkatalogen, med hver låts varighet, lydversjon og stier til nototabellene.
- public/charts/: de 48 nototabellene.
- public/audio/: innspillingene av sporene.
- src/core/chartValidate.ts: validering av skjema og timing for nototabeller.
- src/core/judge.ts: timingvurderinger.
- src/core/scoring.ts: regler for poeng og combo.
- src/game/campaign.ts: fremdriften i turneen.
- src/game/session.ts: en låts livssyklus og resultatberegningen.
- src/i18n/locales.ts: de 14 ordbøkene for grensesnittet.
- src/net/localRecords.js: lokale personlige rekorder.
- src/ui/style.css: grensesnitt og responsivt oppsett.
Fordi dommeren og poengsettingen ligger i hver sin fil, kan du gjøre timingvinduene strengere eller mildere uten å røre hvordan poengene legges sammen, og omvendt. Det er skillet du bør se etter i all rytmekode.
Legge til en egen låt, steg for steg
Dette er endringen rytmespill-kjøpere spør om først. Det finnes ingen nototabell-editor i pakken, så nototabellene skrives som data, og veiledningen lister nøyaktig hva hver fil trenger.
- Legg innspillingen i public/audio/. Bruk bare lyd du har rettighetene til for ditt sluttprodukt.
- Lag én nototabell per støttet vanskelighetsgrad i public/charts/. Hver tabell trenger samsvarende songId, difficulty, audioVersion, offset og notene i rekkefølge.
- Legg låten til i public/manifest.json med en unik id, varighet, BPM, tema, audioVersion og stiene til nototabellene.
- Sjekk hver nototabell med validatoren i chartValidate.ts.
- Spill hele sporet på hver vanskelighetsgrad for å bekrefte synkroniseringen. Validatoren sjekker struktur og timingregler, ikke om en note føles riktig.
- Bygg på nytt, og last opp den nye byggingen.
Vil du ha en helt ny lydspor i stedet for én ekstra låt, planlegg arbeidet per tabell: 12 låter på fire vanskelighetsgrader er 48 tabeller, og hver av dem fortjener en full gjennomspilling før utgivelse.
Bygging på nytt og hva mer du kan endre
Node.js 24 LTS anbefales. Inne i source/ kjører du npm ci, deretter npm run typecheck og npm run build, og publiserer bare innholdet i dist/. npm run preview serverer den lokale byggingen for kontroll. Last ikke opp node_modules/. Vite bruker en relativ base, så byggingen fungerer i en undermappe. Den leverte kjøretiden er formatert for lesing; veiledningen ber deg beholde minify:false og cssMinify:false når du bygger på nytt, slik at neste person fortsatt kan lese den.
- Merkevare: farger og oppsett i src/ui/style.css, pluss logoen din. Hvitmerking er tillatt, så merkevaren din kan erstatte vår.
- Tekster: src/i18n/locales.ts, for språkene du leverer.
- Turné: rekkefølgen på arenaene og hva som låser opp hva, i campaign.ts.
- Vanskelighetsgrad: timingvinduene i judge.ts, deretter reglene for poeng og combo i scoring.ts.
- Låter: sist, fordi hver ny tabell trenger en full gjennomspilling.
Ta sikkerhetskopi før du redigerer, endre én funksjon om gangen, og test menyen, en låt, pause, resultatskjermen og en innlasting på nytt etter hver endring. Hold id-er og lagringsnøkler stabile, slik at eksisterende spillere beholder rekordene sine.
Hosting, eller innbygging i en portal
Last opp innholdet i game/ til en mappe på din HTTP(S)-host, behold de relative stiene, og åpne adressen. Ingen PHP, database eller konto trengs. Ikke åpne index.html via file://; for en lokal test kjører du python -m http.server 8765 inne i game/.
- Nettleseren trenger JavaScript, ES-moduler, Canvas 2D og Web Audio.
- Nettlesere låser lyden først etter første trykk eller klikk, så en stille første skjerm er normalt.
- I en iframe, tillat fullskjerm og autoplay.
- Server .js med en JavaScript-MIME-type, aldri som text/plain.
- Alle kjøretidsressurser, skrifttyper og biblioteker ligger inne i byggingen. Det finnes ingen obligatorisk CDN, men dette er ikke en app som kan installeres for bruk uten nett.
Lagringer hører til nettleserens domene (origin), så flytter du spillet til et annet domene, starter spillerne på nytt. Denne utgaven bruker egne lagringsnøkler, adskilt fra portalutgavene våre. Native appprosjekter er ikke inkludert; en utgivelse i en appbutikk er et eget arbeid.
Hva utgaven ikke inkluderer
Riffvolt er den lokale nettleserutgaven. Den har ingen nettbaserte rom eller flerspiller, ingen ledertavle på nett eller felles rangering, ingen annonse-SDK eller konto, ingen nototabell-editor, ingen native apper og ingen hosting. Personlige rekorder og turnéfremdrift blir i spillerens nettleser.
Hvis et musikkspill passer katalogen din, kan to andre timingbaserte maler fra oss passe ved siden av.
Pinloop: et ett-knappers timingarkadespill med 30 mål
Ricopop: et rikosjett-arkadespill med 50 nivåer
Lisens og pris
Riffvolt koster $49 på listen. Frem til 30. november 2026 gir Black Friday-kampanjen 15 % rabatt, så den koster $41,65, og å kjøpe to eller flere maler i samme bestilling gir en pakkerabatt på mellom 5 % og 20 %. Lisensen er evigvarende og ikke-eksklusiv, for ett sluttprodukt, ditt eller én kundes. Du kan endre koden, grafikken og lyden, erstatte vår merkevare med din egen, og tilby spillet gratis eller med annonser. Bruk de inkluderte sporene som en del av det sluttproduktet; du kan ikke videreselge malen, koden eller ressursene alene. Seks måneders støtte er inkludert, eller tolv med tillegget i kassen. Nye låter, integrasjoner og hosting gis tilbud på separat.
Vanlige spørsmål
Kan jeg legge til egne låter i kildekoden til rytmespillet?
Ja. Legg til lyden, én nototabell per vanskelighetsgrad og et oppslag i public/manifest.json, valider tabellene, spill dem gjennom, og bygg så på nytt. En nototabell-editor er ikke inkludert.
Trenger jeg Node.js for å bruke Riffvolt?
Ikke for å være vert for den leverte spillmappen. Node.js 24 LTS anbefales bare for å bygge på nytt etter at du har endret TypeScript eller lagt til låter.
Fungerer det med berøringsskjermer og gamepad?
Ja. Spillerne kan trykke på banene eller bruke en gamepad, og kontrollene settes under Settings. Ytelsen avhenger av enheten, så test de du sikter mot.
Hva med Bluetooth-hodetelefoner og forsinkelse?
Under Settings finnes lydkalibrering, som setter lydforskyvningen og hjelper med Bluetooth-hodetelefoner.
Finnes det en nettbasert ledertavle?
Nei. Personlige rekorder lagres per låt og vanskelighetsgrad i spillerens nettleser. Det finnes ingen eksterne motstandere eller felles rangeringer.
Hvem bør kjøpe den
Riffvolt passer for en portal eller et nettsted som vil ha et musikkspill i katalogen, et studio som leverer et merkevarespill for rytme til én kunde, og en utvikler som vil lese hvordan et Canvas 2D- og Web Audio-spill dømmer timing i TypeScript. Det passer dårligere hvis du trenger en visuell nototabell-editor for ikke-utviklere eller nettbasert konkurranse; begge deler er tilpasset arbeid.
