Kildekode til rytmespil: noder, timing og tilføjelse af sange
Hvordan Riffvolt gemmer 12 numre og 48 nodekort, hvor timing og scoring afgøres, og hvad der skal til for at tilføje et nummer af dit eget.

Kildekode til rytmespil er egentlig to ting: koden, der bedømmer timingen, og data, der siger, hvornår hver node kommer. Købere vil næsten altid ændre det andet, for nye sange er det, der gør et rytmespil til deres eget. Riffvolt, vores rockrytmeskabelon med fire baner, gemmer sangkataloget i én manifestfil og hvert nodekort i sin egen fil, så det at tilføje en sang er et dataarbejde med en klar tjekliste.
Denne guide gennemgår pakken: hvad den spiller, hvor timing og scoring ligger, hvordan du tilføjer en sang, hvordan du bygger igen og hoster, hvad licensen tillader, og hvad udgaven udelader. Filnavnene stammer fra købervejledningen, der følger med spillet.
Ét faktum at have i tankerne fra start: i modsætning til nogle af vores skabeloner skal Riffvolt bygges igen, efter du har ændret kildekoden eller tilføjet sange. At hoste den leverede spilmappe kræver kun en statisk webhost.
Hvad denne kildekode til rytmespil spiller
Riffvolt er et færdigt rockrytmespil med fire baner til browseren. Spillerne rammer noder i takt, holder lange noder til enden, bøjer dem med whammy og fylder en ROCK gauge, der starter overdrive: et lysshow, som ikke giver point, og som stopper ved enhver fejl. Timingens præcision bygger score og combo.
- 12 fulde numre, hver med Easy-, Normal- og Hard-kort, plus Rock God (rock-gud), som åbner efter turnéen: 48 nodekort i alt.
- En turné gennem fire spillesteder (Garage, The road, Festival og Arena), tre numre hver. Stjerner fra de to første åbner ekstranummeret (encore), og gennemførelse af ekstranummeret åbner det næste spillested med historiescener og kosmetiske belønninger som spor og rammer.
- Fri leg: ethvert nummer på enhver sværhedsgrad, med personlige rekorder gemt nummer for nummer i browseren.
- Styring: D, F, J og K som standard, tryk på banerne på en touchskærm, eller en gamepad. Tastebindinger ligger under Settings (indstillinger).
- Komfort: lydkalibrering af forskydningen, som hjælper med Bluetooth-hovedtelefoner, reduceret bevægelse og en fotosensitiv tilstand, der dæmper blink og lyn.
- 14 grænsefladesprog.
Se Riffvolt-siden, demoen og manualerne
Sådan er filerne organiseret
Downloaden indeholder game/ (de filer, der kan udrulles), source/ (TypeScript-projektet), documentation/ (illustrerede manualer på engelsk og portugisisk) og licenses/ (tredjepartsnoter). Inde i source/ er opdelingen mellem sangdata og spillogik ren.
- public/manifest.json: sangkataloget, med hvert nummers varighed, lydversion og stier til nodekortene.
- public/charts/: de 48 nodekort.
- public/audio/: indspilningerne af numrene.
- src/core/chartValidate.ts: validering af nodekortets skema og timing.
- src/core/judge.ts: timingbedømmelser.
- src/core/scoring.ts: regler for score og combo.
- src/game/campaign.ts: turnéens progression.
- src/game/session.ts: et nummers livscyklus og resultatberegningen.
- src/i18n/locales.ts: de 14 grænsefladeordbøger.
- src/net/localRecords.js: lokale personlige rekorder.
- src/ui/style.css: grænseflade og responsivt layout.
Fordi bedømmelsen og scoringen er separate filer, kan du gøre timingvinduerne strengere eller mere tilgivende uden at røre ved, hvordan point lægges sammen, og omvendt. Det er den opdeling, du skal kigge efter i enhver rytmekode.
Tilføj din egen sang, trin for trin
Det er den ændring, købere af rytmespil spørger om først. Der er ingen nodeeditor i pakken, så nodekortene skrives som data, og manualen lister præcis, hvad hver fil kræver.
- Læg indspilningen i public/audio/. Brug kun lyd, du har rettighederne til for dit slutprodukt.
- Lav ét nodekort pr. understøttet sværhedsgrad i public/charts/. Hvert kort skal have det matchende songId, difficulty, audioVersion, offset og noderne i rækkefølge.
- Tilføj sangen til public/manifest.json med et unikt id, varighed, BPM, tema, audioVersion og stierne til nodekortene.
- Kontrollér hvert kort med valideringen i chartValidate.ts.
- Spil hele nummeret på hver sværhedsgrad for at bekræfte synkroniseringen. Valideringen kontrollerer struktur og timingregler, ikke om en node føles rigtig.
- Byg igen, og upload det nye build.
Vil du have en helt ny soundtrack frem for ét ekstra nummer, så planlæg arbejdet pr. kort: 12 sange på fire sværhedsgrader er 48 kort, og hvert af dem fortjener en fuld gennemspilning før udgivelse.
Bygge igen, og hvad du ellers kan ændre
Node.js 24 LTS anbefales. Inde i source/ kører du npm ci, derefter npm run typecheck og npm run build, og udgiver kun indholdet af dist/. npm run preview serverer det lokale build til inspektion. Upload ikke node_modules/. Vite bruger en relativ base, så buildet virker i en undermappe. Det leverede runtime er formateret, så det kan læses; manualen beder dig beholde minify:false og cssMinify:false, når du bygger igen, så den næste person stadig kan læse det.
- Branding: farver og layout i src/ui/style.css, plus dit logo. White label er tilladt, så dit brand kan erstatte vores.
- Tekster: src/i18n/locales.ts, for de sprog du udgiver på.
- Turné: rækkefølgen af spillesteder og hvad der låser op for hvad, i campaign.ts.
- Sværhedsgrad: timingvinduer i judge.ts, derefter regler for score og combo i scoring.ts.
- Sange: til sidst, fordi hvert nyt kort kræver en fuld gennemspilning.
Tag en sikkerhedskopi, før du redigerer, ændr én funktion ad gangen, og test menuen, et nummer, pause, resultatskærmen og en genindlæsning efter hver ændring. Hold item-id'er og gemme-nøgler stabile, så eksisterende spillere beholder deres rekorder.
Hosting, eller indlejring på en portal
Upload indholdet af game/ til en mappe på din HTTP(S)-host, behold de relative stier, og åbn adressen. Der kræves ingen PHP, database eller konto. Åbn ikke index.html via file://; til en lokal test kører du python -m http.server 8765 inde i game/.
- Browseren skal understøtte: JavaScript, ES-moduler, Canvas 2D og Web Audio.
- Browsere låser lyden op først efter det første tryk eller klik, så en stille første skærm er normalt.
- I et iframe skal du tillade fuldskærm og autoplay.
- Server .js med en JavaScript-MIME-type, aldrig som text/plain.
- Alle runtime-assets, skrifttyper og biblioteker ligger inde i buildet. Der er intet obligatorisk CDN, men det er ikke en app, der kan installeres til offline brug.
Gemte data hører til browserens origin, så flytning af spillet til et andet domæne starter spillerne forfra. Denne udgave bruger sine egne gemme-nøgler, adskilt fra vores portaludgaver. Native app-projekter er ikke inkluderet; en udgivelse i butik er et særskilt arbejde.
Hvad udgaven ikke inkluderer
Riffvolt er den lokale browserudgave. Den har ingen online rum eller multiplayer, ingen online-rangliste eller fælles scoreliste, ingen reklame-SDK eller konto, ingen nodeeditor, ingen native apps og ingen hosting. Personlige rekorder og turnéfremskridt bliver i spillerens browser.
Passer et musikspil til dit katalog, kan to andre timingbaserede skabeloner af os passe ved siden af.
Pinloop: et enkeltknaps timing-arkadespil med 30 mål
Ricopop: et rikochet-arkadespil med 50 niveauer
Licens og pris
Riffvolt koster 49 USD på listepris. Indtil 30. november 2026 giver Black Friday-kampagnen 15 % rabat, så den koster 41,65 USD, og køb af to eller flere skabeloner i samme bestilling giver en bundle-rabat på 5 % til 20 %. Licensen er evigvarende og ikke-eksklusiv, til ét slutprodukt, dit eller én kundes. Du må ændre koden, grafikken og lyden, erstatte vores brand med dit og tilbyde spillet gratis eller med reklamer. Brug de medfølgende numre som en del af det slutprodukt; du må ikke videresælge skabelonen, dens kode eller dens assets alene. Seks måneders support er inkluderet, eller tolv med tillægget; nye sange, integrationer og hosting tilbydes særskilt.
Ofte stillede spørgsmål
Kan jeg tilføje mine egne sange til kildekoden til rytmespillet?
Ja. Tilføj lyden, ét kort pr. sværhedsgrad og en post i public/manifest.json, valider nodekortene, spil dem igennem, og byg derefter igen. En nodeeditor er ikke inkluderet.
Har jeg brug for Node.js for at bruge Riffvolt?
Ikke for at hoste den leverede spilmappe. Node.js 24 LTS anbefales kun til at bygge igen efter ændringer i TypeScript eller tilføjelse af sange.
Virker det med touchskærme og gamepads?
Ja. Spillerne kan trykke på banerne eller bruge en gamepad, og styringen sættes under Settings. Ydelsen afhænger af enheden, så test de enheder, du sigter mod.
Hvad med Bluetooth-hovedtelefoner og forsinkelse?
Settings indeholder lydkalibrering, der sætter lydforskydningen, og den hjælper med Bluetooth-hovedtelefoner.
Findes der en online-rangliste?
Nej. Personlige rekorder gemmes pr. sang og sværhedsgrad i spillerens browser. Der er ingen fjernmodstandere eller fælles ranglister.
Hvem bør købe den
Riffvolt passer til et portal eller en side, der vil have et musikspil i sit katalog, til et studie, der leverer et brandet rytmespil til én kunde, og til en udvikler, der vil læse, hvordan et Canvas 2D- og Web Audio-spil bedømmer timing i TypeScript. Den passer dårligere, hvis du har brug for en visuel nodeeditor til ikke-udviklere eller online-konkurrence; begge dele er skræddersyet arbejde.
